Excel VBA シートに作成済みの埋め込みグラフ(Chart)を取得する

グラフ作成/操作

今回はシートに作成済みの埋め込みグラフを取得する方法をご説明します。

すでに作成済みのグラフを取得する事で、そのグラフを操作する事ができますので使用頻度が高いと思います。

その他グラフ作成方法や、詳細設定方法については次の記事をご覧ください。

1.グラフを指定して取得する

グラフを指定して取得する方法です。

グラフを指定して取得するには、「ChartObject」を使用します。

ChartObject(1)」や、「ChartObject(“グラフ名”)」とグラフの番号か、グラフの名前で指定する事で取得出来ます。

次の様なデータとグラフがあるシートでB店のグラフを取得するサンプルコードです。

Sub Sample1()

Dim ChartObj    As Object

Set ChartObj = ActiveSheet.ChartObjects(2)

With ChartObj

    MsgBox .Name
    
End With

End Sub

次のようにグラフ名でも指定出来ます。

Sub Sample2()

Dim ChartObj    As Object

Set ChartObj = ActiveSheet.ChartObjects("B店グラフ")

With ChartObj

    MsgBox "TOP:" & .Top & " LEFT:" & .Left
    
End With

End Sub

2.ループでグラフを取得する

シートに複数のグラフが埋め込まれている場合、全てのグラフを取得したり、ループで特定のグラフを取得したりする事が出来ます。

ループするには「ChartObjects.Count」でグラフの数を取得してループします。

全てのグラフの名前を取得する

Sub Sample3()

Dim ChartInt    As Long
Dim i           As Long
Dim ChartName   As String

ChartInt = ActiveSheet.ChartObjects.Count

For i = 1 To ChartInt
    
    With ActiveSheet.ChartObjects(i)
    
        ChartName = ChartName & .Name & vbCrLf
    
    End With

Next i

MsgBox ChartName

End Sub

全てのグラフの中から特定のグラフを取得する

C店のグラフの場合グラフの位置とサイズを設定します。

Sub Sample4()

Dim ChartInt    As Long
Dim i           As Long
Dim ChartName   As String

ChartInt = ActiveSheet.ChartObjects.Count

For i = 1 To ChartInt
    
    With ActiveSheet.ChartObjects(i)
    
        If .Name = "C店グラフ" Then
        
            .Top = 200 '表示位置
            .Left = 20 '表示位置
            .Width = 500
            .Height = 150
        
        End If
    
    End With
    
Next i

End Sub
タイトルとURLをコピーしました