VBA:パスの最後がフォルダかファイルかを確認する方法(GetAttr関数)
VBAでツールを作っていると、パスからフォルダ名やファイル名を取得したい場合があります。その際に、パスの最後がフォルダなのかファイルなのかを判別したい場合があります。
そのような場合に使える「GetAttr」関数の説明と、サンプルコードを記事にしておきます。
◆「GetAttr」関数を使ってチェックする方法
「GetAttr」関数とは
「GetAttr」関数はパスから、ファイル、ディレクトリ、またはフォルダーの属性を表す値を返してくれます。
1 |
GetAttr(pathname) |
戻り値は以下になります。Microsoftのサイトを参照にしています。
フォルダの場合は「16」が戻ってきます。
定数 | 値 | 説明 |
vbNormal | 0 | 標準 |
vbReadOnly | 1 | 読み取り専用 |
vbHidden | 2 | 非表示 |
vbSystem | 4 | システム ファイル |
vbDirectory | 16 | ディレクトリまたはフォルダー |
vbArchive | 32 | 前回のバックアップ以降にファイルが変更されています |
vbAlias | 64 | 指定されたファイル名はエイリアス |
◆「GetAttr」関数のサンプルコード
このサンプルでは、フォルダかどうかの判別したあと、処理を分岐できるようにしてあります。
1 2 3 4 5 6 7 8 9 |
Dim chk As Long '「GetAttr」関数で戻り値を取得します。' chk = GetAttr(zipTargetPath) '取得した戻り値で処理を分岐させます。' If chk = 16 Then MsgBox "フォルダです。" Else MsgBox "フォルダ以外のファイルです。 End If |