将所有图表导出为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.Count
replace内部循环,我得到一个0
popup我的每个非图表工作表,所以我很明显不是迭代通过正确的对象(因此,没有图表,所以什么都没有发生)。
那么,如何遍历工作表中没有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的图表