シートの選択範囲だけのキャプチャーが欲しい

Windowsにはいくつかの画面キャプチャー取得方法があります。

1. PrintScreenキー
全てのディスプレイのスクリーンショットがクリップボードに保存されます。

2. Windowsキー + Shift + S(Snipping Toolでの部分キャプチャーのショートカット)
Windows付属の画面キャプチャーツールのショートカット。画面が少し暗くなりカーソルが十字キーになるのでドラッグして撮りたい部分を選択するとクリップボードに保存されます。

3. Snipping Tool
Windows付属の画面キャプチャーツール。スタート → アプリ → Windowsアクセサリ → Snipping Tool。新規作成ボタン→範囲ドラッグするとクリップボードに保存されます。

4. Alt + PrintScreenキー
アクティブウィンドウだけをクリップボードに保存します。

ウィンドウのキャプチャーを撮りたい場合はこれらの方法で大体対応できます。

ただ、Excelのキャプチャーを撮る場合に、厳密にセルの罫線に合わせて撮る必要があったりします

この記事では、Excelシートの選択範囲をスクリーンショットとしてクリップボードに保存する方法を紹介します。また、それを拡張してPNG画像として保存する方法も紹介します。セル範囲にオートシェイプなどの図がある場合はそれも画像として保存します。

リモートワークなどでTeamsなどに貼り付ける場合にも手っ取り早く使えます。

Excelの選択範囲をクリップボードに保存するコード

以下のコードを実行するとExcelの選択範囲をスクリーンショットとしてクリップボードに保存します

選択範囲とは、セルの範囲選択だけでなく、オートシェイプを選択している場合も対象になります。

なお、Ctrlキーを使って選択範囲を複数にしている場合はエラーになります。それに対応するのが面倒なのとそういう使い方でキャプチャーを撮ることは無いと思いますので対応してません。

SaveSelectionAsClipBoard関数実行後はクリップボードに選択範囲が画像として保存されているため、Ctrl + Vで各種アプリケーション(Wordなど画像を扱えるアプリ)に張り付けることができます。

コードで何をやっているかはコメントの通りで、クリップボードに保存しているだけです。

実行結果
1. 以下のようにシートに書いてあるとします。上のコードをそのまま貼ってます。

2. 保存したい範囲を選択します。ここではC2:E7を選択しています。

3. SaveSelectionAsClipBoard関数を実行します。特にメッセージなどは出ません。

4. 貼り付けたいアプリでCtrl + Vします。ここでは同じシートのB10セルに貼り付けています。画像として貼り付けられます。

セル範囲をクリップボード保存+PNG画像に保存するコード

以下のコードは上のコードを拡張して、Excelのセル範囲をスクリーンショットとしてクリップボードとPNG画像の両方で保存します。

上のコードと異なり、こちらは「セル選択範囲」限定にしてます。オートシェイプ選択時はエラーになります。

PNG画像はブックと同じフォルダにcapture.pngというファイル名で保存されます。既存の場合は上書きします。

クリップボードの内容を一時的にグラフにセットし、それをPNG画像として保存しています。