Ошибка времени выполнения '-2147188160 (80048240) DataType: = pppasteeNhancedmetafile ошибка

StackOverflow https://stackoverflow.com/questions/8326134

Вопрос

Кажется, есть некоторая ошибка. Не могу решить эту проблему, весь код работает нормально, и я могу видеть, что 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, чтобы увидеть, какие параметры вставки доступны. Если ЭДС не является одним из них, это ваша проблема ... вы ничего не кладете в формат ЭДС в буфер обмена.

Другие советы

У меня была похожая проблема, но я нашел другое решение; Это может быть специфично для того, что я делал, хотя.

Я настрою программу, где я бы:

  1. (Руководство) Скопируйте целую веб -страницу, которая была отчетом о нескольких показателях производительности
  2. (Руководство) вставили его Excel
  3. Запустите программу, чтобы извлечь желаемые значения, а затем очистить содержимое листа, на котором я их вставил.

В конце концов, после многих тестов, это потерпит неудачу с той же ошибкой автоматизации, когда я попытался получить доступ к листу:

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

Я не уверен, что это решило бы эту проблему, но, надеюсь, это поможет другим и предотвратить потерю времени, выяснив, что может вызвать это относительно расплывчатое сообщение об ошибке.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top