У меня странное поведение ленты PowerPoint.
Я создал файл pptm с лентой для быстрой ссылки на 2 кода vba. Один из них — копирование данных из xls-файла на график. Другой сохраняет копию презентации в виде файла pptx и файла pdf (savecopyas) и отправляет электронное письмо с Outlook.
Все работает гладко, пока я сохраняю только файл PDF. Если я также создаю файл pptx (или файл pptm с другим именем), сценарий vba запускается только в первый раз, после чего лента для обоих действий больше не работает. Выдает ошибку о том, что код vba не найден.
Что я испытал?
1) xls-код запускается сколько угодно раз, пока не запущен email-код.
2) Нет предупреждения о том, что файл pptx больше не будет содержать никакого кода vba (это то, что вам скажет Excel)
3) Если я добавлю последнюю строку, которая сохраняет pptm как pptx, модули сохранятся в pptx, пока он не будет закрыт. Команды ленты работают правильно в этом случае файла pptx - так часто, как вам нравится.
4) Запуск кода электронной почты vba в pptm вручную с кнопки работает все время гладко, независимо от того, как часто он запускается.
Я нашел только 2-3 похожих вопроса/ошибки в Интернете без объяснений или только обходные пути.
Есть ли кто-нибудь, кто может объяснить и помочь мне в этом странном поведении?
С уважением,
Марио
Вот код:
Sub Email(ByVal control As IRibbonControl)
Dim Send_Email, olApp As Object
Dim Send_1, Send_2 As String
With ActivePresentation
.SaveCopyAs _
FileName:=ActivePresentation.Path & "\" & "Test" & ".pptx", _
FileFormat:=ppSaveAsOpenXMLPresentation
End With
With ActivePresentation
.SaveCopyAs _
FileName:=ActivePresentation.Path & "\" & "Test" & ".pdf", _
FileFormat:=ppSaveAsPDF
End With
Send_1 = ActivePresentation.Path & "\" & "Test" & ".pptx"
Send_2 = ActivePresentation.Path & "\" & "Test" & ".pdf"
Set olApp = CreateObject("Outlook.Application")
Set Send_Email = olApp.CreateItem(0)
With Send_Email
.To = "[email protected]"
.Subject = "Test"
.Body = "Hallo "
.Attachments.Add Send_2
.Attachments.Add Send_1
.Send
End With
Set olApp = Nothing
End Sub