関数・メソッド

セル範囲を画像としてコピーする【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】

コメント

タイトルとURLをコピーしました