
いつもお世話になっております。
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

No.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
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBA This Workbookモジュールを別ファイルにコピーする方法 1 2022/09/14 01:51
- Visual Basic(VBA) 複数のcsvファイルをExcelに一括変換したい 2 2023/03/03 12:44
- Visual Basic(VBA) エクセルVBA(実行時エラー438)の対処法を教えてもらえないでしょうか 3 2023/04/22 13:43
- Visual Basic(VBA) vbaのエラー対応(実行時エラー7:メモリが不足しています) 4 2023/04/24 00:20
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Visual Basic(VBA) batからexeを実行し戻り値を受け取る バッチからEXEの結果を受け取りたいのですが、 下記のバッ 1 2023/07/04 15:13
- Visual Basic(VBA) vbaの構文の修正相談(xmlファイルを順に開いてコピペ作業) 1 2023/04/22 01:18
- Visual Basic(VBA) batからexeを実行し戻り値を受け取る EXEの実行内容の結果によって、戻り値を0か1かで返したい 1 2023/07/04 16:40
- Visual Basic(VBA) VBA 請求書自動作成 3 2022/04/24 01:58
- Visual Basic(VBA) Excel VBAについて、 フォルダ内のファイルを全て開きたい場合、 FSOを使えば、Dirは使わ 1 2023/01/27 13:18
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
どんなプログラムを書いても指...
-
フルパスから最後のディレクト...
-
マクロで指定セルの文字列(ファ...
-
FTPでputすると空ファイルが出...
-
ファイルやディレクトリの存在...
-
fopenで別ディレクトリにファイ...
-
ExcelVBAでカレントディレクト...
-
「UNCパスはサポートされません...
-
コマンドプロンプトについて
-
絶対パスの絶対て英語で何でし...
-
windows.hがincludeされない
-
apache OpenSSLの格納場所は?
-
C言語を用いたファイルの一括削...
-
ThisWorkbook.Pathについて
-
ドラッグ&ドロップについてです...
-
新規作成ファイルパスが有効か...
-
C:ドライブに解凍したファイル...
-
ファイルダイアログのカレント...
-
ネットワーク上のコンピュータ...
-
C言語初心者の質問失礼します。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
どんなプログラムを書いても指...
-
フルパスから最後のディレクト...
-
「UNCパスはサポートされません...
-
FTPでputすると空ファイルが出...
-
絶対パスの絶対て英語で何でし...
-
fopenで別ディレクトリにファイ...
-
ExcelVBAでカレントディレクト...
-
ファイルやディレクトリの存在...
-
windows.hがincludeされない
-
セルに入力されたパスでフォル...
-
ネットワーク上のコンピュータ...
-
Ubuntu テキストファイルをどこ...
-
C言語を用いたファイルの一括削...
-
webアプリケーションでの画像フ...
-
新規作成ファイルパスが有効か...
-
ファイルダイアログのカレント...
-
ExcelVBA サーバーの(共有フォ...
-
GetPrivateProfileStringでini...
-
エクセルVBAで相対パスでファイ...
-
マイクラでPythonのプログラミ...
おすすめ情報