12
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Excelでクリップボードにコピーした情報はImageに変換できる

Posted at

Excelでクリップボードにコピーした情報は、Windows PowerShellGet-ClipboardコマンドレットのFormatオプションでImageを指定するとImageとして取得できる事をしりました。

エクセルでコピー処理を行うと、クリップボードには書式情報等含めて引き渡される? ため、これがImageに変換できるって話な気がします。

この動きについてちょっと確認してみます。

Get-ClipboardのFormatオプションはWindows PowerShellにしか存在しない

今回利用するGet-Clipboardコマンドレットについては、PowerShellのバージョンが関係してきます。

Get-ClipboardコマンドレットにFormatオプションが用意されているのは、Windows PowerShellのみとなり、クロスプラットフォームなPowerShellにはFormatオプションは用意されていません。

Feature Request: Restore -Format option in Get-Clipboard #12290

クロースプラットフォームなPowerShellGet-Clipboardコマンドレットはあくまでプレンテキストな情報を取り扱うコマンドレットとなるようです。

Windows PowerShellで試してみる

image.png

上記のようにテーブルをCTRL - Cからクリップボードにコピーした状態で下記のコマンドを実行すると、画像イメージがc:\temp\excel.pngに保存されます。

$(Get-Clipboard -Format Image).Save("c:\temp\windows-poershell-excel.png")

Excelでコピー時にクリップボードに渡された情報を Clipboard.ContainsImage メソッド で確認してみると、Trueと返却されるため。

Excelからクリップボードに引き渡される情報は、Imageに変換できる形式のもののようです。

# エクセルでコピーしたあとに下記のコマンドを実行するとTrueが返却される。
# ContainsImage()メソッドは Bitmap 形式のデータ、またはその形式に変換できるデータがクリップボードに存在するかどうかを示す

Add-Type -AssemblyName System.Windows.Forms
[Windows.Forms.Clipboard]::ContainsImage()

【余談】PowerShell 7で実行したい場合

PowerShell 7 では、2023年2月現在。

Get-ClipboardFormatオプションは実装されておらず、プレーンテキストのみを扱うようなコマンドレットとなっています。

このため、Excelでクリップボードに渡された情報をイメージとして出力するためにはGet-Clipboardコマンドレットは利用できず。下記のように.NETを利用することで出力できます。

$clip = $([System.Windows.Forms.Clipboard , System.Windows.Forms]::GetDataObject())
if ( $clip.ContainsImage() ) {
    [System.Drawing.Bitmap]$clip.getimage().Save("c:\temp\excel.png", [System.Drawing.Imaging.ImageFormat]::Png)
}

そもそもExcelには図として保存がある

Excelだとそもそも`図としてコピー`という機能があります。

image.png

上記のようにテーブルを図としてコピーすると、下記のような画像イメージをクリップボードにコピーする事ができます。

image.png

ExcelってImageに変換できる形式でなんか持ってるような気がします。

総評

Excelでクリップボードにコピーされる情報はImageに変換できるようです。

Excelにはそもそも図としてコピー機能があるため、このような情報をスクリプトとして何か利用用途があるかといわれると微妙ですが。

Excel上でコピーした時に渡されるクリップボードのデータってこんな感じなんだって忘備録。

12
7
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?