大体でIT

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

大体でIT

Excel VBAで、図形のコピーと貼り付けをする方法について、ご紹介します。図形のコピーと貼り付けは、「Copy」と「Paste」を使います。ポイントは、貼り付ける際に「セルを選択」して、「アクティブシートに貼り付ける」ところです。あらかじめ図形を作成しておいて、コピーして図形を使うと便利になります。

はじめに

この記事では、図形のコピーと貼り付けについて、ご紹介します。

図形のコピーと貼付けは、「Copy」と「Paste」を使います。

ポイントは、貼り付ける際に、「セルを選択」して、「アクティブシートに貼り付ける」ところです。

図形の場合は、クリップボードを使って、コピーして貼り付けるためですね。

VBAで図形の設定をするのは、ちょっと面倒なので、作っておいた図形を、コピーして使うのが便利な使い方です。

図形を扱う際は、図形のコピーと貼り付けを覚えておきましょう。

では、図形のコピーと貼り付けについて、解説していきます。

この記事で紹介すること

  • 図形をコピーして貼付ける方法

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

目次

VBAコードまとめ

図形のコピーと貼付けについて、VBAコードをまとめました。

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

'コピー
Selection.Copy '選択した図形をコピー
ActiveSheet.Shapes("正方形/長方形 1").Copy '指定した図形をコピー
ActiveSheet.Shapes("グループ化 1").CopyPicture '画像としてコピー
ActiveSheet.Shapes("グループ化 1").CopyPicture Format:=xlBitmap '画像としてコピー(Bitmap形式)

'貼り付け
Range("B8").Select 'セルを選択
ActiveSheet.Paste '貼り付け

'書式のコピーと貼り付け
ActiveSheet.Shapes("図1").PickUp '図形の書式をコピー
ActiveSheet.Shapes("図2").Apply '図形の書式を貼り付け

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

VBAで図形のコピーと貼り付け

VBAで、図形のコピーと貼り付けは、クリップボードにコピーして、貼り付けるという手順でやります。

使うVBAコードは、「Copy」と「Paste」です。

CopyとPasteを使う

図形のコピーと貼り付けをする流れは、こんな感じになります。

オブジェクト.Copy
Range(セル).Select
ActiveSheet.Paste

ポイントは、貼り付けるときに、「セルを選択」して「アクティブシートに貼り付け」する、というところです。

クリップボードから貼り付けるので、アクティブシート全体を指定して、貼り付ける流れになります。

では、実際に、図形をコピーして貼り付けてみます。

VBAで選択した図形をコピーして貼り付け

選択した図形を、コピーして貼り付けしてみます。

Selectionを使ってコピーして貼り付け

選択した図形をコピーして貼り付けるVBAコードは、こんな感じになります。

Sub TEST1()
    
    '選択した図形をコピー
    Selection.Copy
    
    Range("B6").Select 'セルを選択
    ActiveSheet.Paste '貼り付け
    
End Sub

図形を選択しておきます。

図形を選択

図形を選択しておく

では、実行してみます。

図形をコピーして貼り付け

選択した図形をコピーして貼り付けた結果

選択した図形を、コピーして貼り付けできました。

オブジェクトを使ってみる

選択した図形をオブジェクトに格納して、コピーして貼り付ける場合は、こんな感じになります。

Sub TEST2()
    
    '選択した図形をオブジェクトに格納
    Set a = Selection
    a.Copy 'オブジェクトをコピー
    
    Range("B6").Select 'セルを選択
    ActiveSheet.Paste '貼り付け
    
End Sub

図形を選択しておきます。

図形を選択

図形を選択しておく

では、実行してみます。

図形をコピーして貼り付け

選択した図形をコピーして貼り付けた結果

先ほどと同じように、選択した図形を、コピーして貼り付けできました。

VBAで指定した図形をコピーして貼り付け

次は、図形を指定して、コピーして貼り付けをしてみます。

Shapesを使ってコピーして貼り付け

指定した図形をコピーして貼り付けるVBAコードは、こんな感じになります。

Sub TEST3()
    
    '指定した図形をコピー
    ActiveSheet.Shapes("正方形/長方形 1").Copy
    
    Range("B6").Select 'セルを選択
    ActiveSheet.Paste '貼り付け
    
End Sub

図形を作成しておきました。

図形を用意

図形を用意

では、実行してみます。

図形をコピーして貼り付け

指定した図形をコピーして貼り付けた結果

指定した図形を、コピーして貼り付けできました。

オブジェクトを使ってみる

指定した図形をオブジェクトに格納して、コピーして貼り付ける場合は、こんな感じです。

Sub TEST4()
    
    '指定した図形をオブジェクトに格納
    Set a = ActiveSheet.Shapes("正方形/長方形 1")
    a.Copy 'オブジェクトをコピー
    
    Range("B6").Select 'セルを選択
    ActiveSheet.Paste '貼り付け
    
End Sub

図形を作成しておきました。

図形を用意

図形を用意

では、実行してみます。

図形をコピーして貼り付け

指定した図形をコピーして貼り付けた結果

指定した図形を、コピーして貼り付けできました。

図形のコピーと貼付けは、Copyでコピーして、セルを選択したあと、アクティブシートに貼り付けです。

VBAでシート内の全ての図形を別シートにコピーして貼り付け

シート内の全ての図形を、別シートにコピーして貼り付けする、というのをやってみます。

For Eachを使う

シート全体の図形をコピーするのは、「For Each」を使います。

VBAコードは、こんな感じになります。

Sub TEST5()
    
    '別シートを選択
    Worksheets("Sheet2").Select
    
    'シート内の図形をループ
    For Each a In Worksheets("Sheet1").Shapes
        a.Copy 'オブジェクトをコピー
        ActiveSheet.Paste '貼り付け
    Next
    
End Sub

「Sheet1」に複数の図形を用意しました。

複数の図形を用意

複数の図形を用意

では、実行してみます。

別シートに全ての図形をコピーして貼り付け

シート内の全ての図形を別シートにコピーした結果

あれっ。

別シートにコピーはできていますけど、位置も同じにしたいですね。

同じ位置に、コピーしたい場合は、図形の位置もコピーしてあげます。

位置もコピーして貼り付け

位置もコピーして、全ての図形を、別シートにコピーして貼り付けてみます。

VBAコードは、こんな感じになります。

Sub TEST6()
    
    '別シートを選択
    Worksheets("Sheet2").Select
    
    'シート内の図形をループ
    For Each a In Worksheets("Sheet1").Shapes
        a.Copy 'オブジェクトをコピー
        ActiveSheet.Paste '貼り付け
        '↓追加
        Selection.ShapeRange.Left = a.Left '左の位置をコピー
        Selection.ShapeRange.Top = a.Top '上の位置をコピー
    Next
    
End Sub

図形の位置もコピーしています。

先ほどと同じ図形を使います。

複数の図形を用意

複数の図形を用意

では、実行してみます。

「位置」もコピーして貼り付け

位置もコピーして全ての図形を別シートにコピーした結果

別シートの同じ位置に、全ての図形をコピーして貼り付けできました。

VBAで図形を画像としてコピーして貼り付け

図形を「画像」としてコピーして、貼り付けすることもできます。

使うVBAコードは、「CopyPicture」です。

CopyPictureを使う

「CopyPicture」は、Copyと同じように使うことができます。

オブジェクト.CopyPicture
Range(セル).Select
ActiveSheet.Paste

という感じです。

では、実際にやってみます。

画像としてコピーして貼り付けてみる

図形を、画像としてコピーして貼り付けしてみます。

VBAコードは、こんな感じです。

Sub TEST7()
    
    '画像としてコピー
    ActiveSheet.Shapes("グループ化 1").CopyPicture
    
    Range("B8").Select 'セルを選択
    ActiveSheet.Paste '貼り付け

End Sub

図形を用意しました。

図形を用意

図形を用意

では、実行してみます。

「画像」としてコピーして貼り付け

図形を画像としてコピーして貼り付けた結果

画像として、貼り付けできました。

「Bitmap形式」でも、コピーすることができます。

CopyPictureの引数に「Format:=Bitmap」を付けます。

Sub TEST8()

    '画像としてコピー(Bitmap形式)
    ActiveSheet.Shapes("グループ化 1").CopyPicture Format:=xlBitmap
    
    Range("B8").Select 'セルを選択
    ActiveSheet.Paste '貼り付け

End Sub

先ほどと同じ図形を使います。

図形を用意

図形を用意

では、実行してみます。

「Bitmap形式」でコピーして貼り付け

図形を画像としてコピーして貼り付けた結果

画像として、貼り付けできました。

見た目ではあまりわからないですね。

セル範囲もできる

ちなみに、「CopyPicture」は、「セル範囲」を画像としてコピーして貼り付けもできます。

Sub TEST9()
    
    'セル範囲を画像としてコピー
    Range("A1:D5").CopyPicture
    
    Range("B8").Select 'セルを選択
    ActiveSheet.Paste '貼り付け
    
End Sub

図形を含むセル範囲でやってみます。

とりあえず図形を用意

図形を含むセル範囲でやってみる

では、実行してみます。

「セル範囲」を画像としてコピーして貼り付け

セル範囲を画像としてコピーして貼り付けた結果

セル範囲を、「画像」としてコピーして貼り付けできました。

VBAで図形の書式をコピーして貼り付け

図形の「書式のみ」を、コピーして貼り付けすることもできます。

使うVBAコードは、「PickUp」と「Apply」です。

PickUpとApplyを使う

「PickUp」と「Apply」は次のように使います。

コピー元のオブジェクト.PickUp
コピー先のオブジェクト.Apply

という感じです。

では、実際にやってみます。

書式をコピーして貼り付けてみる

図形の書式のみを、コピーして貼り付けしてみます。

VBAコードは、こんな感じです。

Sub TEST10()
    
    ActiveSheet.Shapes("図1").PickUp '図形の書式をコピー
    ActiveSheet.Shapes("図2").Apply '図形の書式を貼り付け
    
End Sub

2つの図形を用意しました。

2つの図形を用意

2つの図形を用意

「図1」の書式をコピーして、「図2」に貼り付けます。

「書式のみ」をコピーして貼り付け

図形の書式のみをコピーして貼り付けた結果

書式のみをコピーして貼り付けできました。

次の書式が貼り付けられています。

  • 文字色
  • 文字のサイズ
  • 文字の書式
  • 図形の背景色
  • 図形の枠線の色
  • 図形の枠線のサイズ

という感じです。

「図形のタイプ」や「図形の幅」、「図形の高さ」などは、貼り付けられません。

書式を貼り付けたい場合には、かなり便利です。

おわりに

この記事では、図形のコピーと貼り付けについて、ご紹介しました。

図形のコピーと貼付けは、「Copy」と「Paste」を使います。

ポイントは、貼り付ける際に、「セルを選択」して、「アクティブシートに貼り付ける」ところです。

クリップボードを使って、コピーして貼り付けるためですね。

VBAで図形の設定をするのは、ちょっと面倒なので、作っておいた図形を、コピーして使うのが便利な使い方です。

図形を扱う際は、図形のコピーと貼り付けを覚えておきましょう。

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

関連する記事から探す

カテゴリから探す

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

アーカイブから探す