Excel VBA:フォルダが空か調べる|PathIsDirectoryEmpty

フォルダが空かどうか調べるには、Windows APIのPathIsDirectoryEmptyを使うと簡単です。



Homeに戻る > Excel ファイル操作のTipsへ

Excel VBAでフォルダが空かどうかは、フォルダの削除する前などに必要になる処理です。

Dir関数を使いファイルやフォルダの有無を調べることができますが、PathIsDirectoryEmptyを使う方が簡単です。

もし指定したフォルダが無い場合は0が返るので、事前にフォルダの有無を確認する方が安全です。

PathIsDirectoryEmptyの構文

Declare Function PathIsDirectoryEmpty Lib "SHLWAPI.DLL" Alias "PathIsDirectoryEmptyA" (ByVal pszPath As String) As Boolean

戻り値:空のフォルダならば1を返し、そうでなければ0を返します。

・pszPath:調べるフォルダを指定します。


関連する「ファイルとフォルダの存在確認|Dir関数を使用」を掲載していますので参照してください。



フォルダが空かどうか調べるVBAコード


ExcelシートとVBA入力画面

下のようにシートにコマンドボタンを2個挿入します。
作成したExcelシート

PathIsDirectoryEmptyの宣言文と、それぞれのコマンドボタンにVBAコードを入力します。
VBAの入力画面

VBAコードの解説

  1. PathIsDirectoryEmptyを宣言します。
  2. If文でPathIsDirectoryEmptyにフォルダを指定し実行します。
  3. 1が返ればコマンドボタンに「空」と表示します。
  4. 1でなければコマンドボタンに「有」と表示します。

ExcelシートのVBAコード

Option Explicit

'フォルダが空か調べる
'戻り値
'空の場合: 1
'空でなければ: 0
Private Declare Function PathIsDirectoryEmpty Lib "SHLWAPI.DLL" Alias _
"PathIsDirectoryEmptyA" (ByVal pszPath As String) As Boolean

Private Sub CommandButton1_Click()
    'フォルダが空か調べる
    If PathIsDirectoryEmpty("C:\test\") = 1 Then
        CommandButton1.Caption = "空"
    Else
        CommandButton1.Caption = "有り"
    End If
End Sub

Private Sub CommandButton2_Click()
    'フォルダが空か調べる
    If PathIsDirectoryEmpty("C:\windows\") = 1 Then
        CommandButton2.Caption = "空"
    Else
        CommandButton2.Caption = "有り"
    End If
End Sub

実行したExcelシート

「C:\test\」は空で、「C:\windows\"」は空でない結果になりました。
実行したExcelシート



Homeに戻る > Excel ファイル操作のTipsへ

■■■
このサイトの内容を利用して発生した、いかなる問題にも一切責任は負いませんのでご了承下さい
■■■
当ホームページに掲載されているあらゆる内容の無許可転載・転用を禁止します


Copyright (c) Excel-Excel ! All rights reserved