• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:親フォルダを取得したい)

親フォルダを取得する方法

このQ&Aのポイント
  • Excel VBAを使用して、アクティブブックの親フォルダを取得する方法について教えてください。
  • ActiveWorkbook.Pathを使用すると、アクティブブックのファイル名以外のパスが取得できますが、ActiveWorkbook.Parent.Pathを使用すると不正なパスが返されます。
  • 正しいコードを教えていただけると助かります。

質問者が選んだベストアンサー

  • ベストアンサー
  • jcctaira
  • ベストアンサー率58% (119/204)
回答No.3

wixdwxvwrwbfqさん はじめまして。 親パスを取得するのに文字列で対応しても良いですが、できればMicrosoftが提供するクラスライブラリ等を利用した方が、安全で楽かと思います。 mystr = CreateObject("Scripting.FileSystemObject").GetParentFolderName(ActiveWorkbook.Path) でできるかと思います。 注)ルートフォルダは「C:」ではなく「C:¥」になりますが… お試し下さい。

wixdwxvwrwbfq
質問者

お礼

ありがとうございました。

その他の回答 (2)

  • riveron77
  • ベストアンサー率48% (180/370)
回答No.2

#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

wixdwxvwrwbfq
質問者

お礼

ありがとうございました。

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.1

たとえば msgbox left(activeworkbook.path, instrrev(activeworkbook.path, "\") - 1) とか。

wixdwxvwrwbfq
質問者

お礼

ありがとうございました。

関連するQ&A

専門家に質問してみよう