マイピクチャ内の画像をシート上に表示してみます。
エクセルVBA豆知識 ①ファイル名一覧の作成 で作成したファイルを開きます。
準備
C3セルに入力規則を設定して、ファイル名を選択できるようにする。
リボン データの中央右側にある入力規則
=>設定で リスト 元の値には A列にファイル名を適当に選択してOK
C5セルを選択するとドロップダウンリストからファイル名が選択できれば完了です。
実例 1 C3セルで選択したファイルの画像を E2~I26の範囲に表示する。
今回は、WorkSheetの Changeイベントを利用します。
1、シート名のタブを右クリック、コードの表示をクリックして、VBエディターを起動
2、以下を張り付けて閉じます。
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$C$3" Then
Dim shp As Shape
For Each shp In ActiveSheet.Shapes
If shp.Name Like "Pic*" Then shp.Delete
Next shp
If Target.Address = "$C$3" Then
Dim shp As Shape
For Each shp In ActiveSheet.Shapes
If shp.Name Like "Pic*" Then shp.Delete
Next shp
Dim T, L, H, W, FName
Range("E2:I26").Select
T = Selection.Top
L = Selection.Left
H = Selection.Height
W = Selection.Width
L = Selection.Left
H = Selection.Height
W = Selection.Width
FName = ThisWorkbook.Path & "\" & Range("C3").Value
ActiveSheet.Pictures.Insert(FName).Select
Selection.Top = T
Selection.Left = L
Selection.Height = H
Selection.Width = W
ActiveSheet.Pictures.Insert(FName).Select
Selection.Top = T
Selection.Left = L
Selection.Height = H
Selection.Width = W
Target.Activate
End If
End Sub
End If
End Sub
3、C3セルのフォイル名を変更したら、そのファイルの画像がセルの大きさで表示されればOKです。
If Target.Address = "$C$3" Then は、C3セルに変更があった場合のみ以下を実行
For Each shp In ActiveSheet.Shapes
If shp.Name Like "Pic*" Then shp.Delete
Next shp 最初に、画像があれば全て削除します。
If shp.Name Like "Pic*" Then shp.Delete
Next shp 最初に、画像があれば全て削除します。
FName = ThisWorkbook.Path & "\" & Range("C3").Value
ActiveSheet.Pictures.Insert(FName).Select
ActiveSheet.Pictures.Insert(FName).Select
画像を張り付ける部分です。
Selection.Top = T
Selection.Left = L
Selection.Height = H
Selection.Width = W
Selection.Left = L
Selection.Height = H
Selection.Width = W
画像の場所と大きさを調整する部分です。
多数の画像を張り付けると、ファイルが大きくなりますので注意しましょう。
このファイルも保存しておいてください。
次投稿で使用します。