一位用户要求我从他们创建的 Excel 书中运行一个宏,以使流程自动化。我通过 cscript 从 Java 调用宏。无论如何,我都不是 VBA 程序员,但是代码效率低下,而且只是一遍又一遍地简单地复制/粘贴。
当我从 Java 运行宏时,出现以下错误:
运行时错误“1004”:范围类的 CopyPicture 方法失败
当我进入工作簿并手动单击启动此宏的按钮时,不会发生此错误。
我一直在阅读如何使用 .Activate/Selection/.Select/etc 可以真正减慢代码并导致此类问题。
这是一个不断使用的代码块(而不是在过程/函数调用中)。它不断在“Selection.CopyPicture”行上抛出错误。
任何优化此块的帮助将不胜感激。
ActiveSheet.ChartObjects("Chart 9").Activate
ActiveChart.Pictures.Delete
Range("InvGrid").Select
Selection.CopyPicture Appearance:=xlScreen, Format:=xlPicture
ActiveSheet.ChartObjects("Chart 9").Activate
ActiveChart.ChartArea.Select
ActiveChart.Paste
Application.CutCopyMode = False
ActiveSheet.ChartObjects("Chart 9").Activate
ActiveChart.ChartArea.Select
ActiveChart.Export "C:\ABC.gif", "GIF", False
VBS 通过 csript 从 Java 启动
Dim xlsWorkbook
Dim objExcel
Set objExcel = CreateObject(\"Excel.Application\")
objExcel.Application.DisplayAlerts = False
Set xlsWorkbook = objExcel.WorkBooks.Open(\"" + xlsmFilepath + "\", 3)
objExcel.Application.Run(xlsWorkbook.Name & \"!ExportCharts\")
xlsWorkbook.Save
xlsWorkbook.Close
objExcel.Quit