ファイルのパスについて
エクセルファイルやその他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)・・・ファイルが存在するフォルダのパス取得
  
 など。

Excel97,2000



戻る


Excel Word Access VBA! モーグ