VBA:为什么我将 table 复制到 power point 时得到 "Shapes (unknown member): Invalid request"
VBA: why do I get "Shapes (unknown member): Invalid request" when copying table to power point
所以出现此错误的原因有很多,但是 none 其他解决方案似乎解决了我面临的问题。我有一个来自 excel 的脚本 运行,它可以将 table 复制到 powerpoint 幻灯片,但我不断收到 "Shapes (unknown member): Invalid request".
不是的原因:
- 这不是没有抓住 Power Point 焦点的情况,因为我可以通过脚本和 select 不同的幻灯片更改幻灯片上的文本。
- 不是没有及时复制table。我将其设置为等待,并且还在两者之间放置了一个消息框,并使用 vba 代码复制的内容手动粘贴了 table。
代码:
请记住,我省略了路径和不相关的代码段...
Dim PPT As PowerPoint.Application
Set PPT = New PowerPoint.Application
PPT.Visible = True
PPT.Presentations.Open Filename:= "#######################"
Set curWS = Worksheets("###############")
curWS.Select
Set pt = curWS.PivotTables(1)
Set ptRg = pt.TableRange1
Set ptRg = Range(curWS.Cells(ptRg.Row - 1, ptRg.Column), _
curWS.Cells(ptRg.Row + ptRg.Rows.Count - 1, ptRg.Columns.Count + ptRg.Column - 1))
ptRg.Select
Selection.Copy
DoEvents
PPT.ActivePresentation.Application.ActiveWindow.Panes(2).Activate
PPT.ActivePresentation.Application.ActivePresentation.Slides(2).Select
PPT.ActivePresentation.Application.ActivePresentation.Slides(2).Shapes.PasteSpecial ppPastePNG, msoFalse
尝试将您的 ppPastePNG 更改为 ppPasteEnhancedMetafile。
例如
PPT.ActivePresentation.Slides(2).Shapes.PasteSpecial ppPasteEnhancedMetafile, msoFalse
使用下面的代码修改代码中的最后几行(使用 myShape 对象,将允许您稍后修改图片参数方便)
Dim myShape As Object
PPT.ActivePresentation.Application.ActiveWindow.Panes(2).Activate
ptRg.Select
Selection.Copy
Set myShape = PPT.ActivePresentation.Slides(2).Shapes.PasteSpecial(ppPastePNG, msoFalse)
貌似有时候复制不对,然后到粘贴的地方就什么都没有了...
我设法通过在选择和复制命令前放置 Application.CutCopyMode = False
来解决这个问题
示例:
Application.CutCopyMode = False
'Selecting and copying
Range("ExportTable").Copy
' Pasting and giving format
With PPSlide.Shapes.PasteSpecial(DataType:=2)
.Align msoAlignLefts, msoTrue
.Align msoAlignCenters, True
.Align msoAlignMiddles, True
.IncrementTop (dist_top)
.Top = 70
.Left = 15
.LockAspectRatio = msoFalse
.Height = 90
.Width = 690
End With
所以出现此错误的原因有很多,但是 none 其他解决方案似乎解决了我面临的问题。我有一个来自 excel 的脚本 运行,它可以将 table 复制到 powerpoint 幻灯片,但我不断收到 "Shapes (unknown member): Invalid request".
不是的原因:
- 这不是没有抓住 Power Point 焦点的情况,因为我可以通过脚本和 select 不同的幻灯片更改幻灯片上的文本。
- 不是没有及时复制table。我将其设置为等待,并且还在两者之间放置了一个消息框,并使用 vba 代码复制的内容手动粘贴了 table。
代码:
请记住,我省略了路径和不相关的代码段...
Dim PPT As PowerPoint.Application
Set PPT = New PowerPoint.Application
PPT.Visible = True
PPT.Presentations.Open Filename:= "#######################"
Set curWS = Worksheets("###############")
curWS.Select
Set pt = curWS.PivotTables(1)
Set ptRg = pt.TableRange1
Set ptRg = Range(curWS.Cells(ptRg.Row - 1, ptRg.Column), _
curWS.Cells(ptRg.Row + ptRg.Rows.Count - 1, ptRg.Columns.Count + ptRg.Column - 1))
ptRg.Select
Selection.Copy
DoEvents
PPT.ActivePresentation.Application.ActiveWindow.Panes(2).Activate
PPT.ActivePresentation.Application.ActivePresentation.Slides(2).Select
PPT.ActivePresentation.Application.ActivePresentation.Slides(2).Shapes.PasteSpecial ppPastePNG, msoFalse
尝试将您的 ppPastePNG 更改为 ppPasteEnhancedMetafile。
例如
PPT.ActivePresentation.Slides(2).Shapes.PasteSpecial ppPasteEnhancedMetafile, msoFalse
使用下面的代码修改代码中的最后几行(使用 myShape 对象,将允许您稍后修改图片参数方便)
Dim myShape As Object
PPT.ActivePresentation.Application.ActiveWindow.Panes(2).Activate
ptRg.Select
Selection.Copy
Set myShape = PPT.ActivePresentation.Slides(2).Shapes.PasteSpecial(ppPastePNG, msoFalse)
貌似有时候复制不对,然后到粘贴的地方就什么都没有了...
我设法通过在选择和复制命令前放置 Application.CutCopyMode = False
来解决这个问题示例:
Application.CutCopyMode = False
'Selecting and copying
Range("ExportTable").Copy
' Pasting and giving format
With PPSlide.Shapes.PasteSpecial(DataType:=2)
.Align msoAlignLefts, msoTrue
.Align msoAlignCenters, True
.Align msoAlignMiddles, True
.IncrementTop (dist_top)
.Top = 70
.Left = 15
.LockAspectRatio = msoFalse
.Height = 90
.Width = 690
End With