我正在尝试将Excel文件中的所有图表导出为PNG图像。图表未嵌入工作表中,而是在创建时将作为新工作表移动。
我不熟悉VBA或办公室宏,我尝试根据我在网络上找到的代码示例串联一些内容,但没有成功。
以下是我尝试过的内容,它可能适用于工作表中嵌入的图表,但不适用于独立图表:
Private Sub ExportChartsButton_Click()
Dim outFldr As String
Dim ws As Worksheet
Dim co As ChartObject
outFldr = GetFolder(ActiveWorkbook.Path)
For Each ws In ActiveWorkbook.Worksheets
For Each co In ws.ChartObjects
co.Export outFldr & "\" & ws.Name & ".png", "PNG"
Next
Next
End Sub
单击按钮时,似乎没有任何事情发生。
如果我用MsgBox co.ChartObjects.Count
替换内部循环,我会为每个非图表工作表获得一个0
弹出窗口,所以我很明显没有遍历正确的对象(因此,没有图表所以没有任何反应。)
那么,如何迭代未嵌入工作表中的图表?
答案 0 :(得分:5)
我找到了解决方案。我不得不使用ActiveWorkbook.Charts
而不是.Worksheets
。
Private Sub ExportChartsButton_Click()
Dim outFldr As String
Dim wc As Chart
Dim co As ChartObject
outFldr = GetFolder(ActiveWorkbook.Path)
If outFldr = "" Then
MsgBox "Export Cancelled"
Else
For Each wc In ActiveWorkbook.Charts
wc.Export outFldr & "\" & wc.Name & ".png", "PNG"
Next
End If
End Sub
记录中,GetFolder()
定义为:
Function GetFolder(strPath As String) As String
Dim fldr As FileDialog
Dim sItem As String
Set fldr = Application.FileDialog(msoFileDialogFolderPicker)
With fldr
.Title = "Select folder to export Charts to"
.AllowMultiSelect = False
.InitialFileName = strPath
If .Show = True Then sItem = .SelectedItems(1)
End With
GetFolder = sItem
Set fldr = Nothing
End Function
非常欢迎评论/建议。
答案 1 :(得分:1)
到目前为止,最简单的导出方法之一可能是将整个工作簿保存为网页。然后,Excel会自动将您的图表转换为PNG&#39>