.Автоматическая ошибка. Невозможно скопировать массив данных в слайды PowerPoint из листов Excel - PullRequest
0 голосов
/ 01 апреля 2020
Dim myPresentation, mySlide, PowerPointApp, shp As Object
Dim MySlideArray, MyRangeArray As Variant
Dim x As Long

Set myPresentation = PowerPointApp.ActivePresentation

  MySlideArray = Array(1, 2, 3, 4)

  MyRangeArray = Array(Worksheets("Name File").Range("A1:C10"), _
                       Worksheets("Age File").Range("A1:C10"), _
                       Worksheets("Location File").Range("A1:C10"), _
                       Worksheets("DOB File").Range("A1:C10"))

  For x = LBound(MySlideArray) To UBound(MySlideArray)
        MyRangeArray(x).Copy
        Set shp = PowerPointApp.ActiveWindow.Selection.ShapeRange
  Next x

  Application.CutCopyMode = False
  ThisWorkbook.Activate

При отладке иногда код выполняется полностью, но только первый диапазон копируется в powerpoint, а остальные - нет. В других случаях я получаю ошибку во время выполнения при использовании ShapeRange (вставка). Где я сделал не так? Пожалуйста помоги. Обучение VBA с 1 недели. Ошибка выглядит так

1 Ответ

1 голос
/ 01 апреля 2020

Похоже, вы хотите скопировать каждый диапазон, указанный в MyRangeArray, и вставить их в соответствующий слайд, указанный в MySlideArray.

Следующая строка кода вставит каждый диапазон в соответствующий слайд, и возвращает ShapeRange.

Set shp = myPresentation.slides(MySlideArray(x)).Shapes.Paste

Для возврата объекта Shape попробуйте следующее ...

Set shp = myPresentation.slides(MySlideArray(x)).Shape`s.Paste(1)

Кстати, myPresentation, mySlide и PowerPointApp объявлены как Variant, так как вы не указали тип. Чтобы объявить их как Object, вам нужно указать тип следующим образом ...

Dim myPresentation as Object, mySlide as Object, PowerPointApp as Object, shp As Object

И то же самое относится и к вашей следующей строке объявления.

...