大体でIT

-ちょっと使えるネタを紹介-

大体でIT

Excel VBAを使って、選択したフォルダ内のフォルダとファイル一覧を取得して、ハイパーリンクを設定する方法について、解説していきます。フォルダとファイルの一覧を作成して、ハイパーリンクを設定できれば、ファイルの検索がしやすくなります。フォルダとファイルの一覧を作成する方法について、マスターしていきましょう。

はじめに

この記事では、フォルダ内のすべてのフォルダとファイル一覧を取得して、ハイパーリンクを設定する方法について、ご紹介します。

フォルダ内のすべてのフォルダとファイル一覧を取得できれば、大量ファイルからファイルを検索しやすくなります。

フォルダとファイル一覧を取得する方法について、マスターしていきましょう。

では、フォルダ内のすべてのフォルダとファイル一覧を取得して、ハイパーリンクを設定する方法について、解説していきます。

この記事を読むメリット

  • フォルダやファイル一覧にハイパーリンクを設定して、大量ファイルからファイルを検索しやすくなります。

本記事の内容を動画にて解説しております。

本記事の内容を動画にて解説しております。

VBAコードの作成手順について、動画で確認できます。

目次から見たい項目へ移動すると便利ですよ。

目次

フォルダとファイル一覧を取得してハイパーリンクを設定

フォルダとファイル一覧を取得してハイパーリンクを設定してみます。

やりたい内容

やりたい内容は、選択したフォルダ内のフォルダとファイルの一覧を取得したい、ということになります。

フォルダ内のフォルダとファイル一覧を取得したい

フォルダ内のフォルダとファイルの一覧を取得したいです

フォルダ構成は、次のようになっています。

フォルダ構成

1階層目です。

1階層目です

2階層目です。

2階層目です

3階層目です。

3階層目です

フォルダを選択して一覧を取得してみます。

フォルダを選択して一覧を取得できる

ボタンをクリックしてみます。

ボタンをクリックしてみます

フォルダ選択用のダイアログが表示されますので、フォルダを選択してOKをクリックします。

フォルダ選択用のダイアログが表示されますので、フォルダを選択してOKをクリックします

フォルダ内のすべてのフォルダとファイルの一覧を取得できます。

フォルダ内のすべてのフォルダとファイルの一覧を取得できます

フォルダ内のすべてのフォルダとファイルの一覧を取得できました。

ハイパーリックでフォルダとファイルを開ける

フォルダ名をクリックして、フォルダを開くことができます。

フォルダ名をクリックして、フォルダを開くことができます

ファイル名をクリックして、ファイルを開くことができます。

ファイル名をクリックして、ファイルを開くことができます

フォルダやファイル一覧を作成できると、ファイルを検索しやすくなります。

VBAコードを作成

では、VBAコードをポイント毎に作成していきます。

ファイル一覧を取得

ファイル一覧を取得するVBAコードになります。

Sub TEST1()
  
  Dim A
  'FileSystemObjectを設定する
  Set A = CreateObject("Scripting.FileSystemObject")
  
  Dim B
  'ファイルパスを取得
  For Each B In A.GetFolder("C:\Users\user\Desktop\TEST").Files
    Debug.Print B
  Next
    
End Sub

実行すると、ファイル一覧を取得できます。

ファイル一覧を取得できる

ファイル一覧を取得できます

ファイル一覧を取得できました。

フォルダ一覧を取得

フォルダ一覧を取得するVBAコードになります。

Sub TEST1()
  
  Dim A
  'FileSystemObjectを設定する
  Set A = CreateObject("Scripting.FileSystemObject")
  
  Dim B
  'フォルダパスを取得
  For Each B In A.GetFolder("C:\Users\user\Desktop\TEST").SubFolders
    Debug.Print B
  Next
    
End Sub

実行すると、フォルダ一覧を取得できます。

フォルダ一覧を取得できる

フォルダ一覧を取得できます

フォルダ一覧を取得できました。

フォルダ内のすべてのフォルダを取得

フォルダ内のすべてのフォルダを取得するVBAコードです。

Sub TEST2()
  
  Call TEST1("C:\Users\user\Desktop\TEST")
  
End Sub
Sub TEST1(C)
  
  Dim A
  'FileSystemObjectを設定する
  Set A = CreateObject("Scripting.FileSystemObject")
  
  Debug.Print C
    
  Dim B
  'フォルダパスを取得
  For Each B In A.GetFolder(C).SubFolders
    Call TEST1(B) '再帰する
  Next
    
End Sub

「TEST1」を再帰的に実行するのがポイントです。

実行すると、サブフォルダを含むフォルダ一覧を取得できます。

すべてのフォルダ一覧を取得できる

サブフォルダを含むフォルダ一覧を取得できます

サブフォルダを含むフォルダ一覧を取得できました。

フォルダ内のすべてのフォルダとファイルを取得

フォルダ内のすべてのフォルダとファイルを取得するVBAコードです。

Sub TEST2()
  
  Call TEST1("C:\Users\user\Desktop\TEST")
  
End Sub
Sub TEST1(C)
  
  Dim A
  'FileSystemObjectを設定する
  Set A = CreateObject("Scripting.FileSystemObject")
  
  Debug.Print C
  
  Dim D
  'ファイルパスを取得
  For Each D In A.GetFolder(C).Files
    Debug.Print D
  Next
  
  Dim B
  'フォルダパスを取得
  For Each B In A.GetFolder(C).SubFolders
    Call TEST1(B) '再帰する
  Next
    
End Sub

実行すると、サブフォルダを含むフォルダとファイルの一覧を取得できます。

すべてのフォルダとファイル一覧を取得できる

サブフォルダを含むフォルダとファイルの一覧を取得できます

サブフォルダを含むフォルダとファイルの一覧を取得できました。

フォルダとファイルの一覧をセルに出力

フォルダとファイルの一覧をセルに出力してみます。

Sub TEST2()
  
  Range("A2:B10000").Clear
  
  Call TEST1("C:\Users\user\Desktop\TEST")
  
End Sub
Sub TEST1(C)
  
  Dim A
  'FileSystemObjectを設定する
  Set A = CreateObject("Scripting.FileSystemObject")
  
  Dim D
  'ファイルパスを取得
  For Each D In A.GetFolder(C).Files
    With Cells(Rows.Count, "B").End(xlUp)
      'フォルダパスを入力
      .Offset(1, -1) = Replace(C, "C:\Users\user\Desktop\TEST", "TEST")
      'ファイル名を入力
      .Offset(1, 0) = Dir(D)
    End With
  Next
  
  Dim B
  'フォルダパスを取得
  For Each B In A.GetFolder(C).SubFolders
    Call TEST1(B) '再帰する
  Next
    
End Sub

セルに見出しを入力しておきます。

見出しを入力しておく

見出しを入力しておきます

実行すると、フォルダとファイルの一覧を取得できます。

フォルダとファイル一覧をシートに入力できる

フォルダとファイルの一覧を取得できます

フォルダとファイルの一覧を取得できました。

セルに入力したフォルダパスを使う

セルに入力したフォルダパスを使って、フォルダとファイル一覧を取得してみます。

Sub TEST2()
  
  Range("A2:B10000").Clear
  
  'セルの値を初期値にする
  Call TEST1(Range("D2"))
  
End Sub
Sub TEST1(C)
  
  Dim A
  'FileSystemObjectを設定する
  Set A = CreateObject("Scripting.FileSystemObject")
  
  Dim D
  'ファイルパスを取得
  For Each D In A.GetFolder(C).Files
    With Cells(Rows.Count, "B").End(xlUp)
      'フォルダパスを入力
      .Offset(1, -1) = Replace(C, Range("D2"), Dir(Range("D2"), vbDirectory))
      'ファイル名を入力
      .Offset(1, 0) = Dir(D)
    End With
  Next
  
  Dim B
  'フォルダパスを取得
  For Each B In A.GetFolder(C).SubFolders
    Call TEST1(B) '再帰する
  Next
    
End Sub

セルにフォルダパスを入力しておきます。

セルにフォルダパスを入力しておく

セルにフォルダパスを入力しておきます

実行すると、セルに入力されたフォルダパスから、一覧を取得できます。

一覧を取得できる

セルに入力されたフォルダパスから、一覧を取得できます

セルに入力されたフォルダパスから、一覧を取得できました。

ハイパーリンクを設定する

取得したフォルダとファイル一覧に、ハイパーリンクを設定してみます。

Sub TEST2()
  
  Range("A2:B10000").Clear
  
  'セルの値を初期値にする
  Call TEST1(Range("D2"))
  
End Sub
Sub TEST1(C)
  
  Dim A
  'FileSystemObjectを設定する
  Set A = CreateObject("Scripting.FileSystemObject")
  
  Dim D
  'フォルダパスを取得
  For Each D In A.GetFolder(C).Files
    With Cells(Rows.Count, "B").End(xlUp)
      'フォルダパスを入力
      .Offset(1, -1) = Replace(C, Range("D2"), Dir(Range("D2"), vbDirectory))
      'ファイル名を入力
      .Offset(1, 0) = Dir(D)
      'フォルダパスのハイパーリンクを設定
      ActiveSheet.Hyperlinks.Add .Offset(1, -1), C
      'ファイルパスのハイパーリンクを設定
      ActiveSheet.Hyperlinks.Add .Offset(1, 0), D
    End With
  Next
  
  Dim B
  'フォルダパスを取得
  For Each B In A.GetFolder(C).SubFolders
    Call TEST1(B) '再帰する
  Next
    
End Sub

実行すると、取得したフォルダとファイルにハイパーリンクを設定することができます。

ハイパーリンクを選択できる

フォルダとファイルにハイパーリンクを設定することができます

フォルダとファイルにハイパーリンクを設定することができました。

セルをクリックして、フォルダとファイルを開くことができます。

フォルダとファイルを開ける

フォルダ名をクリックすると、フォルダを開くことができます。

フォルダ名をクリックすると、フォルダを開くことができます

ファイル名をクリックすると、ファイルを開くことができます。

ファイル名をクリックすると、ファイルを開くことができます

ハイパーリンクを設定すると、フォルダやファイルを開くことができるので便利です。

フォルダ選択用ダイアログでフォルダを選択

フォルダ選択用ダイアログでフォルダを選択できるようにしてみます。

Sub TEST2()
  
  'フォルダ選択用ダイアログを表示
  With Application.FileDialog(msoFileDialogFolderPicker)
    .InitialFileName = ThisWorkbook.Path '初期フォルダの設定
    If .Show = False Then Exit Sub
    Range("D2") = .SelectedItems(1) '選択したフォルダパスを取得
  End With
  
  Range("A2:B10000").Clear
  
  'セルの値を初期値にする
  Call TEST1(Range("D2"))
  
End Sub
Sub TEST1(C)
  
  Dim A
  'FileSystemObjectを設定する
  Set A = CreateObject("Scripting.FileSystemObject")
  
  Dim D
  'フォルダパスを取得
  For Each D In A.GetFolder(C).Files
    With Cells(Rows.Count, "B").End(xlUp)
      'フォルダパスを入力
      .Offset(1, -1) = Replace(C, Range("D2"), Dir(Range("D2"), vbDirectory))
      'ファイル名を入力
      .Offset(1, 0) = Dir(D)
      'フォルダパスのハイパーリンクを設定
      ActiveSheet.Hyperlinks.Add .Offset(1, -1), C
      'ファイルパスのハイパーリンクを設定
      ActiveSheet.Hyperlinks.Add .Offset(1, 0), D
    End With
  Next
  
  Dim B
  'フォルダパスを取得
  For Each B In A.GetFolder(C).SubFolders
    Call TEST1(B) '再帰する
  Next
    
End Sub

ダイアログでフォルダを選択して一覧を取得してみます。

ダイアログでフォルダを選択して一覧を取得

ボタンにVBAコードを登録しておいて、ボタンをクリックします。

ボタンにVBAコードを登録して、ボタンをクリックします

フォルダ選択用のダイアログが表示されますので、フォルダを選択してOKをクリックします。

フォルダ選択用のダイアログが表示されますので、フォルダを選択してOKをクリックします

フォルダとファイルの一覧を取得できます。

フォルダとファイルの一覧を取得できます

フォルダとファイルの一覧を取得できました。

他のフォルダでもやってみます。

他のフォルダを選択してみる

ダイアログを表示して、他のフォルダを選択してみます。

他のフォルダを選択してみます

選択したフォルダ内のすべてのフォルダとファイル一覧を取得できます。

選択したフォルダ内のすべてのフォルダとファイル一覧を取得できました

選択したフォルダ内のすべてのフォルダとファイル一覧を取得できました。

おわりに

この記事では、フォルダ内のすべてのフォルダとファイル一覧を取得して、ハイパーリンクを設定する方法について、ご紹介しました。

フォルダ内のすべてのフォルダとファイル一覧を取得できれば、大量ファイルからファイルを検索しやすくなります。

フォルダとファイル一覧を取得する方法について、マスターしていきましょう。

参考になればと思います。最後までご覧くださいまして、ありがとうございました。

関連する記事から探す

カテゴリから探す

カテゴリから見たい項目を探すと便利ですよ。

サイト内を検索する

↓キーワードを入力する

アーカイブから探す