F0000018_ファイルダイアログを開き、1つの任意のファイルを選択させる

ファイルダイアログを開き、1つの任意のファイルを選択させる 関数リファレンス

この関数について

ExcelVBA(マクロ)でマクロ実行者に選択させるファイルの種類として多いのはExcelもしくはcsvファイルかと思います。ファイルの選択を求める場合、なるべくファイルの拡張子を指定することが望ましいです。しかし、自社のシステムからデータを抽出・ダウンロードし、そのファイルをマクロに取り込み加工・出力するような場合、自社のシステムから抽出できるファイルの拡張子がExcel/csvで選択できるような場合があります。この場合、マクロの設定で選択できるファイルを制限する手もありますが、システムからのデータ抽出には時間がかかることも多く、拡張子の選択を間違えたために再度データ抽出からのやり直しを求めることは、RPA(自動化)ツールの本来の目的に反します。そのため取り込むファイルがExcelファイルでもcsvファイルでも、同じ出力となるツールの設計をすべきだと私は考えています。この関数はファイルダイアログを表示しマクロの実行者が選択した任意のファイルの絶対パスを取得することができます。

使い方 ①引数

■引数1:title
 ファイルダイアログに表示するタイトルを指定できます。下記画像を参照

■引数2:initial_folder_path
 ファイルダイアログが表示されたときにデフォルトで開くフォルダを指定できます。

使い方 ②返値

マクロ実行者がファイルを選択した場合、ファイルの絶対パスを返します。選択しなかった場合、空の文字列を返します。そのため、返値が空文字列か否かの判定でファイルの選択有無を判断できます。

使い方 ③呼び出し方例(サンプルコード)

Public Sub Test_OpenFileDialogAnythingSingle()

Dim wb As Workbook
Dim extension_str As String
Dim file_path As String

file_path = OpenFileDialogAnythingSingle("任意のファイルを選択する", ThisWorkbook.Path)
If file_path <> "" Then
extension_str = Mid(file_path, InStrRev(file_path, "."))
Select Case extension_str
Case ".csv"
Call MsgBox("csvファイルが選択されました", vbInformation)
Case ".xlsx", ".xls", ".xlsm"
Call MsgBox("Excelファイルが選択されました", vbInformation)
Case Else
Call MsgBox(extension_str & "ファイルが選択されました", vbInformation)
End Select
Else
Call MsgBox("ファイルが選択されませんでした", vbInformation)
End If

End Sub

【結果】任意のファイルの絶対パスを取得することができました

サンプルコードを実行すると、選択したファイルの拡張子に応じてメッセージが表示されます。実務上では、想定と異なる拡張子のファイルが選択された場合は処理を終了し、想定の拡張子のファイルだった場合、後続の処理を記述するという流れになります。

この関数は関数リファレンスからコピペ可能です!

この記事のタイトルを検索窓へ貼り付けて関数を検索してみましょう。 表示されたコードをクリックするだけでコピー完了! あとは自身で作成したモジュールに貼り付けるだけでこの関数を利用できます。サンプルコードもあり! 関数リファレンストップへ

Comment