エクセルのグラフをコピーして画像で別シートへ貼り付け、サイズを変更を自動で実行する方法です。
グラフ内に図形等を入れる場合は、作成方法によってグラフの選択方法が異なります。
目次
グラフオブジェクトのみの場合
グラフ内に図形等の挿入がない場合の例です。
操作内容
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
「グラフオブジェクトのみの場合」の例を変更した場合
ActiveSheet.Shapes(1).CopyPicture
「Shapes」はインディックスのほかに、名前で指定することもできます。
グラフと図形をグループ化すると「グループ化1」のように自動で名前が付けられます。
Shapes名は「Shapes("グループ化1")」です。「"グループ化1"」の名前は変更可能です。