Ошибка времени выполнения '-2147188160 (80048240) DataType: = ppPasteEnhancedMetafile Ошибка - PullRequest
0 голосов
/ 30 ноября 2011

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

Ответы [ 2 ]

3 голосов
/ 01 декабря 2011

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

With objPPT.Slides(9).Shapes
    Set objShape = .PasteSpecial(ppPasteEnhancedMetafile)(1)
    With objShape
       ' set coordinates and such here
    End With
End With

Что касается того, почему вы получаете сообщение об ошибке, попробуйте остановить код после того, как вы положили что-то в буфер обмена. Затем переключитесь в PowerPoint, используйте Специальную вставку, чтобы увидеть, какие параметры вставки доступны. Если EMF не входит в их число, это ваша проблема ... вы ничего не помещаете в буфер обмена в формате EMF.

0 голосов
/ 25 апреля 2014

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

Я установил программу, в которой я бы:

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

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

Sheets("PDX Paste").Activate

Мне удалось активировать все остальные листы, кроме этого, даже используя индексное значение вместо прямой ссылки на имя. После поисков безуспешно я обнаружил, что при копировании и вставке с сайта также вставляются невидимые элементы управления. Когда я узнал об этом, у меня было 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

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

...