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任何东西都强大得多:你正在调用.CopyPictureclosures特定的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等等等等等等等等等等。