Ошибка времени выполнения '-2147188160 (80048240) DataType: = pppasteeNhancedmetafile ошибка
-
26-10-2019 - |
Вопрос
Кажется, есть некоторая ошибка. Не могу решить эту проблему, весь код работает нормально, и я могу видеть, что AutoShape копируется из файла Excel, но он не добавляет его в PowerPoint. Выскочить ошибка Run-time error '-2147188160(80048240) View.Pastespecial : Invalid Request
. Анкет Указанный тип данных недоступен
If Range("H" & i).Value = 1 And Range("B" & i).Value = "FRONT" Then
objPPT.Presentations(1).Slides(9).Select
objPPT.ActiveWindow.View.PasteSpecial DataType:=ppPasteEnhancedMetafile
Решение
Ваш код будет быстрее и, возможно, более надежным, если вы не полагаетесь на выбор:
With objPPT.Slides(9).Shapes
Set objShape = .PasteSpecial(ppPasteEnhancedMetafile)(1)
With objShape
' set coordinates and such here
End With
End With
Что касается того, почему вы получаете сообщение об ошибке, попробуйте остановить код после того, как вы положите что -то на Clipbard. Затем переключитесь на PowerPoint, используйте вставку Special, чтобы увидеть, какие параметры вставки доступны. Если ЭДС не является одним из них, это ваша проблема ... вы ничего не кладете в формат ЭДС в буфер обмена.
Другие советы
У меня была похожая проблема, но я нашел другое решение; Это может быть специфично для того, что я делал, хотя.
Я настрою программу, где я бы:
- (Руководство) Скопируйте целую веб -страницу, которая была отчетом о нескольких показателях производительности
- (Руководство) вставили его Excel
- Запустите программу, чтобы извлечь желаемые значения, а затем очистить содержимое листа, на котором я их вставил.
В конце концов, после многих тестов, это потерпит неудачу с той же ошибкой автоматизации, когда я попытался получить доступ к листу:
Sheets("PDX Paste").Activate
Я смог активировать любой другой лист, за исключением того конкретного, даже используя значение индекса вместо прямого имени. После того, как я не успел Googling, я узнал, что копия и вставка с сайта также вставляют невидимые элементы управления. Когда я обнаружил это, у меня было более 1300 форм, когда я ожидал только 1 (кнопка, которую я использую для запуска программы). Это было на самом деле очевидно только тогда, когда сбой - предположительно из -за столько памяти, используемой для хранения этих элементов управления - отображается в течение нескольких секунд.
Я запустил следующий код самостоятельно, а затем добавил его к концу своей программы, когда делаю очистку данных. Код проходит через лист и удаляет любую форму, которая не такая же, как моя кнопка. Это должно быть адаптировано, если формы, которые вы хотите удалить, являются тем же типом, что и формы, которые вы хотите сохранить. Также становится проще, если у вас нет никаких форм, чтобы сохранить.
Dim wsh As Worksheet
Set wsh = ActiveSheet
Dim i As Integer
For i = wsh.Shapes.Count To 1 Step -1
If wsh.Shapes(i).Type <> wsh.Shapes("UpdateDataButton").Type Then
wsh.Shapes(i).Delete
End If
Next i
Я не уверен, что это решило бы эту проблему, но, надеюсь, это поможет другим и предотвратить потерю времени, выяснив, что может вызвать это относительно расплывчатое сообщение об ошибке.