PowerPoint VBA - ошибка вставки специального (расширенного метафайла) - PullRequest
4 голосов
/ 16 июля 2010

Я использую макрос в PowerPoint 2003 SP3, чтобы найти указанную диаграмму в книге Excel, скопировать ее, а затем вставить ее в текущий слайд в виде расширенного метафайла со, в конечном счете, следующей строкой кода:

<code>Application.ActiveWindow.View.PasteSpecial DataType:=ppPasteEnhancedMetafile

Как часто это работает, я также получаю следующую ошибку:

Run-time error '-2147188160 (80048240)':
View (unknown member) : Invalid request. The specified data type is unavailable.

Если я заканчиваю макрос и пытаюсь вручную вставитьСпециально, как расширенный метафайл, у меня нет проблем, поэтому объект буфера обмена или тип pastespecial недопустимы.

Кто-нибудь еще сталкивался с этим?У вас есть решение или обходной путь?Поисковая ошибка в результатах поиска Google не найдена.


Обновление

Общий код выглядит следующим образом:

Set presPPTCurrent = ActivePresentation
Set objXLApp = GetObject(, "Excel.Application")

''#Find the target chart and copy it to the clipboard
With objXLApp
    ''#This part works - if I go to Excel, I can see that the chart is copied
End With

''#Now paste in the chart as an Enhanced Metafile
presPPTCurrent.Application.Activate
Application.ActiveWindow.View.PasteSpecial DataType:=ppPasteEnhancedMetafile

Обратите внимание, что это находится в Sub, к которому передается Shape (переданный Shape используется как ссылка для поиска диаграммы в Excel).Я понял, что это только ошибки, когда я пытаюсь повторно использовать этот саб в нескольких формах, переданных из цикла For Next в другом Sub.

Однако, если я передам один Shape этому Sub с помощью другого Sub изатем повторно запустите Sub, который проходит несколько Shapes, он работает нормально.


Решение

По упоминанию Отаку, макрос терял фокус на СлайдеPane.Сказать, что он выбрал слайд-панель, решило проблему.

<code>Application.ActiveWindow.Panes(2).Activate

Ответы [ 3 ]

3 голосов
/ 16 июля 2010

Вероятно, это потеря фокуса, когда переключение между Excel и PowerPoint приводит к потере фокусировки в PowerPoint, и поэтому в PowerPoint нет ActiveWindow для вставки или ActiveWindow становится другим Pane в PowerPoint например, сортировщик слайдов или панель заметок.

1 голос
/ 18 ноября 2013

У меня возникла та же проблема. У меня есть макрос, который экспортирует много графиков в PowerPoint. Но некоторые действия копирования-вставки заканчиваются той же ошибкой, что и выше (Ошибка времени выполнения '-2147188160 (80048240)':)

Я понял, что ошибка PasteSpecial была не из-за потери фокуса, а из-за потери буфера обмена.

Поэтому решение снова копирует область в буфер обмена, как:

On Error GoTo paste_error
ppSlide.Shapes.PasteSpecial(2, link:=RangeLink).Select
...
paste_error:
    Worksheets(SheetName).Range(RangeName).copy
    Resume

Может быть, это кому-нибудь поможет ...

0 голосов
/ 14 мая 2017

Я получал те же ошибки и экспериментировал со многими решениями здесь.То, что в итоге сработало для меня, было чем-то очень простым.Я думаю, что это работает из-за первой строки, которая сохраняет ссылку на слайд.Опция вставки может быть EnhancedMetaFile вместо Bitmap.

    Sub Macro()
       Set sld = Application.ActiveWindow.View.Slide
       With GetObject(, "Excel.Application")
           .Workbooks(1).Sheets(1).Shapes(1).Copy
       End With

       sld.Shapes.PasteSpecial DataType:=ppPasteBitmap
   End Sub
...