web-dev-qa-db-ja.com

VBAでExcelファイル名/パスを取得する方法

たとえば、Excelファイル内にVBAを書いていますsample.xls。ここで、VBAでフルパス ofsample.xlsを取得します。どうすればいいのですか?

30
Veera

VBAを意味する場合は、たとえば次のようにFullNameを使用できます。

strFileFullName = ThisWorkbook.FullName

(コメントで考慮されるように更新:前者はActiveWorkbook.FullNameは、他のオフィスファイルが開いてアクティブになっている可能性がある場合、おそらく間違っている可能性があります。しかし、ユーザー@ user7296559 here で言及されているように、マクロを別のファイルに保存し、マクロを使用するファイルのファイル名が本当に必要な場合は、ActiveWorkbookが正しい選択になります。 、実行時にアクティブであることが保証されている場合)

41
Fionnuala

これは、すべての応答、フルネーム、パス、ファイル名を提供する単純な代替手段です。

Dim FilePath, FileOnly, PathOnly As String

FilePath = ThisWorkbook.FullName
FileOnly = ThisWorkbook.Name
PathOnly = Left(FilePath, Len(FilePath) - Len(FileOnly))
14
APW
   strScriptFullname = WScript.ScriptFullName 
   strScriptPath = Left(strScriptFullname, InStrRev(strScriptFullname,"\")) 
8
Mitch Wheat

パスのみが必要な場合は、これが最も簡単な方法です。

PathOnly = ThisWorkbook.Path
4
Louis

ActiveWorkbook.FullNameは、VBAマクロを別のExcelブックに保存しているが、マクロが存在する場所ではなく、編集中のExcelの詳細を取得する場合に適しています。

それらが同じファイルに存在する場合、それは問題ではありませんが、それらが異なるファイルにあり、マクロが存在する場所ではなくデータが存在するファイルが必要な場合は、ActiveWorkbookが最適です。両方のシナリオで。

2
user7296559

これを取得する普遍的な方法があります:

Function FileName() As String
    FileName = Mid(Application.Caption, 1, InStrRev(Application.Caption, "-") - 2)
End Function
0