Excel VBA:フルパスから親パスを取得する実行コード

フルパスの先頭から「¥」を検索し、最後の「¥」から親フォルダを取得します。




Homeに戻る > Excel ファイル操作のTipsへ

ここではExcelブックの自分自身があるフォルダから、Excel VBAでその一つ手前の親フォルダ名を取得します。

自分自身があるフォルダは、ThisWorkbook.Pathで取得できます。

「¥」の検索はInstr関数を使用します。

Instr関数の構文

InStr([start, ]string1, string2[, compare])

文字列を検索する関数

  • start:[省略可]検索する開始位置を指定します。
  • string1:[省略不可]検索対象の文字列を指定します。
  • string2:[省略不可]検索する文字列を指定します。
  • compare:[省略可]文字列比較のモードを指定します。

compareの定数

定数 内容
vbUseCompareOption -1 Option Compareステートメントの設定で比較します。
デフォルトはvbBinaryCompareです。
vbBinaryCompare 0 バイナリモードで比較します。
全角半角、大文字・小文字を区別します。
vbTextCompare 1 テキストモードで比較します。
全角半角、大文字・小文字を区別しません。

戻り値

条件 戻り値
引数string1の長さが0の時 0
引数string1がNullの時 Null
引数string2の長さが0の時 引数Startの値
引数string2がNullの時 Null
見つからなかった時 0
見つかった時 最初に見つかった文字位置
引数startが引数string2の文字長さより大きいとき 0

関連する記事として「ファイルとフォルダの存在確認|Dir関数を使用」を掲載していますので参照してください。



フルパスから親パスを取得するVBA

Excelシート画面

「親パスの取得」ボタンがクリックされると下記の流れで実行されます。

  1. A6にこのエクセルファイルがあるフォルダを表示
  2. 親パス取得プロシージャを実行。「¥」を検索し取得します。
  3. A7に結果表示
パス名取得シート


Excel VBA実行コード

VBE入力画面

VBE入力画面

VBAの解説

  1. Doループで先頭から検索します。
  2. 見つかれば見つかった位置+1から検索します。
  3. 見つからなければLeft関数で、見つかった位置-1から取り出します。

Option Explicit

Public Function ExGetParentPath(sPath As String) As String
    Dim str As String
    Dim n1 As Integer
    Dim n2 As Integer
    
    n2 = 0
    Do
        n2 = n2 + 1
        n1 = InStr(n2, sPath, "\")
        If n1 <> 0 Then n2 = n1
    Loop While n1 <> 0
    ExGetParentPath = Left(sPath, n2 - 1)
End Function

Private Sub CommandButton1_Click()
    
    Range("A6") = ThisWorkbook.Path
    Range("A7") = ExGetParentPath(ThisWorkbook.Path)
   
End Sub



Homeに戻る > Excel ファイル操作のTipsへ

■■■
このサイトの内容を利用して発生した、いかなる問題にも一切責任は負いませんのでご了承下さい
■■■
当ホームページに掲載されているあらゆる内容の無許可転載・転用を禁止します


Copyright (c) Excel-Excel ! All rights reserved