Excel VBAは、Excelにおける作業の自動化や効率化に役立つ機能です。その中でも、ファイル名を取得する方法は、データの整理や管理において非常に便利な技術です。この記事では、Excel VBAを使用してファイル名を取得する方法について詳しく解説します。具体的には、Dir関数やFileDialogオブジェクトを利用したファイル名の取得方法、ワークブック名やシート名を取得する方法、さらにファイルのフルパスを取得する方法などを取り上げます。これらの方法を活用することで、Excelでの作業がよりスムーズになり、生産性が向上することでしょう。
Excel VBAでファイル名を取得する方法
Excel VBAでは、様々な方法でファイル名を取得することができます。ここでは、よく使われる方法をいくつか紹介し、それぞれの方法について詳しく説明します。
Dir関数を使用する方法
Dir関数は、指定したパスのファイル名やディレクトリ名を返す関数です。ファイル名を取得するには、以下のように記述します。
コード例 |
FilePath = Dir(C:UsersUserNameDocuments.xlsx) |
While FilePath |
‘ 取得したファイル名を処理するコードを記述 |
FilePath = Dir() ‘ 次のファイル名を取得 |
Wend |
このコードは、指定されたディレクトリ内のすべてのExcelファイルのファイル名を取得し、ループ内で処理を行います。
FileSystemObjectを使用する方法
FileSystemObjectは、ファイルやフォルダに関する様々な操作を行うことができるオブジェクトです。ファイル名を取得するには、以下のように記述します。
コード例 |
Set FSO = CreateObject(Scripting.FileSystemObject) |
Set Folder = FSO.GetFolder (C:UsersUserNameDocuments) |
For Each File In Folder.Files |
If FSO.GetExtensionName(File.Name) = xlsx Then |
‘ 取得したファイル名を処理するコードを記述 |
End If |
Next File |
このコードは、指定されたディレクトリ内のすべてのファイルをループし、拡張子が「xlsx」のファイル名を取得して処理を行います。
Application.GetOpenFilenameメソッドを使用する方法
Application.GetOpenFilenameメソッドは、ファイルを開くダイアログを表示し、選択されたファイルのフルパスを取得するメソッドです。ファイル名を取得するには、以下のように記述します。
コード例 |
FilePath = Application.GetOpenFilename(Excel Files (.xlsx), .xlsx) |
If FilePath False Then |
‘ 取得したファイル名を処理するコードを記述 |
End If |
このコードは、Excelファイル選択ダイアログを表示し、選択されたファイルのフルパスを取得して処理を行います。
Application.FileDialogメソッドを使用する方法
Application.FileDialogメソッドは、ファイルやフォルダ選択ダイアログを表示するメソッドです。ファイル名を取得するには、以下のように記述します。
コード例 |
With Application.FileDialog(msoFileDialogFilePicker) |
.Filters.Clear |
.Filters.Add Excel Files, .xlsx |
If .Show = -1 Then |
FilePath = .SelectedItems(1) |
‘ 取得したファイル名を処理するコードを記述 |
End If |
End With |
このコードは、Excelファイル選択ダイアログを表示し、選択されたファイルのフルパスを取得して処理を行います。
Workbookオブジェクトの FullNameプロパティを使用する方法
Workbookオブジェクトの FullNameプロパティは、ワークブックのフルパスを取得することができます。ファイル名を取得するには、以下のように記述します。
コード例 |
FilePath = ThisWorkbook.FullName |
‘ 取得したファイル名を処理するコードを記述 |
このコードは、現在開いているワークブックのフルパスを取得し、処理を行います。
よくある質問
Excel VBAでファイル名を取得するにはどうすればいいですか?
Excel VBAでファイル名を取得するには、Dir関数を使用します。この関数は、指定したパスにあるファイルやディレクトリの名前を返します。例えば、Dir(C:Documents.)とすると、C:Documentsフォルダにある全てのファイルとディレクトリの名前が返されます。また、Dir関数を繰り返し呼び出すことで、複数のファイル名を取得することができます。
Excel VBAで特定の拡張子を持つファイル名を取得する方法は?
特定の拡張子を持つファイル名を取得するには、Dir関数を使い、検索パターンを指定します。例えば、Dir(C:Documents.xlsx)とすると、C:Documentsフォルダにある拡張子が「.xlsx」のファイル名が返されます。このように、.xlsxの部分を変更することで、任意の拡張子を持つファイル名を取得することができます。
Excel VBAで複数のファイル名を一度に取得する方法は?
複数のファイル名を一度に取得するには、Dir関数を繰り返し呼び出します。まず、Dir関数を1回呼び出して最初のファイル名を取得し、その後、Dir関数を引数なしで繰り返し呼び出すことで、次のファイル名、次のファイル名、…と取得していきます。すべてのファイル名を取得し終わると、Dir関数は空の文字列()を返します。
Excel VBAでファイル名から拡張子を除く方法は?
ファイル名から拡張子を除くには、VBAの関数を使用します。具体的には、Left関数と<strongLen関数、そしてInStr関数を組み合わせて使用します。例えば、Left(ファイル名, InStrRev(ファイル名, .) – 1)とすると、ファイル名から拡張子を除いた部分だけを取得することができます。

私は、生産性向上に情熱を持つデータ分析とオフィスツール教育の専門家です。20年以上にわたり、データ分析者としてテクノロジー企業で働き、企業や個人向けのExcel講師としても活動してきました。
2024年、これまでの知識と経験を共有するために、日本語でExcelガイドを提供するウェブサイト**「dataka.one」**を立ち上げました。複雑な概念を分かりやすく解説し、プロフェッショナルや学生が効率的にExcelスキルを習得できるようサポートすることが私の使命です。