Excel

グラフをコピーして画像で貼り付け後にサイズ変更

2021-09-29

エクセルのグラフをコピーして画像で別シートへ貼り付け、サイズを変更を自動で実行する方法です。

グラフ内に図形等を入れる場合は、作成方法によってグラフの選択方法が異なります。

グラフオブジェクトのみの場合

グラフ内に図形等の挿入がない場合の例です。

操作内容

2つのシートがあります。

  1. 貼付先:グラフの画像を貼り付けるシート
  2. グラフ:コピーするグラフがあるシート

シート「グラフ」にあるグラフをコピーします。

グラフ

シート「貼付先」のセルA1に画像として貼り付け、サイズを変更します。

貼付先

サンプルコード

Sub sample1()
   Dim sWS As Worksheet: Set sWS = ActiveSheet
   Dim hWS As Worksheet: Set hWS = Worksheets("貼付先")
   
   sWS.ChartObjects(1).CopyPicture 
   hWS.Activate   
   With hWS
        .Cells(1, 1).Select
        .Paste
      With Selection.ShapeRange
         .LockAspectRatio = msoFalse
         .Height = 100
         .Width = 200
      End With
   End With
End Sub  

シート「貼付先」をアクティブにしない方法です。さらに貼り付けた図の名前を「図」に変更します。

Sub sample2()
   Dim sWS As Worksheet: Set sWS = ActiveSheet
   Dim hWS As Worksheet: Set hWS = Worksheets("貼付先")
   Dim shp As Shape

   sWS.ChartObjects(1).CopyPicture
   
   With hWS
        .Paste Range("A1")
        Set shp = .Shapes(1)
        With shp
            .Name = "図"
         .LockAspectRatio = msoFalse 
            .Height = 100
            .Width = 200
        End With
    End With
   Set shp = Nothing
End Sub

連続で貼り付ける場合は、指定した位置からずれることがあります。

VBAで画像(図形・オートシェイプ)の位置をずらさずに配置する

グラフ内に図形等がある場合

グラフ内に図形等を挿入する場合は、挿入方法で扱いが変わります。

図形等もグラフとして扱いたい場合

(1)グラフを選択します。

グラフ

(2)グラフがアクティブな状態で図形等と挿入します。

図形挿入

この挿入方法で「sample1」を実行すると図形も一緒に貼り付けできます。

貼付後

グラフをアクティブにせず図形作成した場合

グラフをアクティブにせず、図形(黄色)を作成した場合は、「ChartObjects」でコピーすると図形は除外されます。

図形があるグラフ

「シート名.ChartObjects(1).CopyPicture」を変更します。

アクティブシートの場合

ActiveSheet.Shapes(1).CopyPicture

「グラフオブジェクトのみの場合」の例を変更した場合

sWS.Shapes(1).CopyPicture

「Shapes」はインディックスのほかに、名前で指定することもできます。

グラフと図形をグループ化すると「グループ化1」のように自動で名前が付けられます。

グループ化したshapes

Shapes名は「Shapes("グループ化1")」です。「"グループ化1"」の名前は変更可能です。

-Excel
-