関数・メソッド

セル範囲を画像としてコピーする【CopyPictureメソッド】【ExcelVBA】

構文

Object.CopyPicture(Appearance, Format, Size)

設定項目は以下参照。
指定したオブジェクトを画像データとしてコピーします。
Excel2019の[ホーム]タブ→[コピー]→[図としてコピー(P)]と同様の動作です。

設定項目 内容 詳細 省略
Object オブジェクトを指定。 Range 不可
Chart
ChartObject
ChartObjectsコレクション
Shape
OLEObject
OLEObjectsコレクション
Appearance コピー形式を指定。 xlScreen:画面表示に近い形式(既定値) 可能
xlPrinter:印刷時のイメージと同じ形式
Format ピクチャの形式を指定。 xlPicture:ピクチャ形式(既定値) 可能
xlBitmap:ビットマップ形式
Size ピクチャのコピーサイズを指定。
※グラフシートが対象の時のみ
xlScreen:画面表示のサイズ(既定値) 可能
xlPrinter:印刷時サイズ

CopyPictureメソッドのコードサンプル

Public Sub test()

    '■セル範囲を画像としてコピーする(引数あり)
    Range("A1:D15").CopyPicture Appearance:=xlScreen, Format:=xlPicture
    Paste Range("E1")

    '■セル範囲を画像としてコピーする(引数なし)
    Range("A1:D15").CopyPicture
    Paste Range("E1")

End Sub

注意点

  • CopyPictureメソッドが失敗し、以下エラーが発生する場合があります。
    実行時エラー1004’RangeクラスのCopyPictureメソッドが失敗しました。

上記エラーの場合、毎度出ない場合(何回かに一回失敗する/特定PCのみ発生する)であれば、
DoEventsで回避できるかもしれません。(コピーしている途中にVBAがペーストをしようとしているのを防ぐ為)

  • ビットマップ形式(xlBitmap)で画像をコピーすると、画像のファイルサイズが大きくなります。

関連記事

クリップボードの中身を貼り付ける【Pasteメソッド】※PasteSpecialがおすすめ
形式を選択して貼り付ける【PasteSpecialメソッド】
セルを切り取る【Cutメソッド】【ExcelVBA】
セルをコピーする【Copyメソッド】【ExcelVBA】

コメント