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

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

この関数について

私がExcelVBAを業務に使用し始めた頃、ExcelVBA(マクロ)の学習を進めていく中で最初の難所は「別ブックの操作」でした。当時、マクロの記録では別ブックを開きそのまま操作を進めるという処理が記録されませんでした。そのため「Workbooks.Open」へたどり着くまで単一のブックしかマクロで扱うことができないと誤認していました。この「Workbooks.Open」はブックのパスを指定してブックを開くことができます。ここで紹介する関数では、ファイルダイアログを表示しマクロの実行者が選択したファイルの絶対パスを取得することができます。

ここからは余談です。読み飛ばし可。私がマクロの学習を始めてから4年ほどです(2024/8/16現在)が、その間にもMicrosoft社はExcelVBAの改良を続けていることが見て取れます。ネットにはExcelVBAの時代はもう終わったというような記事が4年前から存在しますが、少なくともMicrosoft社はExcelVBAを終わらせる気はないように見えます。私も他の高級なプログラミング言語にはない強みである
 ・開発環境が実質プレインストールされていること
 ・ユーザーフォーム
 ・シートやセルへのアクセスが簡単にできること
↑この利点がある以上、ExcelVBAの衰退はないと考えています。

使い方 ①引数

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

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

使い方 ②返値

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

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

Public Sub Test_OpenFileDialogExcelSingle()

Dim wb As Workbook
Dim file_path As String

file_path = OpenFileDialogExcelSingle("任意のExcelファイルを選択する", ThisWorkbook.Path)
If file_path <> "" Then
Set wb = Workbooks.Open(file_path)
'Call wb.Close(False)
Else
Call MsgBox("ファイルが選択されませんでした", vbInformation)
End If

End Sub

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

上記サンプルコードを実行すると、ファイルを選択した場合、Excelファイルが開きます。ファイルを選択しなかった場合、「ファイルが選択されませんでした」というメッセージが表示されます。ファイルが選択されたパートではそのまま開いたブックに対する操作を記述することになると思います。そのため変数に開いたExcelファイルのワークブックオブジェクトを格納しています。

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

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

Comment