■96561 / inTopicNo.3) |
Re[1]: Excelのワークシート内に画像をユーザーフォームに表示 |
□投稿者/ 魔界の仮面弁士 (2939回)-(2020/12/17(Thu) 11:23:49)
|
■No96559 (エイ さん) に返信 > Excelのワークシート内に画像をユーザーフォームに表示させるにはどうしたらいいのでしょうか?
VBA 的に手っ取り早いのは、シートにある画像を、 [開発]リボンの [コントロール]-[挿入]-[ActiveX]-[イメージ] に変更することです。
この場合、ユーザーフォームへの反映が一行で済みます。
Set Me.Image1.Picture = ThisWorkbook.Sheets("Sheet1").OLEObjects("Image1").Object.Picture
しかし通常の Picture の場合は、取り出す手段がクリップボードしかありません。
Dim pic As Excel.Picture Set pic = ThisWorkbook.Sheets("Sheet1").Pictures("Picture 1") Call pic.CopyPicture(xlScreen, xlBitmap)
さらに問題なのは、クリップボードから画像形式を直接取り出す方法が用意されていない点です。
Excel VBA で使える MSForms.DataObject はテキスト形式のクリップボードデータにしか対応していませんし、 VB と違って、Clipboard オブジェクトもありません。
そのため、GetClipboardData などといったクリップボード API 頼みのコードになります。 さらに、それを OLE の Picture 形式に変換するために、OleCreatePictureIndirect API も必要となるでしょう。 https://www.mrexcel.com/board/threads/refer-to-oleobject-picture-in-worksheet-from-vba.650707/
|
|