2015年6月4日木曜日

DIR関数で取得できない長いパスのファイル存在チェックを行う方法

EXCEL VBAのDIR関数には、指定できるパスの長さが256バイトという制限があります。フォルダ階層を深く掘っている場合、その制限に引っかかってしまうことがあります。

DIR関数で取得できないような長いパスの存在チェックを行いたいときにはどうしたらいいのか。

検索してみたところ、FSOを使えばいことが分かりました。

FSOを使ってファイルの存在確認を行う方法 サンプルコード
Dim sFilename As String
Dim bFlag As Boolean
Dim FSO As Object

Set FSO = CreateObject("Scripting.FileSystemObject")

bFlag = FSO.FileExists(sPath)

DIR関数にフルパスを指定して、戻り値でファイル名を取得ということをしていました。しかしFSOを使ったファイルの存在チェックでは、戻ってくるのは存在するか否かの情報だけです。(TrueまたはFalse)

DIR関数を使わずに、FSOでファイル名を取得できることができます。ただし拡張子より前の値と拡張子を合わせて取得できないので、ファイル名を取得するにはそれらを合体させる必要があります。

FSOを使ってファイル名を取得する方法 サンプルコード
Dim sFilename as String
    
sFilename = FSO.GetBaseName(sPath) & "." & FSO.GetExtensionName(sPath)

この記事はお役に立てたでしょうか?
もし参考になると思っていただけたら、こちらのボタンから共有をお願いします。

このエントリーをはてなブックマークに追加