ハマっている「お菓子」を教えて!

いつもお世話になっております。

FSO.getAbsolutePathName でフルパスを取得できますが、例えばDesktop上にあるファイルが、Documentsで取得されます。下記をそのままBOOK1のまま保存するとDesktopで取得していましたが、名前を変更すると、どこへ持っていってもDocumentsになりました。

そのような現象ありませんか?

Sub test()

Dim FSO As Object
Dim my_filename As String
Dim my_fullname As String
Dim my_Dirpath As String

Set FSO = CreateObject("Scripting.FileSystemObject")

my_filename = FSO.GetFileName(ActiveWorkbook.Name) 'ブック名と拡張子
my_fullname = FSO.getAbsolutePathName(my_filename) 'このブックのフルパス
my_Dirpath = ThisWorkbook.Path 'このブックのフォルダパス

Debug.Print my_filename
Debug.Print my_fullname
Debug.Print my_Dirpath

End Sub

A 回答 (1件)

>下記をそのままBOOK1のまま保存するとDesktopで取得していましたが、名前を変更すると、どこへ持っていってもDocumentsになりました。


名前を変更したことが原因ではありません。
excelを起動したときの作業ディレクトリがDocumentsだからです。
getAbsolutePathNameは、作業ディレクトリを付加して、完全パス名を作り上げます。
現在の作業ディレクトリを変えれば、そのディレクトリで完全パス名を作り上げます。
Documents以外の個所に以下のマクロを持つexcelファイルを保存してください。(Documentsに保存して他へ移動してもOKです)
移動先のexcelを開いてこのマクロを呼び出してください。
このexcelが存在するディレクトリに作業ディレクトリを変更してから再度、FSO.getAbsolutePathNameを呼び出しています。
このファイル(Book1.xlsm)の完全パスが、D:\goo\data2\Book1.xlsm とすると
2回目の
my_fullname = FSO.getAbsolutePathName(my_filename) は、D:\goo\data2\Book1.xlsm になります。
Sub test()

Dim FSO As Object

Dim my_filename As String
Dim my_fullname As String
Dim my_Dirpath As String

Set FSO = CreateObject("Scripting.FileSystemObject")
Debug.Print "current dir=" & CurDir
my_filename = FSO.GetFileName(ActiveWorkbook.Name) 'ブック名と拡張子
my_fullname = FSO.getAbsolutePathName(my_filename) 'このブックのフルパス
my_Dirpath = ThisWorkbook.Path 'このブックのフォルダパス

Debug.Print my_filename
Debug.Print my_fullname
Debug.Print my_Dirpath

ChDrive (ThisWorkbook.Path)
ChDir (ThisWorkbook.Path)
Debug.Print "new current dir=" & CurDir
my_filename = FSO.GetFileName(ActiveWorkbook.Name) 'ブック名と拡張子
my_fullname = FSO.getAbsolutePathName(my_filename) 'このブックのフルパス
my_Dirpath = ThisWorkbook.Path 'このブックのフォルダパス

Debug.Print "new filename=" & my_filename
Debug.Print "new fullname=" & my_fullname
Debug.Print "new dirpath=" & my_Dirpath

End Sub
    • good
    • 0
この回答へのお礼

なるほど、そういうことだったのですか。
勉強になりました。
どうもありがとうございました。

お礼日時:2019/10/22 21:40

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報