- ベストアンサー
親フォルダを取得する方法
- Excel VBAを使用して、アクティブブックの親フォルダを取得する方法について教えてください。
- ActiveWorkbook.Pathを使用すると、アクティブブックのファイル名以外のパスが取得できますが、ActiveWorkbook.Parent.Pathを使用すると不正なパスが返されます。
- 正しいコードを教えていただけると助かります。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
wixdwxvwrwbfqさん はじめまして。 親パスを取得するのに文字列で対応しても良いですが、できればMicrosoftが提供するクラスライブラリ等を利用した方が、安全で楽かと思います。 mystr = CreateObject("Scripting.FileSystemObject").GetParentFolderName(ActiveWorkbook.Path) でできるかと思います。 注)ルートフォルダは「C:」ではなく「C:¥」になりますが… お試し下さい。
その他の回答 (2)
- riveron77
- ベストアンサー率48% (180/370)
#1様の方が全然スマートなんですが。 対抗して長ったらしくしてみました(意味不明) 変数名とか一部おかしなことになってますが気にせず。 上司にコードレビューされたら高評価間違い無しっ -------------------------- Option Explicit Private Type Similars AmuroRay As String '自パスを格納用 TemRay As String '親パス格納用 End Type Sub EFSF() Dim RX78 As Similars Dim vPath As Variant 'Dir毎にDirの名前を格納する配列 Dim iYenCounter As Integer '自パスの「\」を数えるカウンタ Dim i As Integer 'ループ用カウンタ '自パス取得 RX78.AmuroRay = ActiveWorkbook.Path '「\」を数える iYenCounter = UBound(Split(RX78.AmuroRay, "\")) '自パスをDir毎にDirの名前を配列に格納 vPath = Split(RX78.AmuroRay, "\") '自パス配列を親Dirまでループさせて親パス作り For i = 0 To iYenCounter - 1 '親Dirだったら"\"は付けない If i = iYenCounter - 1 Then RX78.TemRay = RX78.TemRay & vPath(i) '親Dirでなければ"\"を付ける If i < iYenCounter - 1 Then RX78.TemRay = RX78.TemRay & vPath(i) & "\" Next 'とりあえずMsgBoxで親パスを出して誤魔化してみるw MsgBox "自パスは" & RX78.AmuroRay & "です" & vbCrLf & "親パスは" & RX78.TemRay & "です" End Sub
お礼
ありがとうございました。
- keithin
- ベストアンサー率66% (5278/7941)
たとえば msgbox left(activeworkbook.path, instrrev(activeworkbook.path, "\") - 1) とか。
お礼
ありがとうございました。
お礼
ありがとうございました。