【发布时间】:2016-03-16 09:47:08
【问题描述】:
我对 VBA 一无所知,我只是想在每次保存 Excel 文档时将 4 个图表(已经在各自的选项卡中分开)作为 PNG 文件无缝导出到预先指定的位置。
通过一些 stackoverflow 的数据库,我设法对我想导出为 CSV 的工作表做类似的事情,但我无法为我的图表做同样的事情。
现在这就是我的 VBA 在 ThisWorkbook 中的样子:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Application.DisplayAlerts = False
Application.ScreenUpdating = False
ThisWorkbook.Worksheets("CSV Monthly Update").Copy
ActiveWorkbook.SaveAs Filename:="CSV Monthly Update.csv", FileFormat:=xlCSVWindows
ActiveWorkbook.Close
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
'上面这部分效果很好'
'下面的没有,我试图从工作表“Growth_of_10k”中导出图表,但它给了我一个运行时错误 9,关于 runscript is out of page'
Sub ExportChart()
Dim objChrt As ChartObject
Dim myChart As Chart
Set objChrt = Sheets("Growth_of_10k").ChartObjects(3)
Set myChart = objChrt.Chart
myFileName = "myChart.png"
On Error Resume Next
Kill ThisWorkbook.Path & "\" & myFileName
On Error GoTo 0
myChart.Export Filename:=ThisWorkbook.Path & "\" & myFileName, Filtername:="PNG"
MsgBox "OK"
End Sub
知道我需要如何更改代码,以便在保存 Excel 的同时将图表自动导出到与文件相同的位置(或另一个预先指定的位置,没关系)文件?
如果这是一个新手问题,我很抱歉,这真的是我第一次尝试 VBA,只有当你不明白自己在做什么时,谷歌搜索才能让你到目前为止。
非常感谢。
【问题讨论】:
-
你在哪一行得到错误?
-
您的代码对我有用 - 我唯一可以建议的是,当您运行它时可能有一个不同的工作簿处于活动状态(因此它会在该工作簿中查找工作表“Growth_of_10k”但找不到它)修复:
Set objChrt = ThisWorkbook.Sheets("Growth_of_10k").ChartObjects(3) -
它告诉我运行时错误 '1004' 应用程序定义或对象定义的错误。我从别人那里拿了 Set objChrt = Sheets("Growth_of_10k").ChartObjects(3) 。所以我不知道我制作的页面中的图表名称或图表编号是什么。我有一个名为“Growth_of_10k”的页面,其中只有一个图表,依此类推。但我不知道工作表中图表的编号是多少,也不知道如何引用我要导出的那些图表。 Dropbox 链接:dropbox.com/s/ir3f7223nb9o2db/…