PR

Accessからファイルパスを取得する方法: msoFileDialogFilePicker

VBA

AccessでVBAによるデータ処理をする機会が増えてくると、任意のファイルのパスを取得したいといったニーズが出てきます。

特にダイアログを開いてユーザーに対象ファイルを選択してもらうプロセスは頻出となりますので、今回はその方法について紹介します。

スポンサーリンク

事前準備

今回の操作では、Microsoft Officeによるファイル操作を行うため、作成したAccessファイルのVBA画面を開き、参照設定においてMicrosoft Office XX.X Object Libraryの設定を行います。設定方法は図1及び図2をご参照ください。

図1 参照設定方法

図2 Microsoft Office Object Libraryの設定

以上で、msoFileDialogFilePickerを使う準備ができましたので、ここからソースコードによる実装方法を紹介します。

ソースコードの追加

ファイル選択をするためにVBAによるソースコードの実装をしていきます。まずは標準モジュールを作成し、その後に「PathSelect」プロシージャを追加します。

図3 PathSelectプロシージャの追加

そしてプロシージャには次のソースコードを追加します。

Public Sub PathSelect()

'パスを取得するテキストファイルの選択
Dim varSelectedFile As Variant
Dim FileSelect As String

'ファイルを選択する場合は、msofiledialogfilepicker
'フォルダーを選択する場合は、msofiledialogfolderpicker
With Application.FileDialog(msoFileDialogFilePicker)

  'ダイアログタイトル名
  .Title = "ファイルの選択"

  'ファイルの種類を定義します。
  .Filters.Add "テキストファイル", "*.txt"

  '複数ファイル選択を可能にする場合はTrue、不可の場合はFalse。
  .AllowMultiSelect = False

  '最初に開くホルダーを当ファイルのフォルダーとします。
  .InitialFileName = CurDir

  If .Show = -1 Then

    'ファイルが選択されれば -1 を返します。
    For Each varSelectedFile In .SelectedItems

      FileSelect = varSelectedFile

    Next

  Else

    Exit Sub

  End If

End With

'イミディエイトウインドウに結果を表示する。
Debug.Print FileSelect

End Sub

これで、ファイルパスを取得するソースコードを実装できました。

今回は「FileSelect」変数に結果を格納するようにしており、「Debug.Print」によりVBA画面のイミディエイトウインドウに結果が表示されるようにしました。

任意のテキストファイルを選択してファイルパスが取得できるかを確認してみてください。

なお、本ソースコードでは「Filters.Add」で選択できるファイルを”テキストファイルに限定していますが、例えばExcelファイルを選択する場合は、「”*.txt”」と記載されている箇所を「”.xls,.xlsx”」とすることで、抽出ファイルを変更することができます。これらは拡張子の設定に気を付ければ問題はありません。その他で良く使う拡張子は「”.csv”」等が挙げられます。

試しに、Cドライブ直下に「TEST.txt」ファイルを作成し、当ファイルのパスを取得した結果を図4及び図5に示します。

図4 対象ファイルの選択画面

図5 ファイルパスの取得結果

図5に示すように、「TEST.txt」ファイルのパスがイミディエイトウインドウに表示されました。

まとめ

今回はAccessから任意のファイルパスを取得する方法を紹介しました。ファイルパスを取得できると、ファイルパスを直接入力せずともユーザーのニーズに合わせたファイル選定及び処理を行うことができます。

特に、都度情報が更新されるものに定型フォーマットを用いてファイルが作成される場合、当該ファイルをAccessへデータインポートをするには、ソースコードでファイルパスを決めうちで記載することができないため、処理の都度対象ファイルを選んで処理をすることができる本機能は非常に有効性が高いものとなります。

システム作りは、最初は大変ですが一度仕組みができてしまえばその後の業務効率は飛躍的に向上しますので、是非本機能を活用してより良いワークライフを実現いただければと思います。

スポンサーリンク

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

コメント

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