教えて!ExcelVBA!

ExcelVBAの基礎知識・書き方について紹介します。

【ExcelVBA 関数】Dir関数で指定パスにファイルが存在するか判定する方法を教えて!

f:id:m_kbou:20220117081321p:plain

 

 

構文

記述方法は以下の通りとなります。

Dir(”[パス]”)

[説明]:

指定パスのファイルが存在するか否かを判定します。指定したファイルが存在する場合にはファイル名を、存在しない場合には空白を戻り値として返します。

[パス] 調べたいファイルのパスを記述します。
※「”」(ダブルクォーテーション)で囲みます。

[記述例]:

Dir("C:\Windows\ftp.dll")
Dir("C:\Windows\*.*")

 

使い方

使い方について具体的に説明します。

指定パスのファイルが存在する場合(例①:特定ファイルを指定)

指定したパスのファイルが存在する場合(例①)について説明します。

[プログラミング例①]:

Sub サンプル()

  MsgBox Dir("C:\Windows\ftp.dll")

End Sub

内容は、「C:\Windowsにftp.dllファイルが存在するか否か判定し、存在する場合にはMsgBoxで表示して下さい。」との意味になります。

f:id:m_kbou:20220117082317p:plain

※上記のプログラミング例は、VBE(VBA記述画面)に記述しないと実行ができません。VBEの開き方についてはこちらを参考にして下さい。 

[実行例①]:

今回の実行例では、C:\Windowsにftp.dllファイルが存在している事を前提に実行します。

f:id:m_kbou:20220117082446p:plain

①<実行>ボタンには上記のプログラミング例のプログラムが登録されています。<実行>ボタンをクリックします。(※ボタンの作り方やボタンにプログラムを割り当てるにはこちらを参考にして下さい。)

f:id:m_kbou:20220117082349p:plain

②結果は以下の通りとなります。C:\Windowsにftp.dllファイルが存在しているため、MsgBoxで「ftp.dll」が表示されました。

f:id:m_kbou:20220117082401p:plain

[サンプル①]:

上記で説明したファイルをダウンロードできます。ご自由にお使い下さい。

drive.google.com

指定パスのファイルが存在する場合(例②:ワイルドカードを使用)

指定したパスのファイルが存在する場合(例②)について説明します。

[プログラミング例②]:

Sub サンプル()

  MsgBox Dir("C:\Windows\*.*")

End Sub

内容は、「C:\Windowsにファイルが存在するか否か判定し、存在する場合にはMsgBoxで表示して下さい。」との意味になります。(※今回はワイルドカード(*)を使用しました。ワイルドカードは特定ファイルではなくあいまい検索によるファイルを特定する場合に使用します。ファイル名及び拡張子共にワイルドカードを使用しました。)

f:id:m_kbou:20220117084849p:plain

※上記のプログラミング例は、VBE(VBA記述画面)に記述しないと実行ができません。VBEの開き方についてはこちらを参考にして下さい。 

[実行例②]:

今回の実行例では、C:\Windowsには複数のファイルが存在しており、ディレクトリ内の最初のファイルが「bfsvc.exe」である事を前提に実行します。

f:id:m_kbou:20220117084904p:plain

①<実行>ボタンには上記のプログラミング例のプログラムが登録されています。<実行>ボタンをクリックします。(※ボタンの作り方やボタンにプログラムを割り当てるにはこちらを参考にして下さい。)

f:id:m_kbou:20220117084917p:plain

②結果は以下の通りとなります。C:\Windowsにはファイルが複数存在していますが、ディレクトリ内の最初のファイルである「bfsvc.exe」がMsgBoxでが表示されました。

f:id:m_kbou:20220117084927p:plain

[サンプル②]:

上記で説明したファイルをダウンロードできます。ご自由にお使い下さい。

drive.google.com

指定パスにファイルが存在する場合の説明は以上です。

 

指定パスのファイルが存在しない場合

指定したパスのファイルが存在しない場合について説明します。

[プログラミング例]:

Sub サンプル()

  MsgBox Dir("C:\Windows\テスト.dll")

End Sub

内容は、「C:\Windowsにテスト.dllファイルが存在するか否か判定し、存在する場合にはMsgBoxで表示して下さい。」との意味になります。

f:id:m_kbou:20220117090853p:plain

※上記のプログラミング例は、VBE(VBA記述画面)に記述しないと実行ができません。VBEの開き方についてはこちらを参考にして下さい。 

[実行例]:

今回の実行例では、C:\Windowsにテスト.dllファイルが存在しない事を前提に実行します。

f:id:m_kbou:20220117090906p:plain

①<実行>ボタンには上記のプログラミング例のプログラムが登録されています。<実行>ボタンをクリックします。(※ボタンの作り方やボタンにプログラムを割り当てるにはこちらを参考にして下さい。)

f:id:m_kbou:20220117091427p:plain

②結果は以下の通りとなります。C:\Windowsにテスト.dllファイルが存在しないため、Msgboxで空白が表示されました。(※ファイルが存在しない場合は、戻り値は空白となります。)

f:id:m_kbou:20220117091439p:plain

[サンプル]:

上記で説明したファイルをダウンロードできます。ご自由にお使い下さい。

drive.google.com

指定パスにファイルが存在しない場合の説明は以上です。

 

おわりに

今回はDir関数を使用した指定パスにファイルが存在するか否か判定する方法について説明しました。この関数はChDriveステートメントChDirステートメントと一緒に使用される事が多いです。是非こちらも一緒に覚えておいて下さい。