2
我被一个用户要求在他们创建的Excel书中运行一个宏,以便自动执行一个过程。我通过cscript从Java调用宏。我不是任何想象力的VBA程序员,但代码效率低下,并且简单地复制/粘贴一遍又一遍。Excel 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
谢谢你的回复添。提供的建议在“运行时错误'1004'的错误文本中给出了1004错误:方法'粘贴'对象'_Chart'失败”...我需要离开我的办公室,但我不要感激任何进一步的建议 – KKlucznik 2013-04-09 21:12:41
好吧,它在Excel 2010中对我有用,所以我不确定这个问题可能是什么。脚本运行时Excel是否可见? – 2013-04-09 21:18:49
宏也驻留在Excel 2010中。就像我说的,如果宏是通过Excel中的按钮手动运行的,那么我不会遇到任何错误。我发布了从Java启动的VBS,所以也许可以添加一些线索?脚本运行时,工具栏中不会显示Excel图标。我可以看到Excel exe在进程中启动,但出现的第一个对话框是运行时错误。 – KKlucznik 2013-04-10 14:02:31