外部ファイルから画像を取りこむ方法です。
Imageオブジェクトの.Pictureプロパティーに
LoadPicture命令で画像をロードします。
こんな感じです。
UserForm1.Image1.Picture = LoadPicture(FileName)
FileNameには、外部画像へのパスを含めたファイル名を指定します。
表示できる画像は、.jpg、.bmp、.gifのようです。
.pngは駄目でした。
さらにすすめて簡易ビューワーを作成しました。かなりオススメ!
ダウンロードしてお試しください。
このビューワは自分と同じフォルダーにある画像を順に表示します。
クリックで次の表示を行います。
キモとなるプロシージャを2つ紹介します。
はじめは、受け渡された画像を表示するもの。
ポイントは、.AutoSizeを行いフォームの大きさを画像に合わせている点です。
こまかなところでは、
ファイル名をキャプションに保持して、次の画像検索に使用できるようにしています。
また、フォームをUnload-Loadして、画面の中央に配置させています。
そのほかNoChangeは、グローバル定義したboolean変数で、
application.visibleのon/offを行うコントロールに使用しています。
詳細はエクセルVBAで確かめてね。
Sub LoadImage(PathName As String, FileName As String)
NoChange = True
Unload UserForm1
NoChange = False
Load UserForm1
With UserForm1
.Caption = FileName
With .Image1
.Picture = LoadPicture(PathName & "¥" & FileName)
.AutoSize = True
If .Height + 20 > Application.Height Then
.Height = Application.Height - 50
End If
If .Width + 10 > Application.Width Then
.Width = Application.Width - 50
End If
UserForm1.Height = .Height + 20
UserForm1.Width = .Width + 4
End With
Application.Visible = False
UserForm1.Show
End With
End Sub
つぎは、クリックした時の振舞い方。
現在表示されている画像の次の画像を検索します。
Dir関数でファイル名を取得して、該当のファイルまで読み飛ばす方法を取っています。
また、ファイルの拡張子でのスキップを行っています。
Sub Click()
Dim FileName As String
start:
Dir (ThisWorkbook.Path & "¥")
With UserForm1
If .Caption <> ApliName & ApliVersion & ApliCopyright And _
.Caption <> "UserForm1" Then
Do Until FileName = .Caption
FileName = Dir()
Loop
End If
End With
FileName = Dir()
If FileName = "" Then
Dir (ThisWorkbook.Path & "¥")
FileName = Dir()
End If
Dim Extention As String
Extention = StrConv(Right(FileName, 4), vbLowerCase)
If Extention <> ".jpg" And _
Extention <> ".bmp" And _
Extention <> ".gif" Then
UserForm1.Caption = FileName
GoTo start
End If
LoadImage ThisWorkbook.Path, FileName
End Sub