2017-01-05 44 views
0

Excelシートで範囲をPowerShellスクリプトでコピーする方法を知りました。私はその出力を後でJPEGに変換する変数に書きました。 私はExcelアプリケーション& Windows.Forms.Clipboardメソッド(GetImage())でこれを実行しました。クリップボードの画像をJPEGに変換する

今私の質問は、PowerShellスクリプトで現在のクリップボードをJPEGに変換する方法です。

saveメソッドでクリップボードを変換することはできませんでした。 私の最後のコマンドは次のように見えた。これらの3つのソリューションの

  1. $clipboard.Save("C:\Data\picture.jpeg")
  2. $clipboard.Save(("C:\Data\picture.jpeg", "jpeg"))
  3. $clipboard.Save("C:\Data\picture.jpeg", "jpeg")

どれも働きました。私はいつも変数がnullであるというエラーを受けました。

私はPowerShellバージョン5を使用することも許可されていません。このため、私もコマンドレットを使用することはできません。Get-Clipboard & Set-Clipboard

クリップをペイントに貼り付けて手動で保存することは可能ですが、PowerShellスクリプトを使用して自分では行いたくありません。クリップボードから画像を取り込むための

+1

こんにちは、あなたは '$ clipboard'を宣言する方法とあなたが何を入れているかを私たちに見せてもらえますか?[http://stackoverflow.com/posts/41491456/edit] – sodawillow

+0

これが達成しようとしていることに役立つかどうかわからない: http://stackoverflow.com/questions/32136985/vba-copy-cells-paste-as-a-picture-then-save-as-a-画像 – Thom

答えて

1

使用[System.Windows.Forms.Clipboard::GetImage()、正しい形式のパラメータで画像オブジェクトのSave()メソッドを呼び出します。クリップボードにアクセスするためにあなたがSTAモードで動作している必要があります仕事をすること

Add-Type -AssemblyName System.Windows.Forms 
Add-Type -AssemblyName System.Drawing 

$file = 'C:\path\to\output.jpg' 

if ([Windows.Forms.Clipboard]::ContainsImage()) { 
    $img = [Windows.Forms.Clipboard]::GetImage() 
    $img.Save($file, [Drawing.Imaging.ImageFormat]::Jpeg) 
} else { 
    Write-Warning 'No image in clipboard.' 
} 

注意(シングルスレッドアパートメント):Clipboardクラスのみがシングルスレッドアパートメント(Sに設定されたスレッドで使用することができ


TA)モードである。このクラスを使用するには、メインメソッドにSTAThreadAttribute属性が設定されていることを確認してください。

+0

私は仕事でこれを試してみます。 Ansgarに事前に感謝します! – Robin

+0

動作しません。 $ eがnullであるというエラーが常に出ます。 – Robin

+0

''## 1 ## $ rng = $ Worksheet.range(" A2:O41 ") $ pic = $ rng.CopyPicture(1,1) $ e = [Windows.Forms.Clipboard] :: GetImage () $ e.Save($ FILE1、[Drawing.Imaging.ImageFormat] :: JPEG) ## 2 ## $ RNG = $ Worksheet.range( "A42:O124") $ PIC = $ $ e = [Windows.Forms.Clipboard] :: GetImage() $ e.Save($ file2、[Drawing.Imaging。ImageFormat] :: Jpeg) ' – Robin

関連する問題