Spl*_*nia 4 excel vba excel-vba
我正在做一个导出工作表中所有图表的宏,然后打开Outlook并附加它们.但是,我注意到,有几次图表会导出但是为0KB(文件已创建,但无法看到图像)

但它并没有发生在所有的图表上.只是大部分时间,有时候,它们都会毫无问题地生成它们.(当我逐步执行代码时,所有图表生成都没有问题,也是在逐步执行之后,然后我正常执行它并生成所有图表,但是如果我关闭并重新打开工作簿,它会产生同样的问题,仅生成两个,其余为空文件)
这是代码:
Dim sheetNumber, Size, i As Integer
Dim chartNames(), FNames() As String
Dim objChrt As ChartObject
Dim myChart As Chart
'Activate Charts Sheet
Sheets("GRAFICAS").Activate
'Calculate Number of Charts in Sheet
Dim chartNumber
chartNumber = ActiveSheet.ChartObjects.Count
'Redimension Arrays to fit all Chart Export Names
ReDim chartNames(chartNumber)
ReDim FNames(chartNumber)
'Loops through all the charts in the GRAFICAS sheet
For i = 1 To chartNumber
'Select chart with index i
Set objChrt = ActiveSheet.ChartObjects(i)
Set myChart = objChrt.Chart
'Generate a name for the chart
chartNames(i) = "myChart" & i & ".png"
On Error Resume Next
Kill ThisWorkbook.Path & "\" & chartNames(i)
On Error GoTo 0
'Export Chart
myChart.Export FileName:=Environ$("TEMP") & "\" & chartNames(i), Filtername:="PNG"
'Save path to exported chart
FNames(i) = Environ$("TEMP") & "\" & chartNames(i)
Next i
Run Code Online (Sandbox Code Playgroud)
我错过了什么?
事实证明,这是Excel 2010-2013用户的随机错误.然而,经过一些更多的谷歌搜索.我在这里遇到了答案
你只需要添加
objChrt.Activate
Run Code Online (Sandbox Code Playgroud)
选择图表后.所以在我的情况下,最终的代码如下所示:
For i = 1 To chartNumber
'Select chart with index i
Set objChrt = ActiveSheet.ChartObjects(i)
objChrt.Activate
Set myChart = objChrt.Chart
'Generate a name for the chart
chartNames(i) = "myChart" & i & ".png"
On Error Resume Next
Kill ThisWorkbook.Path & "\" & chartNames(i)
On Error GoTo 0
'Export Chart
myChart.Export FileName:=Environ$("TEMP") & "\" & chartNames(i), Filtername:="PNG"
'Save path to exported chart
'Application.Wait (Now + #12:00:01 AM#)
FNames(i) = Environ$("TEMP") & "\" & chartNames(i)
Next i
Run Code Online (Sandbox Code Playgroud)