- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
右クリックして「コピー」で画像保存されるので、画像ソフトを開いて「貼り付け」ればOK
その他の回答 (2)
- mitarashi
- ベストアンサー率59% (574/965)
http://okwave.jp/qa/q5124395.html のNo.5にKenKenSPさんのコードがありますが、これはセルにも適用可能です。 セル範囲に対応してSub Sampleを次の様に改造すると良いでしょう。 なお、C:ドライブ直下に書き出すのは時代に合わない(エラーになる)ので、デスクトップに書き出しています。 また、拡張子で判断して、PNGやTIFでも書き出せるコードになっています。 もともとC/C++から使用するWindows APIをVBAで使用するためのお約束で、ごちゃごちゃしておりますが、本質問の回答No.2のアドインでやっている事も同等と思います。 Sub Sample() Dim hBmp As OLE_HANDLE ' GDI+ を初期化する If GDIplus_Initialize() = False Then MsgBox "GDI+ を初期化できません", vbCritical Exit Sub End If ' 選択範囲をクリップボードにコピーする Selection.CopyPicture xlScreen, xlBitmap ' Bitmap のハンドル(メモリ上のアドレスみたいなもの)を取得 hBmp = pvGetHBitmapFromClipboard() ' 保存(JPEG でクオリティー90の場合) If SaveImageToFile(hBmp, GetDesktopPath & "\sample.jpg", "jpg", 90) = False Then MsgBox "保存に失敗", vbCritical Else MsgBox "保存に成功", vbInformation End If ' GDI+ を終了させる(必ず呼び出すこと) Call Gdiplus_Shutdown End Sub Private Function GetDesktopPath() As String Dim wScriptHost As Object, strInitDir As String Set wScriptHost = CreateObject("Wscript.Shell") GetDesktopPath = wScriptHost.SpecialFolders("Desktop") Set wScriptHost = Nothing End Function