Есть задача - файл Эксель со списком студентов и курсов и надо создать дипломы в ПоверПойнт для каждого студента Курсов много и учащихся тоже, поэтому вручную копировать ФИО из Экселя, вставлять в шаблон ПоверПойнт и пересохранять под другим именем очень сложно
Написала кусок макроса, который вставляет данные для одного учащегося в презу
Не получается создать правильный макрос, который бы 1. Открыл шаблон презы 2. Вставил данные первого студента 3. Сохранил презу как... (с названием фамилии студента) 4. Закрыл презу
5. Открыл шаблон презы 6. Вставил данные ВТОРОГО студента 7. Сохранил презу как ... и т.д.
В заархивированном файле - экселька и шаблон презы
Помогите, пожалуйста
Спасибо
Здравствуйте!
Есть задача - файл Эксель со списком студентов и курсов и надо создать дипломы в ПоверПойнт для каждого студента Курсов много и учащихся тоже, поэтому вручную копировать ФИО из Экселя, вставлять в шаблон ПоверПойнт и пересохранять под другим именем очень сложно
Написала кусок макроса, который вставляет данные для одного учащегося в презу
Не получается создать правильный макрос, который бы 1. Открыл шаблон презы 2. Вставил данные первого студента 3. Сохранил презу как... (с названием фамилии студента) 4. Закрыл презу
5. Открыл шаблон презы 6. Вставил данные ВТОРОГО студента 7. Сохранил презу как ... и т.д.
В заархивированном файле - экселька и шаблон презы
Может как-то попроще можно - например, "сохранять как" презентации не с названием по фамилии студента, а просто 1, 2, 3, 4 ... и т.д. пусть курс и дата не вставляются - можно несколько шаблонов сделать под каждый курс
Главное, чтоб 1. фамилии по порядку вставлялись из экселя в шаблон презы и 2. преза сохранялась под новым именем (всё равно каким, хоть под номером)
Может как-то попроще можно - например, "сохранять как" презентации не с названием по фамилии студента, а просто 1, 2, 3, 4 ... и т.д. пусть курс и дата не вставляются - можно несколько шаблонов сделать под каждый курс
Главное, чтоб 1. фамилии по порядку вставлялись из экселя в шаблон презы и 2. преза сохранялась под новым именем (всё равно каким, хоть под номером)azartan
Sub diplomy() Dim objPP As Object, workPP As Object Dim sFileName As String Dim i As Long, lr As Long 'порверка активности POWERPNT.exe On Error Resume Next Set objPP = GetObject(, "PowerPoint.Application") If Err <> 0 Then Set objPP = CreateObject("PowerPoint.Application") Err.Clear On Error GoTo 0
sFileName = ThisWorkbook.Path & "\Diplom.pptx" Set workPP = objPP.Presentations.Open(sFileName, , , msoFalse) lr = Cells(Rows.Count, 1).End(xlUp).Row For i = 2 To lr With workPP.slides(1) .Shapes("FIO").TextFrame.TextRange.Text = Cells(i, 1) .Shapes("Kurs").TextFrame.TextRange.Text = Cells(i, 2) .Shapes("Data").TextFrame.TextRange.Text = Cells(i, 5) End With workPP.SaveCopyAs ThisWorkbook.Path & "\Diplom-Курс " & Cells(i, 2) & "-" & Cells(i, 1) & ".pptx" Next i workPP.Close MsgBox "Done!" End Sub
[/vba]
Я изменила тип шаблона Diplom.ppt на pptx. Он так меньше весит, быстрее открывается и быстрее сохраняется.
azartan, здравствуйте, попробуйте так: [vba]
Код
Sub diplomy() Dim objPP As Object, workPP As Object Dim sFileName As String Dim i As Long, lr As Long 'порверка активности POWERPNT.exe On Error Resume Next Set objPP = GetObject(, "PowerPoint.Application") If Err <> 0 Then Set objPP = CreateObject("PowerPoint.Application") Err.Clear On Error GoTo 0
sFileName = ThisWorkbook.Path & "\Diplom.pptx" Set workPP = objPP.Presentations.Open(sFileName, , , msoFalse) lr = Cells(Rows.Count, 1).End(xlUp).Row For i = 2 To lr With workPP.slides(1) .Shapes("FIO").TextFrame.TextRange.Text = Cells(i, 1) .Shapes("Kurs").TextFrame.TextRange.Text = Cells(i, 2) .Shapes("Data").TextFrame.TextRange.Text = Cells(i, 5) End With workPP.SaveCopyAs ThisWorkbook.Path & "\Diplom-Курс " & Cells(i, 2) & "-" & Cells(i, 1) & ".pptx" Next i workPP.Close MsgBox "Done!" End Sub
[/vba]
Я изменила тип шаблона Diplom.ppt на pptx. Он так меньше весит, быстрее открывается и быстрее сохраняется.Manyasha