- ベストアンサー
VBAによる絶対パス取得時のサーバー名取得について
- VBAを使用して、開いているファイルの絶対パスを取得する方法について調べましたが、ドライブ名での取得しか見つかりませんでした。
- パソコンでドライブ割り当てしているドライブ名ではなく、サーバー名を含んで絶対パスを取得したいです。
- 採番台帳のファイルを複数のメンバーで使用し、採番したファイルにリンクを付与して送るためには、サーバー名も含んだ絶対パスが必要です。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんな具合ですかね。 調べたいブックは既に開かれていて,変数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
その他の回答 (1)
- keithin
- ベストアンサー率66% (5278/7941)
ドライブ設定されていない場合は,最初から意図通り「\\サーバ名\…」で取得できているはずですが? とりあえず当初ご質問は解決し,ご相談は終わっているはずです。 追加ご質問については,具体的な状況(あなたがやっていることの背景じゃなく,実際のエクセルが具体的にどんな結果を返してくるのか)がさっぱり見えませんので,残念ですが回答できません。 「メールからクリックしてブックを開きました」 「その場合の 当該ブック.path がどうなっています」 「その時に,こういう結果が欲しいです」 といったエクセルの事実を添えて,もう一度ご相談を出し直してください。
補足
ありがとうございます。 確かに、ドライブ設定されている場合には、 そのドライブ設定されている、『サーバー+共有名+・・・』で取得できます。 質問には書いていなかったですが、 パソコンでドライブ割り当てをしていなくて、 メールからのリンクでファイル(台帳)を開いた場合でも、 正しくサーバーからの絶対パスを取得したいのです。