即効テクニック

ファイル操作関連のテクニック

ファイルのパスについて

(Excel 97/2000)
エクセルファイルやその他Officeのファイル、あるいはテキストファイルなど、Windowsではさまざまなファイルが扱われますが、ファイルの存在する位置を表すのが”パス”です。

例えば、エクセルVBAでは・・・

Application.Path(エクセル本体のパス)
ThisWorkbook.Path(コードが記述されたブックのパス)
ThisWorkBook.FullName(コードが記述されたブックのフルパス)
などがよく使われます。

エクセルファイル以外でもこのようなパスを扱う場面はVBAでテキストを扱ったり、他のシステムとの連動を図る場合などは必須項目となりますが、以下ではファイルのパスの扱い方のいろいろな方法をご紹介します。
'1.Dir関数

'ReturnValue = Dir 対象ファイルフルパス

Dim RetVal As String
RetVal = Dir("C:\Windows\Calc.exe")  
'⇒ 返り値は"Calc.exe" ファイルが存在しない場合は空白

'2.Split関数でファイル名を操作(XL2000のみ)

Dim Var As Variant
Var = ThisWorkbook.FullName
Var = Split(Var, "\") '\マークを区切り文字にして配列化
MsgBox Var(UBound(Var)) '配列の上限(ここでは拡張子を含むファイル名)

'3.InStr、InstrRev関数

Dim FName As String
Dim Pos As Integer
FName = ThisWorkbook.FullName
Pos = InStrRev(FName, "\") 'フルパスの後ろから\マークの位置を検索
MsgBox Mid(FName, Pos + 1) '拡張子を含むファイル名を取得

'4.WindowsScriptingHost(WSH)

Dim FNam As String
Dim Ret As String
Dim Fso As Object

FNam = ThisWorkbook.FullName

Set Fso = CreateObject("Scripting.FileSystemObject")
Ret = Fso.GetBaseName(FNam) 'ベース名(拡張子を除くファイル名)を取得
MsgBox Ret
※このほかWSHのFileSystemObjectにはファイル、パス関連のさまざまなメソ
 ッド等があります。
 GetExtensionName(Path)・・・拡張子の取得
 GetAbsolutePathName(ファイル名)・・・絶対パスの取得
        (ファイルは存在してなくてもOK。ファイル名のみの
        指定ではカレントディレクトリのパス+ファイル名となる)
  GetParentFolderName(Path)・・・ファイルが存在するフォルダのパス取得
 など。