Digital_Neko

フリーランスプログラマー

Excel-VBA ファイル名を取得しよう。 ファイルシステムオブジェクト、ファイルダイアログオブジェクトの使い方

Excel-VBA ファイルシステムオブジェクト、ファイルダイアログオブジェクトの使い方 ファイル名を取得しよう

今回は、ファイル名を取得する方法を解説して行きます。ファイル名を取得できるようになると、VBAでできる事が多くなります。「ファイルシステムオブジェクト」、「ファイルダイアログオブジェクト」の合わせ技を使います。早速プログラムをしていきましょう。

ファイルシステムオブジェクトを使ってファイルシステムへアクセスする際、私は参照設定をしています。参照設定の方法は、

(1)「ツール」を選択、(2)「参照設定」を選択。(3)「Microsoft Scripting Runtime」のチェックボックスにチェックを入れて、「OK」をクリックします。(注Create Object関数を使う方法もあります。)

FileSystemObjectのインスタンスを作成します。そしてGetFileNameメソッドを利用してファイル名を取得します。サンプルプログラムは下記になります。

Dim fs as New FileSystemObject

fs.GetFileName(ファイルパス) 

これでファイル名を取得します。

ここで問題になってくるのが「ファイルパス」の取得です。私がよく使う、FileDialogオブジェクトを利用する方法を紹介します。

方法としては、「ファイルピッカー」を用いて、ファイルを選択できるようにします。
プログラムの順序を説明します。

ファイルの複数選択はしないので、

AllowMultiSelect=False

としてファイルの複数選択を許可しないにします。

次にダイアログボックスを開く必要があるので、「Show」メソッドを用います。Excelがファイルを正常に開くと「Show」メソッドはTrueを返します。

「Show」メソッドが「True」を返したらファイル名を変数に入れて取得します。ファイルパスは1つなので「SelectedItems(1)」(インデックスを1)とします。

正常に開けない(「Show」メソッドが「False」を返した)場合、「Exit Sub」 で終了します。正常に開けない場合の処理を入れないと、エラーで止まるので注意が必要です。下記はファイルパスを取得するサンプルプログラムです。

Dim fs as FileDialog
Dim fPath as String

Set fs = Application.FileDialog(msoFileDialogFilePicker)

fs.AllowMultiSelect = False

If fs.Show = true then
 fPath = fs.SelectedItems(1)
Else
Exit Sub
End if

これでファイルパスを取得できたので、ファイルシステムオブジェクトと組み合わせます。

Dim FileName as String

FileName=fs.GetFileName(fPath)

これで、ファイル名を取得できます。ファイル名を取得することによって、他のExcelファイルを操作できるようになります。