PR

簡単便利!Accessでファイル名を取得する方法

VBA

Accessでは、あるフォルダに保存されているファイルパスを全て取得し、これをデータベース化することが可能です。用途としては、ファイル一覧の作成、ファイル整理など、多岐に亘ります。

そこで今回は、「FileSystemObject」を用いたファイルパスの取得方法について紹介します。

過去にもFileSystemObjectを用いたフォルダの作成方法などを紹介していますが、今回はFileSystemObjectの参照設定方法を交えて紹介をします。

スポンサーリンク

FileSystemObjectの参照設定方法

VBAで以下のコードを書くことで「FileSystemObject」を用いるための参照設定をする必要がなくなりますが、一方でFileSystemObjectの構文は文字数が多く、誤字が多くなりやすい傾向にあるため、ライブラリが使えると自動修正により非常に便利です。

'FileSystemObjectオブジェクトを生成し、変数に格納する。
Set fso = CreateObject("Scripting.FileSystemObject")

そこで、今回のケースではFileSystemObjectの参照設定を追加した状態でコードを実装するようにします。

それでは、参照設定の方法を確認していきましょう。VBA画面を開き、画面上のメニューバーから「ツール」→「参照設定」と選択します。

図1の画面が開きますので、「Microsoft Scripting Runtime」にチェックを入れます。

図1 Microsoft Scripting Runtimeの参照設定

以上で「Microsoft Scripting Runtime」の参照設定が完了しました。

VBAからオブジェクトブラウザーを開き、ライブラリ検索に「FileSystemObject」と入力すると、図2のように、FileSystemObjectの各メンバーが表示されるようになります。

図2 FileSystemObjectのメンバー一覧

これで、FileSystemObjectを使う準備ができましたので、次からはファイルパスを取得するためのコードを実装していきます。

ファイルパスを取得するためのVBAコード実装

それでは、VBA画面から標準モジュールを作成し、以下のコードを追加してください。

Private Sub FilePath()

'FileSystemObjectを使うための変数宣言
Dim fso As Scripting.FileSystemObject
Dim Folder As Object
Dim File As Object

'FileSystemObjectのオブジェクトを作成する。
Set fso = New Scripting.FileSystemObject

'C:\TESTをFolderオブジェクトとして代入する。
Set Folder = fso.GetFolder("C:\TEST")

'C:\TEST内の全てのファイルに対して処理をする。
For Each File In Folder.Files

    'ファイルパスを取得し、イミディエイトウィンドウに
    '表示する。
    Debug.Print File.Path

Next

'オブジェクト参照の破棄
Set Folder = Nothing
Set fso = Nothing

End Sub

このコードの処理内容を確認していきましょう。まずは、FileSystemObjectを用いるための変数、ファイルパスを格納するための変数を宣言しています。

続いて、FileSystemObjectのインスタンスを作成します。この時、「New」を用いることで処理が可能です。これが、冒頭で紹介した「Set fso = CreateObject(“Scripting.FileSystemObject”)」との記載方法の違いです。

次に、「C:\TEST」フォルダをFolder変数に代入し、For Each文で「C:\TEST」フォルダ内のファイル(Folder.Filesで取得)について、「File.Path」によりファイルパスを取得しイミディエイトウィンドウに表示する処理をしています。

最後に、オブジェクト参照を破棄して処理を完了します。

ファイルパス取得処理の実行

それでは、実装したコードのテストをしていきます。

まず、「C:\TEST」フォルダを作成し、この中に図3で示すように3ファイルを保存します。

図3 C:TESTフォルダの中身

この状態で、先に作成したVBAコードを実行します。実行は、FilePathメソッドにカーソルを合わせた後、VBA画面の「▶」アイコンをクリックすることで開始されます。

この結果、図4に示すようにイミディエイトウィンドウに各ファイルのファイルパスが表示されました。

図4 VBAコードの実行及び出力結果 

このように、FileSystemObjectを用いて、ファイルパスを取得することができました。

まとめ

今回は、Accessからあるフォルダに保存されているファイルのパスを取得する方法を紹介し、また、FileSystemObjectの参照設定方法についても紹介しました。

これだけでは、活用方法をイメージしにくいかと思いますが、ファイルパスを取得することができれば、様々なシーンでこれを応用し、業務効率の改善を図ることが期待できます。

これを基に、次回は、得られたファイルパスをAccessのテーブルに格納していく方法を紹介します。

今回紹介した方法は専門書でも紹介されていますので、ご参考になさってください。

スポンサーリンク

Kindle Unlimitedにサインアップして無料体験に登録する
Kindle Unlimitedに登録すると、人気のシリーズ、ベストセラー、名作などに好きなだけアクセスして、シームレスなデジタル読書体験を実現できます。

コメント

タイトルとURLをコピーしました