VBAからGDI+を使う資料集
inet上の達人の方々から御教示いただいたコードを少しアレンジさせてもらっています(切り貼りとも言います)。
  1. ホーム
  2. GDI+
  3. 画像にshapeを合成して保存5


WS上の画像の上にshapeを書き加えて、画像ファイルとして保存(その5)

okwaveで、ワークシート上に貼り付けた画像の上にshapeを書き加えて、画像ファイルとして保存したいというお題が出され、
PrtScして、グラフィックソフトで保存するという至極真っ当なsolutionで閉じられてしまいましたが、
VBAでやる方法はないかと模索してみました。
その5.グラフをキャンバスに見立て、画像やAutoShapeを書き込んで
(元のグラフは覆い尽くしても問題なし)エクスポートメソッドで簡単に画像出力できる事を知った
Shift+編集から、画像のコピーでセル群の画像を取り込んで、グラフを覆い、画像出力なんて事もできる
ExportメソッドのFiltermode引数は指定しなくても、拡張子を判別して保存してくれるらしい。
写真の様な画像の場合、白枠が出来てしまうのが残念

後日談:画像貼付でなく、グラフの背景として読みこむと白枠が出来ない事を発見。これを利用したJPEGの圧縮を、 番外編に載せてあります。


Sub test()
  ActiveSheet.ChartObjects(1).Activate
  ActiveChart.Export "C:\graph.jpg"
End Sub

グラフをGraphSheetに作成後、グラフを削除してしまった状態でもExportは有効(埋め込みグラフも同様)。
その場合は、

Sub test2()
  ActiveChart.Export "C:\graph.jpg"
End Sub

だけでOK。jpg、gif、pngは有効だったが、emfはダメな様だ。