- ベストアンサー
ユーザーフォームに画像を表示
Excel2003のユーザーフォームに関しての質問です。 ユーザーフォームに画像を表示させるコントロールがあるのですが そのコントロールにシート内にある画像を表示させることは可能なのでしょうか。 (フォルダなどにある画像を表示させることは出来ます) もしそのような方法があるのでしたら 簡単なコードなどを教えていただけたらと思います。 よろしくお願いいたします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは。 私の後に、誰も書いてなかったようで、簡単なものを公開しておきます。Image オブジェクトにわずかに、枠が入ってしまいます。 条件としては、Picture はひとつであることです。複雑なシートの構造の時は、コードを考えて直してください。 Private Sub CommandButton1_Click() Dim pic As Object Dim chrt As Chart Dim wd As Double Dim ht As Double With Me.Image1 ht = .Height wd = .Width .PictureAlignment = fmPictureAlignmentTopLeft .PictureSizeMode = fmPictureSizeModeZoom End With With ActiveSheet Set chrt = .ChartObjects.Add(1000, 1000, wd, ht).Chart .Pictures(1).Copy chrt.Paste .ChartObjects(1).Chart.Export "tmp1.jpg", "jpg" Me.Image1.Picture = LoadPicture("tmp1.jpg") .ChartObjects(1).Delete Kill "tmp1.jpg" End With End Sub
その他の回答 (4)
- Wendy02
- ベストアンサー率57% (3570/6232)
#3 の回答者です。 >そのコントロールにシート内にある画像を表示させることは可能なのでしょうか。 >(フォルダなどにある画像を表示させることは出来ます) あっ、#3の回答、読み間違えました。すみません。 簡単なコードというところに目がいってしまいました。 一旦、画像をクリップボードに入れて、それを、ChartObject に入れて出力するか、HTMLにして取り出すか、どちらかだったような気がします。Win32APIの場合は、クリップボードから取り出すのかな? しばらくやったことがないのと、需要がないので忘れました。誰の回答をお待ちになってください。 いずれにしても、簡単なコードではなかったと思います。
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。 初歩的なコードですが、コマンドボタンで選べるように作りました。Image オブジェクトのプロパティの調整などをして、上手に入るようにしてください。 Private Sub CommandButton1_Click() Dim fn As Variant Dim mPath As String '現在のユーザーのマイピクチャを探す mPath = CreateObject("Shell.Application").Namespace(&H27).Self.Path ChDir mPath fn = Application.GetOpenFilename("画像 (*.jpg; *.gif; *.bmp), *.jpg; *.gif; *.bmp", , "画像の選択") If VarType(fn) = vbBoolean Or fn = "" Then Exit Sub '画像呼び出し Me.Image1.Picture = LoadPicture(fn) End Sub
- imogasi
- ベストアンサー率27% (4737/17069)
>フォルダなどにある画像を表示させることは このことは、ファイルになった画像を言っていると思うが、ファイルから画像データを読んで表示するのが基本(前提)のつくり。 >シート内にある画像を表示させることは可能なのでしょうか この意味があいまい。 (1)シート内にある画像でも、挿入したファイル名が判っていれば質問にも値しない。 (2)それ(ファイル名)が判らない (3)(1)(2)以外であれば、質問で言う画像とはどういうものを指すのか。 見えているシート画面の一部とか。その意味をはっきりさせないと答えられないのでは。 ファイルでないものはファイル化(ペイントなどのソフト・特別ソフトを使って)しないとだめと思う。 >簡単なコードなどを教えていただけたらと思います 簡単なはずが無い。APIとかを駆使したりしないとVBAの範囲では無理でしょう。
お礼
自分なりに詳しい説明を記載したつもりだったのですが まだまだ説明不足だったみたいで反省しております。 APIというキーワードをもとにもう少し調べなおしてみます。 貴重なご意見ありがとうございました。
- lark_0925
- ベストアンサー率63% (37/58)
クリップボードの画像をStdpictureに変換するコード例が 以下のURLに掲載されてますから、これを参考にしてみてください。 http://www.vbalab.net/vbaqa/c-board.cgi?cmd=one;no=46923;id=excel
お礼
コード自体はよくわからなかったのですが そのまま貼り付けて、分かる範囲で加工したら 目当てのものが出来ました。 自分でも、色々検索してみたのですが そういう情報は見つけられませんでしたので まだまだ検索方法が甘いと再認識させられました。 今回は本当にありがとうございました。
お礼
コードまで書いていただきありがとうございます。 基本のコードすら考え付かなかったので助かりました。 あとは、これをもとに少し加工すれば 解決できそうな気がします。 本当にありがとうございました。