Poker online Indonesia コミュニティの成長により、プレイヤー同士が情報を共有し、おすすめのプラットフォームを見つけやすくなっています。SNSグループ、フォーラム、オンラインコミュニティは、ユーザーの選択や好みに大きな影響を与える重要な存在です。こうした議論の中では、インタラクティブな機能や競争性の高いゲームプレイで知られるプラットフォームを紹介する際に、login Nirwanapoker が頻繁に取り上げられています。

Toto Macau コミュニティでは、さまざまな形式や結果について活発な情報交換が行われています。こうした議論の中で、live draw macau は詳細なデータや最新情報を確認するための重要な話題として取り上げられています。これらの情報は、利用者が最新の動向を把握しながら、整理されたデータをより効率的に活用するのに役立っています。

成功するゲーミングプラットフォームは、信頼性、優れたユーザー体験、そして豊富なゲームラインナップによって支えられています。idnslot は、直感的で使いやすいインターフェースを提供し、プレイヤーがスムーズにコンテンツへアクセスできる環境を実現しています。また、slot online プラットフォームはさまざまなデバイス向けに最適化されており、スマートフォン、タブレット、デスクトップパソコンのいずれを利用する場合でも、いつでも安定した快適なゲーム体験を楽しむことができます。

Bagi penggemar permainan kartu online, idn poker menjadi salah satu istilah yang cukup dikenal dan banyak dicari ketika ingin memperoleh informasi mengenai permainan poker. Pemain dapat mempelajari berbagai aspek dasar, seperti aturan permainan, kombinasi kartu, posisi pemain, serta istilah yang umum digunakan agar lebih memahami mekanisme permainan secara menyeluruh.

situs slot online menjadi salah satu istilah yang banyak digunakan ketika mencari informasi mengenai permainan slot melalui internet. Sebelum memilih sebuah platform, pengguna sebaiknya memahami terlebih dahulu cara kerja permainan, informasi layanan, keamanan situs, serta ketentuan yang berlaku di wilayah masing-masing.

VBA コピペで使える!特定フォルダのファイル一覧を一括取得するコード

この記事は約9分で読めます。

VBA ファイル一覧取得

 

どうもマサヤです!

「特定フォルダのファイル一覧を一括で取得したい!」

「フォルダの場所を指定したら、配下のファイル名を一括で取得してくれるコードがあればなぁ~」

 

そんな、あなたと私のためにコピペで使えるコードを紹介します!

更に、以下のコードも併せて紹介します!

  • サブフォルダ内のファイル名も一括取得するコード
  • 特定形式のファイル名を一括で取得するコード
  • ファイル一覧を配列に格納するコード

結構使うので手間を減らすためにコピペして使えるようにしました。

 

【関連】ファイルやフォルダを階層別で表示させたいよ~というアナタは↓をどうぞ!

【関連】取得や表示でなく、フォルダを作りたい!というアナタは↓をどうぞ!

 

スポンサーリンク

特定フォルダのファイル名を一括取得するコード

 

取得したファイル一覧をセルに出力しています。

Sub GetFolderList()

Dim fso As Object
Dim find_path As String
Dim cf As Variant
Dim i As Long

find_path = "C:\Users\Sample"  '←取得したいフォルダパスを指定する

Set fso = CreateObject("Scripting.FileSystemObject")
Set cf = fso.getfolder(find_path)

i = 1
For Each f In cf.Files
    Cells(i, 1) = f.Path
    Cells(i, 2) = f.Name
    i = i + 1
Next

End Sub

 

実行結果イメージ【動画】

実行結果は下記の動画のようになります。

VBA ファイル一覧取得

 

サブフォルダ内のファイル名も一括取得するコード

 

サブフォルダ内のファイル一覧も取得してくれるコードを紹介します。

サブフォルダの中に、更にフォルダがあっても全て取得してくれますよ!

Sub GetFolderList()

Dim fso As Object
Dim find_path As String
Dim cf As Variant

find_path = "C:\Users\Sample"  '←取得したいフォルダパスを指定する

Set fso = CreateObject("Scripting.FileSystemObject")
Set cf = fso.GetFolder(find_path)

Call GetSubFolder(cf, 1)

End Sub

'===============================================================================
'   フォルダ単位で全探査
'===============================================================================
Sub GetSubFolder(cf, my_row)

For Each f In cf.SubFolders
    Call GetSubFolder(f, my_row) '再帰呼出
Next

For Each f In cf.Files
    Cells(my_row, 1) = f.Path
    Cells(my_row, 2) = f.Name
    
    my_row = my_row + 1
Next

End Sub

 

スポンサーリンク

ファイル形式を指定してファイル名を一括取得するコード

 

取得したいファイル拡張子を指定できます。

「xlsxだけを取得したい!」といった場合はこのコードをお使いください。

※使い方※ ↑で紹介したコード内のGetSubFolder関数を、下記コードと差し替えてください。
Sub GetSubFolder(cf, my_row)

For Each f In cf.SubFolders
    Call GetSubFolder(f, my_row) '再帰呼出
Next


For Each f In cf.Files
    If LCase(Mid(f.Name, InStrRev(f.Name, ".") + 1)) = "xlsm" Then  '←拡張子を指定
        Cells(my_row, 1) = f.Path
        Cells(my_row, 2) = f.Name
        
        my_row = my_row + 1
    End If
Next

End Sub

 

おすすめ! ファイル一覧を配列に格納するコード

 

ファイル一覧を配列に格納するコードです。

関数にしているので、1行でファイル一覧を取得できます。

Public get_folders(1000, 1) As Variant

Sub GetFolderList(find_path, Optional find_sub = 0, Optional file_type = "")

Dim fso As Object
Dim cf As Variant

Set fso = CreateObject("Scripting.FileSystemObject")
Set cf = fso.GetFolder(find_path)

Call GetSubFolder(cf, 0, find_sub, file_type)

Set fso = Nothing

End Sub
'===============================================================================
'   フォルダ単位で全探査
'===============================================================================
Sub GetSubFolder(cf, cnt, Optional find_sub = 0, Optional file_type = "")

If find_sub = 1 Then 'サブフォルダのファイル取得有無
    For Each f In cf.SubFolders
        Call GetSubFolder(f, cnt, find_sub, file_type) '再帰呼出
    Next
End If

For Each f In cf.Files
    If file_type <> "" Then
        If LCase(Mid(f.Name, InStrRev(f.Name, ".") + 1)) = file_type Then '拡張子指定判定
            get_folders(cnt, 0) = f.Path
            get_folders(cnt, 1) = f.Name
            
            cnt = cnt + 1
        End If
    Else
        get_folders(cnt, 0) = f.Path
        get_folders(cnt, 1) = f.Name
        
        cnt = cnt + 1
    End If
Next

End Sub

 

独自関数GetFolderListの説明

引数によって、サブフォルダ探索要否や拡張子指定有無を選択することができます。

◆定義◆

GetFolderList(①フォルダのパス, ②[サブフォルダ探査有無],  ③[拡張子有無])

①:ファイル一覧を取得したいパスを指定。
②:省略可能。サブフォルダ内も取得するか指定。取得する場合は1、省略時はサブフォルダ探査無。
③:省略可能。拡張子を指定する場合は文字列で指定。省略時は全ファイル取得。

 

具体的な使い方

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

下記にのように呼出方法を複数あります。

 'フォルダ内のファイル一覧を取得
Call GetFolderList("C:\Users\Sample")

'サブフォルダを含めたファイル一覧を取得
Call GetFolderList("C:\Users\Sample", 1)
 
'フォルダ内のxlsx形式のファイル一覧を取得
Call GetFolderList("C:\Users\Sample", , "xlsx") 

'サブフォルダ含めたのxlsx形式のファイル一覧を取得
Call GetFolderList("C:\Users\Sample", 1, "xlsx") 

ファイル一覧はget_foldersに格納されています。

For文などでファイル名を抽出してお使いください。

 

Dir関数ではなく、FileSystemObjectを使ってます

 

Dir関数でもファイル一覧を取得できますが、紹介するコードはFileSystemObjectを使っています。

理由はDir関数には文字数制限(256バイト)があるからです。

 

例えば、会社のネットワークフォルダのファイル一覧を取得する場合、フォルダパスの長さによってはDir関数の文字数を超えてしまい、正しいファイル一覧が取得できません。

また、特定ネットワーク名(パスに .【ドット】 含まれている)によるエラーなどもあります。

これらの問題を回避するため、FileSystemObjectを使っています。

 

まとめ

 

あなたが配列を知っているなら「ファイル一覧を配列に格納するコード」がおすすめです!

私もこのコードを良く使っています。

サブフォルダ探査の要否などを状況に応じて使い分けることができます。

 

仕事では色々な理由でブックを分けて保存・格納することが多いですよね。

でも、集計するとなるとデータを一つに統合する場合が多いです)涙

しかも、フォルダ内には関係のないファイルも混じってたりします。

 

そんな時のため今回のコードを作りました。

作業効率もかなり上がりましたよ!

アナタが同じ悩みをお持ちならぜひ使ってみてください!

 

コメント