Во-первых, позвольте мне сказать, что я абсолютно не знаком с VBA, поэтому извините за публикацию двух основных вопросов два дня подряд.
Я успешно извлекаю все диаграммы из листа Excel, открываю и вставляю их в слайды PowerPoint.Наконец, у меня возникают проблемы при попытке пройтись по презентации PowerPoint и экспортировать каждый слайд .pdf
Приведенный ниже код изменен из примеров, найденных в StackOverflow, таких как здесь VBA - Экспорт отдельных слайдов PowerPoint в файлы PDF,назван в поле содержимого , а также здесь Экспорт каждого слайда Powerpoint в отдельный файл PDF .а также здесь Сохранить презентацию PowerPoint в формате pdf в vba
Пользователи в этих постах, похоже, успешно запустили свой код.Тем не менее, я получаю Object doesn't support this method or property
на линии objPPTApp.ExportAsFixedFormat
до RangeType:=ppPrintSelection
.Мне очень любопытно, что я делаю здесь неправильно, так как все учебники в Интернете используют один и тот же кусок кода.Есть ли что-то, что было обновлено в 2019 году?Спасибо.
Const ppLayoutBlank = 2
Const ppViewSlide = 1
Const ppFixedFormatTypePDF As Long = 2
Const ppPrintSelection As Long = 2
Option Explicit
Sub ExportChartstoPowerPoint()
Dim PPApp As Object
Dim chr
Set PPApp = CreateObject("PowerPoint.Application")
PPApp.Presentations.Add
PPApp.ActiveWindow.ViewType = ppViewSlide
For Each chr In Sheets("% LA Closed SLA").ChartObjects
PPApp.ActivePresentation.Slides.Add PPApp.ActivePresentation.Slides.Count + 1, ppLayoutBlank
PPApp.ActiveWindow.View.GotoSlide PPApp.ActivePresentation.Slides.Count
chr.Select
ActiveChart.CopyPicture Appearance:=xlScreen, Size:=xlScreen, Format:=xlPicture
PPApp.ActiveWindow.View.Paste
PPApp.ActiveWindow.Selection.ShapeRange.Align msoAlignCenters, True
PPApp.ActiveWindow.Selection.ShapeRange.Align msoAlignMiddles, True
Next chr
PPApp.Visible = True
If MsgBox("Would you like to save each slide to .PDF?", vbOKCancel) = vbOK Then
Dim path As String
Dim objPPTApp As Object
Dim slide As Object
path = GetSetting("FPPT", "Export", "Default Path")
With Application.FileDialog(msoFileDialogFolderPicker)
.InitialFileName = path
.AllowMultiSelect = False
.Title = "Select destination folder"
.Show
If .SelectedItems.Count = 1 Then
path = .SelectedItems(1)
MsgBox "Saving slides to " + path
Else
MsgBox "No file path chosen"
End If
End With
Dim oPPT As Object, oSlide As Object
Dim sPath As String, sExt As String
Dim i As Variant
Set objPPTApp = GetObject(, "PowerPoint.Application")
For Each oSlide In objPPTApp.ActivePresentation.Slides
i = oSlide.SlideIndex
oSlide.Select
objPPTApp.ExportAsFixedFormat _
path:=sPath & i & ".pdf", _
FixedFormatType:=2, _
RangeType:=3
Next oSlide
Set oPPT = Nothing
End If
End Sub