ファイル名一覧を取得してハイパーリンクで開く

VBA ファイル名一覧 Excel VBA すべて

複数のフォルダーの中にあるファイル名(ブック名)を検索してファイル名を表示する方法を紹介します。

検索したファイル名はエクセルシートのセルB2からセルM2の下にを表示されます、表示されたファイル名をクリックするとファイルを開くことができます。

Sub ファイル検索() 

    Dim file_name As String
    Dim 行 As Long
    Dim 列 As Long
    Dim folder_name(12) As String  '12個の配列要素の宣言をします
    
    folder_name(0) = ThisWorkbook.Path & "\フォルダ1\"
    folder_name(1) = ThisWorkbook.Path & "\フォルダ2\"
    folder_name(2) = ThisWorkbook.Path & "\フォルダ3\"
    folder_name(3) = ThisWorkbook.Path & "\フォルダ4\"
    folder_name(4) = ThisWorkbook.Path & "\フォルダ5\"
    folder_name(5) = ThisWorkbook.Path & "\フォルダ6\"
    folder_name(6) = ThisWorkbook.Path & "\フォルダ7\"
    folder_name(7) = ThisWorkbook.Path & "\フォルダ8\"
    folder_name(8) = ThisWorkbook.Path & "\フォルダ9\"
    folder_name(9) = ThisWorkbook.Path & "\フォルダ10\"
    folder_name(10) = ThisWorkbook.Path & "\フォルダ11\"
    folder_name(11) = ThisWorkbook.Path & "\フォルダ12\"
    
    Dim i As Integer
    Dim Q As Integer
    
    i = 0   '変数iを0にしてフォルダ名を初期値にします。
    
    列 = 2  'ファイル名を表示する列は2列目から始めます。
    
    For Q = 1 To 12  'For..Nextステートメントで12回繰り返します。
    
      file_name = Dir(folder_name(i) & "*.xlsx")  'Dir関数で検索します。
    
      行 = 1   '行番号の初期値を1にします。
    
        Do While file_name <> ""
    
          行 = 行 + 1  'ファイル名を表示する行を1つずつ増やしていきます。
        
     ActiveSheet.Hyperlinks.Add Anchor:=Cells(行, 列), Address:=folder_name(i) & file_name, TextToDisplay:=file_name
        
          file_name = Dir()
        
        Loop
    
      i = i + 1     'iの値を1つずつ増やしてフォルダ名を0~11まで変えていきます。
    
      列 = 列 + 1   'ファイル名を表示する列を2列目から右に1つずつ移動します。
    
    Next Q
    
End Sub

ThisWorkbook.Pathでファイルパスを取得しているのでファイル検索するフォルダはマクロを実行するブックと同じフォルダに入れて下さい。

Dir(folder_name(i) & “*.xlsx”)の拡張子「xlsx」の部分を変えれば他のファイルも検索できるのでぜひ試してみてください。

コメント