Sha*_*hin 3 excel vba excel-2007
我正在尝试将我的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
Run Code Online (Sandbox Code Playgroud)
单击按钮时,似乎什么也没发生.
如果我替换内部循环,MsgBox co.ChartObjects.Count我会得到0每个非图表工作表的弹出窗口,所以我很明显不会遍历正确的对象(因此,没有图表,所以没有任何反应).
那么,我如何遍历未嵌入工作表中的图表?
我找到了解决方案.我不得不用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
Run Code Online (Sandbox Code Playgroud)
并且为了记录,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
Run Code Online (Sandbox Code Playgroud)
意见/建议非常欢迎.