大体でIT

-ちょっと使えるネタを紹介-

大体でIT

Excel VBAで、グラフを「コピー」する方法について、ご紹介します。グラフのコピーは、「.Copy」を使ってコピーしたあと、「ActiveSheet.Paste」で貼り付けるとできます。「ベース」となるグラフを作成しておいて、「コピー」してグラフを利用すると、効率的にグラフを操作できます。

はじめに

この記事では、グラフを「コピー」する方法について、ご紹介します。

グラフをコピーするには、「.Copy」でコピーしたあと、「ActiveSheet.Paste」で貼り付けるとできます。

グラフの書式設定などをVBAだけで設定しようとすると大変です。

「ベース」となるグラフを作成しておいて、「コピー」して利用すると効率的にグラフを操作できます。

では、グラフを「コピー」する方法について、解説していきます。

この記事で紹介すること

  • グラフを「コピー」する方法

目次から見たい項目へ移動すると便利ですよ。

目次

VBAコードまとめ

VBAコードをまとめています。

VBAコードだけ確認したい場合に、ご活用ください。

'グラフをコピー
ActiveSheet.ChartObjects(1).Copy
ActiveSheet.Range("B16").Select
ActiveSheet.Paste '貼り付け

'画像としてコピー
ActiveSheet.ChartObjects(1).CopyPicture
ActiveSheet.Range("B16").Select
ActiveSheet.Paste '貼り付け

では、解説していきます。

グラフをコピーする

グラフをコピーしてみます。

「Copy」を使う

「Copy」を使うと、グラフをコピーできます。

貼り付けるには、「ActiveSheet.Paste」とすることで、グラフを貼り付けることができます。

Sub TEST1()
    
    'グラフをコピー
    ActiveSheet.ChartObjects(1).Copy
    
    ActiveSheet.Range("B14").Select 'セルを選択
    ActiveSheet.Paste 'グラフを貼り付け
    
End Sub

グラフを用意しておきます。

元のグラフ

グラフを用意します

では、VBAコードを実行してみます。

コピーできた

VBAでコピーできました

VBAでコピーできました。

別シートにコピーする

「別シート」にコピーしてみます。

コピーする方法は同じで、「.Copy」を使います。

「別シート」に貼り付けるには、「Worksheets("Sheet2").Paste」のように、別シートを指定して貼り付けです。

Sub TEST2()
    
    'グラフをコピー
    Worksheets("Sheet1").ChartObjects(1).Copy
    
    'グラフを貼り付け
    Worksheets("Sheet2").Paste
    
End Sub

グラフを用意しておきます。

元のグラフ

グラフを用意します

では、VBAコードを実行してみます。

「別シート」にコピーできた

VBAで「別シート」にコピーできました

VBAで「別シート」にコピーできました。

位置を指定して別シートにコピー

「位置を指定」して別シートにコピーしてみます。

「貼り付けたグラフの番号」を「.ChartObjects.Count」で取得するのが、ポイントです。

なので、「貼り付けたグラフ」を指定するには、「.ChartObjects(.ChartObjects.Count)」とします。

Sub TEST3()
    
    'グラフをコピー
    Worksheets("Sheet1").ChartObjects(1).Copy 'コピー
    
    'グラフを貼り付け
    With Worksheets("Sheet2")
        .Paste '貼り付け
        .ChartObjects(.ChartObjects.Count).Left = .Range("B3").Left '左の位置
        .ChartObjects(.ChartObjects.Count).Top = .Range("B3").Top '上の位置
    End With
    
End Sub

グラフを用意しておきます。

元グラフ

グラフを用意します

では、VBAコードを実行してみます。

「位置を指定」して別シートにコピー

VBAで「位置を指定」して別シートにコピーできました

VBAで「位置を指定」して別シートにコピーできました。

別シートの同じ位置にコピーする

別シートの「同じ位置」にコピーしてみます。

同じ位置にするには、「.Left」と「.Top」で左と上の位置を取得します。

貼り付けたグラフを指定するには、先ほどと同じで、「.ChartObjects(.ChartObjects.Count)」とします。

Sub TEST4()
    
    'グラフをコピー
    With Worksheets("Sheet1").ChartObjects(1)
        a = .Left '左
        b = .Top '上
        .Copy
    End With
    
    'グラフを貼り付け
    With Worksheets("Sheet2")
        .Paste '貼り付け
        .ChartObjects(.ChartObjects.Count).Left = a '左の位置
        .ChartObjects(.ChartObjects.Count).Top = b '上の位置
    End With
    
End Sub

グラフを用意しておきます。

元グラフ

グラフを用意します

では、VBAコードを実行してみます。

別シートの「同じ位置」にコピー

VBAで別シートの「同じ位置」にコピーできました

VBAで別シートの「同じ位置」にコピーできました。

複数のグラフをコピーする

次は、「複数」のグラフをコピーして、「同じ位置」に貼り付けてみます。

シート内のグラフをループする際は、「For Each」を使ってループします。

あとは、先ほどと同じで、「.Left」と「.Top」を使って元グラフの位置を取得します。

取得した位置を「.ChartObjects(.ChartObjects.Count)」に「.Left」と「.Top」で設定していく、という感じです。

Sub TEST5()

    Dim Obj
    For Each Obj In Worksheets("Sheet1").ChartObjects
        
        a = Obj.Left '左
        b = Obj.Top '上
        Obj.Copy 'グラフをコピー
            
        'グラフを貼り付け
        With Worksheets("Sheet2")
            .Paste '貼り付け
            .ChartObjects(.ChartObjects.Count).Left = a '左の位置
            .ChartObjects(.ChartObjects.Count).Top = b '上の位置
        End With
        
    Next
    
End Sub

複数のグラフを用意しておきます。

複数のグラフを用意

複数のグラフを用意しておきます

では、VBAコードを実行してみます。

「複数」のグラフをコピーできた

VBAで「複数」のグラフをコピーできました

VBAで「複数」のグラフをコピーできました。

グラフを画像としてコピーする

グラフを「画像」としてコピーすることもできます。

「CopyPicture」を使う

使うのは、「CopyPicture」です。

Sub TEST6()
    
    '画像としてコピー
    ActiveSheet.ChartObjects(1).CopyPicture
    
    ActiveSheet.Range("B14").Select 'セルを選択
    ActiveSheet.Paste '貼り付け
    
End Sub

グラフを用意しておきます。

元グラフ

グラフを用意します

では、VBAコードを実行してみます。

「画像」としてコピーできた

VBAで「画像」としてコピーできました

VBAで「画像」としてコピーできました。

おわりに

この記事では、グラフを「コピー」する方法について、ご紹介しました。

グラフをコピーするには、「.Copy」でコピーしたあと、「ActiveSheet.Paste」で貼り付けるとできます。

グラフの書式設定などをVBAだけで設定しようとすると大変です。

「ベース」となるグラフを作成しておいて、「コピー」して利用すると効率的にグラフを操作できます。

参考になればと思います。最後までご覧くださいまして、ありがとうございます。

関連する記事から探す

カテゴリから探す

カテゴリから見たい項目を探すと便利ですよ。

アーカイブから探す