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