Проблемы VBA (и VB6) при вставке из Excel в PowerPoint

Я использую этот код для экспорта диаграмм Excel в PowerPoint

Sub ChartsToPresentation() Dim PPApp As PowerPoint.Application Dim PPPres As PowerPoint.Presentation Dim PPSlide As PowerPoint.Slide Dim PresentationFileName As Variant Dim SlideCount As Long Dim iCht As Integer Application.CutCopyMode = False Set PPApp = GetObject(, "Powerpoint.Application.16") Set PPSlide = PPApp.ActiveWindow.View.Slide nv = PPApp.ActiveWindow.Selection.SlideRange.SlideIndex ActiveChart.ChartArea.Select Selection.Copy ggg: Set shp = PPApp.ActivePresentation.Slides(nv).Shapes.PasteSpecial(DataType:=0) If Err Then GoTo ggg Application.CutCopyMode = False End Sub 

Поскольку я вызываю sub для многих разных диаграмм в цикле, я часто получаю ошибку «Буфер обмена пуст или содержит данные, которые могут не вставляться» . Он выглядит как проблема с задержкой между копией и пастой.

Я использую Win10 office 2016 64b

Есть ли обходной путь?

Я попытался сделать это с помощью VB6, но выглядит одинаково

Используйте ppPasteEnhancedMetafile = 2 или ppPasteShape = 11 или ppPasteJPG = 5
как DataType для диаграмм!

Очищенный и улучшенный код:

 Sub ChartsToPresentation() Dim PPApp As PowerPoint.Application Dim PPSlide As PowerPoint.Slide Application.CutCopyMode = False Set PPApp = GetObject(, "Powerpoint.Application") Set PPSlide = PPApp.ActiveWindow.View.Slide ActiveChart.ChartArea.Copy DoEvents PPSlide.Shapes.PasteSpecial DataType:=ppPasteShape Application.CutCopyMode = False End Sub 

Или возьмите выбор:

члены PpPasteDataType

  • способ закрыть скрытые приложения Excel? VB6 classic VB VBA
  • Автоматическое заполнение текстового поля в Excel VBA
  • Как разместить дизайн в электронной таблице Excel с помощью VB6
  • Как добавить границы в файл Excel с помощью VBScript 6.0?
  • Определенная ошибка объекта VBA Activechart.CopyPicture
  • Итерация через вложенные объекты с помощью VBJSON
  • Что означает «Shift: =» в этом коде VB6?
  • Межстрочный интервал VB Excel 2003
  • Чтение файла XLS из VB6
  • Заставить COM-сервер оставаться открытым
  • SetVB6 ListBox Rowsource с диапазоном Excel
  • Interesting Posts

    sql-запрос для импорта данных из таблицы Excel 2003-2007 в таблицу sql server

    Как определить тип документа (Word или Excel) по его содержимому

    Excel для записи из нескольких книг в один

    Разгруппировка диаграммы пузырьков Excel / Powerpoint из wmf / emf

    VBA Excel копирует несколько фигур в буфер обмена

    VBA получает все вхождения стиля в документ Word из Excel

    Формула условного Excel: «Если» содержимое ячейки – это значение, относящееся к файлу png

    Excel: серия поиска значений из большой таблицы

    Объединенные ячейки не действуют на Save, используя Spreadsheet :: ParseExcel

    Как добавить отсутствующее время в столбце Excel для интерполяции

    excel vba для копирования / вставки данных на другой лист, если условия соответствуют

    Блокировка всей строки на основе даты

    Установка даты с помощью Excel

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

    MsgBox (ActiveWorkbook) – «Объект не поддерживает это свойство или метод»

    Давайте будем гением компьютера.