即効テクニック |
エクセルファイルやその他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)・・・ファイルが存在するフォルダのパス取得 など。