• ベストアンサー

ユーザーフォームに画像を表示

Excel2003のユーザーフォームに関しての質問です。 ユーザーフォームに画像を表示させるコントロールがあるのですが そのコントロールにシート内にある画像を表示させることは可能なのでしょうか。 (フォルダなどにある画像を表示させることは出来ます) もしそのような方法があるのでしたら 簡単なコードなどを教えていただけたらと思います。 よろしくお願いいたします。

  • tunan
  • お礼率55% (10/18)

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.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

tunan
質問者

お礼

コードまで書いていただきありがとうございます。 基本のコードすら考え付かなかったので助かりました。 あとは、これをもとに少し加工すれば 解決できそうな気がします。 本当にありがとうございました。

その他の回答 (4)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.4

#3 の回答者です。 >そのコントロールにシート内にある画像を表示させることは可能なのでしょうか。 >(フォルダなどにある画像を表示させることは出来ます) あっ、#3の回答、読み間違えました。すみません。 簡単なコードというところに目がいってしまいました。 一旦、画像をクリップボードに入れて、それを、ChartObject に入れて出力するか、HTMLにして取り出すか、どちらかだったような気がします。Win32APIの場合は、クリップボードから取り出すのかな? しばらくやったことがないのと、需要がないので忘れました。誰の回答をお待ちになってください。 いずれにしても、簡単なコードではなかったと思います。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

こんにちは。 初歩的なコードですが、コマンドボタンで選べるように作りました。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/17068)
回答No.2

>フォルダなどにある画像を表示させることは このことは、ファイルになった画像を言っていると思うが、ファイルから画像データを読んで表示するのが基本(前提)のつくり。 >シート内にある画像を表示させることは可能なのでしょうか この意味があいまい。 (1)シート内にある画像でも、挿入したファイル名が判っていれば質問にも値しない。 (2)それ(ファイル名)が判らない (3)(1)(2)以外であれば、質問で言う画像とはどういうものを指すのか。 見えているシート画面の一部とか。その意味をはっきりさせないと答えられないのでは。 ファイルでないものはファイル化(ペイントなどのソフト・特別ソフトを使って)しないとだめと思う。 >簡単なコードなどを教えていただけたらと思います 簡単なはずが無い。APIとかを駆使したりしないとVBAの範囲では無理でしょう。

tunan
質問者

お礼

自分なりに詳しい説明を記載したつもりだったのですが まだまだ説明不足だったみたいで反省しております。 APIというキーワードをもとにもう少し調べなおしてみます。 貴重なご意見ありがとうございました。

  • lark_0925
  • ベストアンサー率63% (37/58)
回答No.1

クリップボードの画像をStdpictureに変換するコード例が 以下のURLに掲載されてますから、これを参考にしてみてください。 http://www.vbalab.net/vbaqa/c-board.cgi?cmd=one;no=46923;id=excel

tunan
質問者

お礼

コード自体はよくわからなかったのですが そのまま貼り付けて、分かる範囲で加工したら 目当てのものが出来ました。 自分でも、色々検索してみたのですが そういう情報は見つけられませんでしたので まだまだ検索方法が甘いと再認識させられました。 今回は本当にありがとうございました。

関連するQ&A

  • ユーザーフォームを表示されないようにしたい

    Vista excel2007 でマクロ作成中の超初心者です。 A、B、Cのブックがあります。Bブックのみマクロをワークシートに貼り付けています。 1)Aブック(マクロ記録用)の中にある、Aコマンドボタンを押すと  BブックのBシートにジャンプします。ジャンプと同時に、Bユーザーフォームを 表示しています。 2)そしてBシートには、フォームコントロールを貼り付けており、ここをクリックするとCブックCシートに飛びます。 3)ところが、CシートにはBユーザーフォームが残ったままです。このフォームを  表示されないようにしたいのです。 4)Bシートのフォームコントロールには、次のコード記述をしてあります。       Sub Cブック Cシートへ() Dim wb As Workbook Dim ws As Worksheet Dim sh As Worksheet Dim i As Long ChDrive ThisWorkbook.Path ChDir ThisWorkbook.Path On Error Resume Next '開いて作業中の場合。 Set wb = Workbooks("CCC.xls") On Error GoTo 0 If wb Is Nothing Then Set wb = Workbooks.Open(ThisWorkbook.Path & "\CCC.xls") End If Worksheets(1).Select End Sub どうかよろしくお願いします。 

  • ユーザーフォームの表示について

    Aというブックを選ぶと車というシートが一番最初にあるのですが、 これをvbaでshowと記述しても一旦他のシートを選んでからでないと 表示されません。 ブックを開いた瞬間にユーザーフォームを表示したいのですが、何か方法はあるでしょうか? どうしてもうまくいきません。。 やりたいことは、ブックを開いたら、フォーム(自分で作ったユーザーフォーム)を開いたときから表示させたいのです。知ってる方がいたら教えてくれると助かるのですが。

  • ExcelVBA ユーザーフォームのコードがない

    いつもお世話になっています。 Excel vbaで質問させてください。 あるExcelブック(test.xlsとします)を開くと、ユーザーフォーム(と思う)が表示されます。 (この時、Excelアプリケーションは「表示」されていてモーダルの状態です) ユーザーフォームで日付を選び、「これでOK」ボタンをクリックすると 新規ブックとして「text_0614.xls」が出来て、これが表示ブックとなります。 (元のtest.xlsは閉じられています) vbaコードの修正がしたくて、VBEから作業しようとしたところ ユーザーフォームモジュールも、標準モジュールも何も見当たりません。 Thisworkbookのイベントも何も書いてありません。 プロジェクトにパスワードがかかっているのかと思いましたが、もしそうだとしても プロジェクトウィンドウに、「フォーム」というフォルダは表示されると思いますし、 また、ダブルクリックしてもパスワードを求められることがありませんので パスワードがかかっているようには見えません。 これはExcelVBAのユーザーフォームじゃないのでしょうか?(VB?) または、もし、この「フォーム」フォルダごと、ユーザーに見せないやり方があるのでしょうか? どなたかご存知の方いらっしゃいましたらご教示ください! WinXP SP3 Excel2003 SP3 使用です。 どうぞよろしくお願いします。

  • エクセルで貼り付けたオブジェクトの画像をユーザーフォームのイメージコントロールで表示する方法

    エクセルで画像をオブジェクトで作り、ユーザーフォームに作ったイメージコントロールに表示する方法はないでしょうか? 条件によってイメージの画像が切り替わるようにしたいのですが。 別の画像ファイルから読み出すことはあまりしたくありません。あくまでエクセルの中にある画像からフォームのイメージに表示したいのですが。何かいい方法があれば教えてください。 回答よろしくお願いします。

  • ExcelVBAでユーザーフォーム表示について

    ユーザーフォームを表示にセルに文字を書き込んだり する事はできないのでしょうか? また、ユーザーフォーム自体を、常に画面手前に表示する方法はありますか? コードの記述方法もできましたらお願いします。 よろしくお願いします。

  • ユーザーフォームの表示

    マクロでユーザーフォームを作成しました それをワークシート上に表示させたいのですが方法がわかりません ネットで調べてみるとShowメソッドを使うとありますがやり方がイマイチわからないのです。 どなたかわかりやすく解説して下さい

  • Excel VBAのユーザーフォームについて

    今ユーザーフォームのリストボックスにデータ一覧を表示させ、 データを選択するとExcelのシート上にリストボックスで選んだデータを表示させるプログラムを作っています エクセルにデータを表示させる際に、一緒に画像を表示させたいのですが そのような事は可能でしょうか? また方法があれば教えてください

  • ExcelVBA フォーム表示中にワークシートの更新

    お世話になります。 プロパティがあったかどうかが探せなくての質問です。 ユーザフォーム表示中に、Excelブック(ワークシート)の操作ができるようにしたいのですが、そういったプロパティ?コントロールはどこでしたらいいのでしょうか? ご存知の方、教えてください。 Excel2000

  • ユーザーフォームが表示前にエラーになります。

    お世話になります。 Excelのシート上にコマンドボタンを配置して それをクリックするとユーザーフォームが表示されるようにしたいのですが、下記のコードだと「フォーカスがありません」と1行目でエラーで止まってしまいます。 解決方法を教えてください。 Private Sub コマンドボタン_Click() ユーザーフォーム.Show End Sub よろしくお願いします!

  • エクセル ユーザーフォーム ワークシート表示

    現在,マクロを勉強中です。 ユーザーフォームに,3つのラベルを設定し,それぞれのラベルをクリックすると,「初期設定」または「4月」または「5月」のシートを表示し,ユーザーフォームは消すというものを試みています。 シート名は,「初期設定」「4月」「5月」です。 1つめのラベルをクリックしたときに実行されるコードは Sub Label1_Click() Sheets("初期設定").Activate Unload Me End Sub で設定したのですが,ユーザーフォームが消えるのですが,何のシートも表示されません。 実行したいことだけを考えると,ハイパーリンクでも可能なのですが,勉強もかねて質問させていただきたいと思います。 どこか修正すべきコードがありましたらご教授くださるとありがたいです。

専門家に質問してみよう