|    | 
     ▼ぴょんぴょん さん: 
 
上で質問させていただいているように、要件がクリアには把握できていないのですが 
・シートのB列に画像ファイル名(.jpg 等の拡張子なし)が列挙されている。 
 (この部分は実際のセル範囲に変更願います) 
・そのファイル名を持つ、jpegあるいはjpgあるいはgifデータが指定フォルダにあれば 
・そのセルの左のセル(A列)に画像を挿入。 
・画像縦横比率を維持してセルにあてはめる部分は、少しすっきり(?)したロジックに。 
このような仕様だとしてコードを書いてみました。 
 
Sub Sample() 
  Dim c As Range 
  Dim myFold As Object 
  Dim myPath As String 
  Dim myName As String 
  Dim ext As Variant 
  Dim myPic As String 
  Dim r As Range 
   
  Set myFold = CreateObject("Shell.Application").BrowseForFolder(&O0, "フォルダを選んでください", &H1 + &H10, "C:\") 
  If myFold Is Nothing Then Exit Sub 
  myPath = myFold.Items.Item.Path 
  Set myFold = Nothing 
  With ActiveSheet 
    For Each c In .Range("B1", .Range("B" & .Rows.Count).End(xlUp)) 
      If Len(c.Value) > 0 Then 
        For Each ext In Array("jpeg", "jpg", "gif") 
          myPic = Dir(myPath & "\" & c.Value & "." & ext) 
          If Len(myPic) > 0 Then 
            c.Offset(, -1).Activate 
            With ActiveSheet.Pictures.Insert(myPath & "\" & myPic) 
              Set r = .TopLeftCell 
              With .ShapeRange 
                .LockAspectRatio = msoTrue 
                If .Height > r.Height Then .Height = r.Height 
                If .Width > r.Width Then .Width = r.Width 
              End With 
              Set r = Nothing 
            End With 
            Exit For 
          End If 
        Next 
      End If 
    Next 
  End With 
End Sub 
 
 | 
     
    
   |