将所有图表导出为PNG

我试图导出我的Excel文件中的所有图表作为PNG图像。 图表没有embedded到工作表中,而是在创build时被移动为新的工作表

不熟悉VBA或Officemacros,我已经尝试了一些基于我在网上find的代码示例的东西,但没有成功。

以下是我尝试过的方法,可能适用于工作表中embedded的图表,但不适用于独立图表:

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 

点击button时,似乎什么也没有发生。

如果我用MsgBox co.ChartObjects.Countreplace内部循环,我得到一个0popup我的每个非图表工作表,所以我很明显不是迭代通过正确的对象(因此,没有图表,所以什么都没有发生)。

那么,如何遍历工作表中没有embedded的图表呢?

我find了解决scheme。 我必须使用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 

而为了logging, 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 

意见/build议非常受欢迎。

也许最简单的出口方式之一是将整个工作簿保存为网页。 Excel会自动将您的图表转换为PNG的图表