Access

Access(VBA)でフォルダ内の全ファイルを順次処理する方法

記事内に商品プロモーションを含む場合があります

Windowsのフォルダやファイルを順次取得して、Accessの次の処理を行うこともよくあります。

例えば、指定のフォルダ配下にある全てのファイルをインポートするような処理です。

その際はFSO(ファイルシステムオブジェクト)を使用すれば簡単にループ処理を実行できます。

フォルダ内の全ファイルを処理するための事前準備

フォルダ内を探索するにはFileSystemObjectを使用します。

VBAからこのライブラリを利用できるように、参照設定を追加する必要があります。

VisualBasic画面の上部メニューのツール → 参照設定 の順で選択します。

「Microsoft Script Runtime」にチェックを入れます。

この参照設定がなければコンパイルエラーとなります。

参照エラー

スポンサーリンク

指定のパス配下の全フォルダ名を取得する

パスは画面から指定させ、そのパス配下のフォルダ名を取得し、メッセージボックスで表示するプログラムです。

VBAフォルダ選択
AccessのVBAでファイルダイアログからフォルダを指定する方法主にファイルを出力するときなどに使うフォルダ選択ダイアログ。VBAのサンプルコードを公開しています。コピペでどうぞ。...

尚、このプログラムでは指定したパスの直下フォルダのみ処理していますので、取得したフォルダ配下のフォルダ(孫フォルダ)は取得していません。

指定したパスの孫フォルダなども捜索したい場合は再帰的な処理を埋め込む必要があります。

'*******************************************************************************
'   ルートフォルダを指定して全フォルダ探索
'*******************************************************************************
Sub OpenFilesInFolder()

    Dim path        As String
    Dim objFSO      As FileSystemObject
    Dim fld         As folder
    Dim subfld      As folder
    
    path = Me.txt元フォルダ
    
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set fld = objFSO.GetFolder(path)

    'フォルダ内の全フォルダについて処理
    For Each subfld In fld.SubFolders
    
        'フォルダ名を表示
        MsgBox subfld.Name

    Next
    
    'オブジェクトをクリア
    Set objFSO = Nothing

End Sub

スポンサーリンク

指定のパス配下の全ファイル名を取得する

vbaでフォルダ内の全ファイル名を取得するコードです。

基本はサブフォルダ名を取得するコードと同じ。

ループ処理の対象が、『fld.files』か『fld.subfolders』なのかの違いだけです。

'*******************************************************************************
'   ルートフォルダを指定して全ファイル探索
'*******************************************************************************
Sub OpenFilesInFile()

    Dim path        As String
    Dim objFSO      As FileSystemObject
    Dim fld         As Variant
    Dim fl          As file
    
    path = Me.txt元フォルダ
    
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set fld = objFSO.GetFolder(path)

    'フォルダ内の全ファイルについて処理
    For Each fl In fld.files
    
        'ファイル名を表示
        MsgBox fl.Name

    Next
    
    'オブジェクトをクリア
    Set objFSO = Nothing

End Sub

 

スポンサーリンク

まとめ

VBAでフォルダ内のファイルまたはフォルダを探索して全ファイル名・フォルダ名を取得するコードをご紹介しました。

これらをベースにグルグル回しながら面倒な処理を一気に効率化しましょう!

 

\逆引き辞書があると便利です/
[itemlink post_id=”1386″]

ABOUT ME
アズビーパートナーズ
プログラマー→社内SE→SIerのお仕事をしています。 メーカー勤務を経て、中小企業の社内SE、フリーランスなど様々な形態で働いてきました。 業務上生まれた困った…を解決してきたTipsを備忘録も兼ねて公開しています。 困っている誰かのお役に立てれば幸いです。