• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBAによる絶対パス取得時のサーバー名取得について)

VBAによる絶対パス取得時のサーバー名取得について

このQ&Aのポイント
  • VBAを使用して、開いているファイルの絶対パスを取得する方法について調べましたが、ドライブ名での取得しか見つかりませんでした。
  • パソコンでドライブ割り当てしているドライブ名ではなく、サーバー名を含んで絶対パスを取得したいです。
  • 採番台帳のファイルを複数のメンバーで使用し、採番したファイルにリンクを付与して送るためには、サーバー名も含んだ絶対パスが必要です。

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

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

こんな具合ですかね。 調べたいブックは既に開かれていて,変数oに取得してあるとします。 Sub macro1()  Dim objNetWork As Object  Dim objDrv As Object  Dim i As Long  Dim d As String  Dim o As Workbook  Set o = Workbooks("とりあえず目的のブック.xls")  d = Left(o.Path, 2)  Set objNetWork = CreateObject("Wscript.Network")  Set objDrv = objNetWork.enumnetworkdrives  For i = 0 To objDrv.Length - 1 Step 2   If d = objDrv(i) Then    d = objDrv(i + 1)    Exit For   End If  Next i  MsgBox d & Mid(o.Path, 3, 99)  Set objDrv = Nothing  Set objNetWork = Nothing End Sub

imachan_net
質問者

補足

ありがとうございます。 確かに、ドライブ設定されている場合には、 そのドライブ設定されている、『サーバー+共有名+・・・』で取得できます。 質問には書いていなかったですが、 パソコンでドライブ割り当てをしていなくて、 メールからのリンクでファイル(台帳)を開いた場合でも、 正しくサーバーからの絶対パスを取得したいのです。

その他の回答 (1)

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

ドライブ設定されていない場合は,最初から意図通り「\\サーバ名\…」で取得できているはずですが? とりあえず当初ご質問は解決し,ご相談は終わっているはずです。 追加ご質問については,具体的な状況(あなたがやっていることの背景じゃなく,実際のエクセルが具体的にどんな結果を返してくるのか)がさっぱり見えませんので,残念ですが回答できません。 「メールからクリックしてブックを開きました」 「その場合の 当該ブック.path がどうなっています」 「その時に,こういう結果が欲しいです」 といったエクセルの事実を添えて,もう一度ご相談を出し直してください。

関連するQ&A

専門家に質問してみよう