グラフオブジェクトの画像出力を探る
設置方法は、
https://youtu.be/MPmTub_ECmI?si=m-SX4A4oouNsy_vz&t=1734
↑を2倍速で見てください。
いつものマクロ記録で記録後 オブジェクトを探る
操作を記録する
Sub Macro1() ' ' Macro1 Macro ' ' Range("E2").Select ActiveSheet.ChartObjects("グラフ 1").Activate ActiveSheet.ChartObjects("グラフ 1").Activate Range("C9").Select End Sub
と、記録される。
※残念、"図として保存"は、記録されないのか・・・
でも、
ActiveSheet.ChartObjectsがわかるので、
いつもの確認
? ActiveSheet.ChartObjects.count
1
? ActiveSheet.ChartObjects(1).name
Chart 3
? typename(ActiveSheet.ChartObjects(1))
ChartObject
ChartObjectは外観で中身は.Chartを見る
Dim objChart As ChartObject
と書いてから、
F1のヘルプかな
>ChartObject オブジェクトは、 Chart オブジェクトのコンテナーとして機能します。
Worksheets("Sheet1").ChartObjects(1).Chart
などでアクセスする
Dim objChart As Excel.Chart を探り、
Chart.Export メソッドを発見する
Dim objChart As Excel.Chart を探ると
https://learn.microsoft.com/ja-jp/office/vba/api/excel.chart(object)
より
Chart.CopyPicture おっコレかな?と思ったが、これは、クリップボードだった。※将来のメモ
Chart.Export メソッド (Excel)
https://learn.microsoft.com/ja-jp/office/vba/api/excel.chart.export
式。エクスポート (FileName、 FilterName、 Interactive)
例
次の使用例は、グラフ 1 を GIF ファイルとしてエクスポートします。
Worksheets("Sheet1").ChartObjects(1) _
.Chart. Export _
FileName:="current_sales.gif", FilterName:="GIF"
ループ処理で連続実行してみた
A列 B列 に都道府県のデータ
1 北海道
2 青森県
3 岩手県
・
・
46 鹿児島県
47 沖縄県
①空白のグラフエリアを追加して、背景画像としてベース画像の追加
②C1とリンクしたテキストボックス 番号セット用 を設置
③D1とリンクしたテキストボックス 都道府県名セット用 を設置
上記をグラフにリンクさせて事前準備して、
下記のマクロを実行する。
Sub test240622_グラフからJPGを作成() Dim y As Long Dim strFNAME As String For y = 1 To 47 '47都道府県のループ Range("C1") = Cells(y, "A") Range("D1") = Cells(y, "B") 'ファイル名を作る ブックの位置\A列+".jpg" strFNAME = ThisWorkbook.Path & "\" & Cells(y, "A") & ".jpg" '単純にChart.Export で 出力する ActiveSheet.ChartObjects(1).Chart.Export _ Filename:=strFNAME, FilterName:="JPG" Next End Sub
仕組みは、
空のグラフを作成後、背景に画像をセットして、
グラフ内のテキストボックスとセルをリンクする
マクロで、
セルに都道府県名を代入すると、
グラフ内のテキストボックスにも表示される(リンクされているので)
グラフをChart.ExportでJPGファイルへ出力している
そんな仕組みです。
設置方法は、
https://youtu.be/MPmTub_ECmI?si=m-SX4A4oouNsy_vz&t=1734
↑を2倍速で見てください。
この動画は、1つの画像にデータを差し込み・セットして、出力です
グラフエリアを強引に使っているので、
画像の解像度など、
課題や使っていくと問題点があります。
※暇なとき、動画を頭
https://youtu.be/MPmTub_ECmI
から見てもらえると嬉しいです。
開発のヒントとなれば幸いです。