Presentations.Open Метод не удалось для библиотеки объектов MS PowerPoint 15.0
Я вызываю код VBA из электронной таблицы Excel, чтобы открыть существующий файл PowerPoint через Presentations.Open
метод. В моей среде я разработал с помощью раннего связывания с использованием библиотеки объектов MS PowerPoint 14.0, и коды работают без проблем.
Однако при вызове сценария на другом компьютере, на котором выполняется MS Office 2013 (т. Е. Библиотека объектов MS PowerPoint 15.0), появляется ошибка времени выполнения.
Метод "Открыть" объекта "Презентации" не удался
Является ли метод Presentations.Open устаревшим в библиотеке объектов PPT 15.0? Я попытался найти в Интернете, но не смог найти документацию по изменению.
Я также попытался использовать Late Binding, чтобы проверить, работает ли он, но получил ту же ошибку.
Ниже приведены фрагменты кода, которые я использовал (раннее + позднее связывание).
Огромное спасибо за помощь.
Фрагмент кода раннего связывания
Sub EarlyBinding()
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("Sheet1")
Dim PowerpointApp As PowerPoint.Application
Dim myPresentation As PowerPoint.Presentation
Set PowerpointApp = New PowerPoint.Application
PowerpointApp.Visible = True
Dim myPath As String
myPath = ws.Range("wk_dir").Value & "\" & ws.Range("ppt_name").Value
Set myPresentation = PowerpointApp.presentations.Open(myPath)
myPresentation.SaveAs (ws.Range("wk_dir").Value & "\test_earlybind.pptx")
Set myPresentation = Nothing
Set PowerpointApp = Nothing
End Sub
Фрагмент кода позднего связывания
Sub LateBinding()
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("Sheet1")
Dim PowerpointApp As Object
Dim myPresentation As Object
Set PowerpointApp = CreateObject("Powerpoint.Application")
PowerpointApp.Visible = True
Dim myPath As String
myPath = ws.Range("wk_dir").Value & "\" & ws.Range("ppt_name").Value
Set myPresentation = PowerpointApp.presentations.Open(myPath)
myPresentation.SaveAs (ws.Range("wk_dir").Value & "\test_latebind.pptx")
Set myPresentation = Nothing
Set PowerpointApp = Nothing
End Sub
1 ответ
presentations.Open()
может завершиться ошибкой, если вы передадите относительный путь в качестве параметра. Причина в том, что PowerPoint использует собственный рабочий каталог, который обычно отличается от рабочего каталога вызывающего приложения.
Решение состоит в том, чтобы передать абсолютный путь, а не относительный.