VBA – 错误1004 – 方法类的CopyPicture失败
我需要一些帮助我的代码。 我写了一个macros,它把许多表格复制成不同的Excel文件到PowerPoint的图片,但是有时它完美地工作,有时会出现Error 1004 – 方法类的CopyPicture失败。 这是我的代码:
Sheets("List1").Select ' group chart ActiveSheet.Outline.ShowLevels RowLevels:=0, ColumnLevels:=1 ' select cells to be copied to PowerPoint: Range("A1:X83").Select ' copy cells: Selection.CopyPicture Appearance:=xlScreen, Format:=xlPicture ' paste to PowerPoint: pptSld.Shapes.Paste.Select
我发现对于有人插入Sheets("List1").
是有帮助的Sheets("List1").
Range("A1:X83").Select
之前Range("A1:X83").Select
,但它没有帮助。 我在使用Office 2010的时候遇到了这个问题。在家里我有Office 2016,代码完美。
你有什么想法,如何使它工作没有任何错误?
失去使用的习惯,select一切; 这就是macroslogging器代码所做的事情,但仅仅是因为macroslogging器代码模仿了每一个手动操作 – 当自动化Office时,实际上并不需要手动执行任务时再次点击鼠标,而是使用Office应用程序的对象模型 。
</rant>
所以,你工作Worksheets("List1")
,并复制一个特定的Range
作为图片:
Application.Worksheets("List1").Range("A1:X83").CopyPicture xlScreen, xlPicture
这个代码比依赖于Selection
任何东西都强大得多:你正在调用.CopyPicture
closures特定的Range
对象。
所以剩下要做的就是粘贴:
pptSld.Shapes.Paste
请注意, Paste
是一种方法,不返回任何东西 ,所以你不能合法地做。select它 – 但你为什么要。select它吗?!
如果您需要访问新创build的Shape
对象,则可以从pptSld.Shapes
集合中检索它:
Dim excelScreenshot As Shape Set excelScreenshot = pptSld.Shapes(pptSld.Shapes.Count)
然后,无论您想如何使用Selection
,您现在可以使用excelScreenshot
– 作为奖励,您可以使用IntelliSense和自动完成function来处理强types的对象引用,而不是Object
,这会使每个成员调用较晚 – 接通电话 – 换句话说,你会得到更好的performance,但它可能是不明显的。
检查您的参考,确保您正在调用正确的库。
工具>参考
不知道你需要哪个,但确保你有微软Powerpoint xx.x等等等等等等等等等等。