【问题标题】:.Automation Error. Unable to copy array of data into powerpoint slides from excel worksheets.自动化错误。无法将数据数组从 Excel 工作表复制到 PowerPoint 幻灯片中
【发布时间】:2020-03-31 23:28:30
【问题描述】:
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(粘贴)时遇到运行时错误。我哪里做错了?请帮忙。从 1 周开始学习 VBA。 Error looks like this

【问题讨论】:

    标签: excel vba powerpoint


    【解决方案1】:

    您似乎想要复制MyRangeArray 中引用的每个范围,并将它们粘贴到MySlideArray 中引用的相应幻灯片中。

    以下代码行会将每个范围粘贴到各自的幻灯片中,并返回ShapeRange

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

    要改为返回 Shape 对象,请尝试以下操作...

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

    顺便说一下,myPresentationmySlidePowerPointApp 被声明为 Variant,因为您没有指定类型。要将它们声明为Object,您需要指定类型如下...

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

    而且,同样的事情也适用于您的下一个声明行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-15
      • 1970-01-01
      • 2010-10-27
      相关资源
      最近更新 更多