
動画でExcel フォームに画像を表示するにはどうするの?
動画版「ユーザーフォーム講座」です。
今回はユーザーフォームに画像を表示するケースを考えていきます。
ユーザーフォームに画像を表示するといっても
ユーザーフォームの土台となるフォームに表示するのではなくて
イメージコントロールという画像専用のコントロールがあるので
それを使って表示するという内容です。
フォームに画像を表示するとフォームの印象はどのように変わるでしょうか?
基本的には同じユーザーフォームですが、画像があるとないとでは印象が違います。

では、フォームに画像を表示するためのImageコントロールはどのように配置して、どんなコードを書けばよいのかを紹介します。

ツールボックスからImageコントロールを選択して、Formの上で、左上にしたいポイントをクリックして、右下の位置でクリックするとImageコントロールが挿入されます。
サイズはドラッグして調整することができます。

画像が固定でいいのなら、Imageコントロールのプロパティから、Pictureを指定することができます。

Pictureプロパティの右にあるボタンをクリックして画像を指定します。
指定できる画像は、ビットマップ(*.bmp, *.dib)、GIFイメージ(*.gif)、JPEGイメージ(*.jpg)、メタファイル(*.wmf, *.emf)
アイコン(*.ico, *.cur)です。

フォームに画像が表示されました。Imageコントロールのサイズを調整しても、画像サイズは変更されません。
画像は予めサイズをフリーソフトなどを使って変更しておくと良いです。

Pictureプロパティに直接画像アドレスを入力するのでは、変更などが大変ですから、 UserForm_Initializeで画像を表示するようにコードを書くこともできます。

Private Sub UserForm_Initialize()
Dim imgpath As String
imgpath = ThisWorkbook.Path & "\img\sf_001.jpg"
Image1.Picture = LoadPicture(imgpath)
End Sub
画像のおさまりが悪い時は、予め画像のサイズを調整しておくか、 もしImageコントロールのサイズを変更できるなら、サイズを変更することで調節することもできます。

Imageコントロールのサイズを変更して、フォームを起動しました。

さて、もう少し実用的な画像表示の例を紹介しましょう。
こちらのフォームは、ユーザーフォーム基礎編の3回で使用した読書記録を作成するフォームです。
そのフォームに本の表紙画像を表示させてみましょう。

ユーザーフォームを起動し、画像名を入力します。この時拡張子は要りません。 コードの方で拡張子を追加するように書いています。表示ボタンで画像を表示します。

上記のコードが以下になります。画像があるフォルダの場所は、使用する環境で変更する必要があります。

Private Sub btn_show_Click()
If Not txt_imagename.Text = "" Then
Dim imgname As String
imgname = ThisWorkbook.Path & "\img\re\" & _
txt_imagename.Text & ".jpg"
Image1.Picture = LoadPicture(imgname)
End If
End Sub