Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


11085 / 76734 ←次へ | 前へ→

【71190】Re:データの選択
回答  UO3  - 12/2/7(火) 15:04 -

引用なし
パスワード
   ▼ぴょんぴょん さん:

上で質問させていただいているように、要件がクリアには把握できていないのですが
・シートの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

7 hits

【71185】データの選択 ぴょんぴょん 12/2/7(火) 9:24 質問
【71187】Re:データの選択 UO3 12/2/7(火) 11:12 発言
【71195】Re:データの選択 きょん 12/2/7(火) 22:57 回答
【71190】Re:データの選択 UO3 12/2/7(火) 15:04 回答
【71196】ありがとうございます! きょん 12/2/7(火) 23:31 お礼

11085 / 76734 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free