使用VBA遍历工作簿中的所有图表

bas*_*123 4 excel foreach charts vba loops

我试图遍历工作簿中的所有图表.为什么选项1工作,但选项2不工作?

'选项1

For Each sht In ActiveWorkbook.Worksheets
    For Each cht In sht.ChartObjects
        MsgBox (cht.Name)
    Next cht
Next sht
Run Code Online (Sandbox Code Playgroud)

"OPTION2

Dim oChart As Chart
    For Each oChart In Application.Charts
        MsgBox (oChart.Name)
    Next oChart
End Sub
Run Code Online (Sandbox Code Playgroud)

Gar*_*ent 11

有两种图表:

  1. "大"图表 - 整个图表
  2. "小"图表 - 嵌入在工作表中的图表对象

这段代码:

Sub dural()
    Dim oChart As Chart
    For Each oChart In Application.Charts
        MsgBox oChart.Parent.Name & vbCrLf & oChart.Name
    Next oChart
End Sub
Run Code Online (Sandbox Code Playgroud)

将显示有关"大"品种的信息.

如果您想了解"小"图表的信息:

Sub dural2()
    Dim sh As Worksheet, i As Long
    For Each sh In Worksheets
        If sh.ChartObjects.Count > 0 Then
            For i = 1 To sh.ChartObjects.Count
                MsgBox sh.ChartObjects(i).Chart.Name
            Next i
        End If
    Next sh
End Sub
Run Code Online (Sandbox Code Playgroud)