Ошибка времени выполнения '-2147188160 (80048240)': приложение (неизвестный элемент): неверный запрос.суб или функция не определена - PullRequest
0 голосов
/ 01 января 2019

Я получаю эту ошибку при попытке запустить следующий макрос.Ошибка появляется в первый (!) Раз, когда «AddSlide» выполняется и только потом (!).Макрос продолжается (после того, как я нажму «Конец» в окне сообщения) и после этого будет работать без каких-либо сообщений об ошибках.

Sub PushChartsToPPT_1 ()

Dim ppt As PowerPoint.Application
Dim pptPres As PowerPoint.Presentation
Dim pptSld As PowerPoint.Slide
Dim pptShp As PowerPoint.Shape
Dim EndTime As Single

Dim rng As Range
Dim cht As Chart
Dim ws As Worksheet
Dim i, j As Single
Dim MainWorkBook, tempWorkBook As Workbook
Dim tempSheet As Worksheet
Dim pptCL As CustomLayout
Dim myShape As Object
Dim DestinationPPT, str As String


Set MainWorkBook = ActiveWorkbook

'Get the PowerPoint Application object:
Set ppt = CreateObject("PowerPoint.Application")
DestinationPPT = "Template.pptx"
Set pptPres = ppt.Presentations.Open(DestinationPPT, True) ' read only

'Get a Custom Layout:
For Each pptCL In pptPres.SlideMaster.CustomLayouts
   If pptCL.Name = "Title and Content" Then Exit For
Next pptCL

ppt.Visible = msoTrue


For Each ws In MainWorkBook.Worksheets
    For i = 1 To ws.ChartObjects.Count
        '>>>>> error next line
        Set pptSld = pptPres.Slides.AddSlide(pptPres.Slides.Count + 1, pptCL) '>>>>>error on this line
        pptSld.Select


        Set cht = ws.ChartObjects(i).Chart
        cht.ChartArea.Copy
        DoEvents
        pptSld.Shapes.PasteSpecial(DataType:=ppPasteMetafilePicture).Select

    Next i
Next ws

End Sub

1 Ответ

0 голосов
/ 01 января 2019

Возможно ли, что предыдущий цикл заканчивается, вместо того, чтобы делать Exit For на слайде с заголовком и содержимым?Это будет означать, что значение pptCL не определено.Однако это было бы неправильным сообщением об ошибке;эта строка, выполняемая с pptCL undefined, вызывает «недопустимый вызов процедуры или аргумент».

Но странным является то, что ваш код умер для меня прямо на строке, где открывается файл powerpoint, строка:

Установите pptPres = ppt.Presentations.Open (DestinationPPT, True) 'только для чтения

... и он умер с той же "ошибкой автоматизации",Я сравнил код, который у меня есть, где файл PowerPoint открылся нормально, и этот код имел строку:

ppt.Visible = msoTrue

.... сделать приложение PowerPoint видимым, чуть выше команды "open".Когда я добавил эту строку в ваш код, ошибка исчезла во время моего запуска.

Это может быть полная красная сельдь, но так как она сработала для меня, и поскольку вы не получаете никаких других ответов,найдите минутку и попробуйте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...