たとえば、Excelファイル内にVBAを書いていますsample.xls。ここで、VBAでフルパス ofsample.xlsを取得します。どうすればいいのですか?
VBAを意味する場合は、たとえば次のようにFullNameを使用できます。
strFileFullName = ThisWorkbook.FullName
(コメントで考慮されるように更新:前者はActiveWorkbook.FullName
は、他のオフィスファイルが開いてアクティブになっている可能性がある場合、おそらく間違っている可能性があります。しかし、ユーザー@ user7296559 here で言及されているように、マクロを別のファイルに保存し、マクロを使用するファイルのファイル名が本当に必要な場合は、ActiveWorkbook
が正しい選択になります。 、実行時にアクティブであることが保証されている場合)
これは、すべての応答、フルネーム、パス、ファイル名を提供する単純な代替手段です。
Dim FilePath, FileOnly, PathOnly As String
FilePath = ThisWorkbook.FullName
FileOnly = ThisWorkbook.Name
PathOnly = Left(FilePath, Len(FilePath) - Len(FileOnly))
strScriptFullname = WScript.ScriptFullName
strScriptPath = Left(strScriptFullname, InStrRev(strScriptFullname,"\"))
パスのみが必要な場合は、これが最も簡単な方法です。
PathOnly = ThisWorkbook.Path
ActiveWorkbook.FullNameは、VBAマクロを別のExcelブックに保存しているが、マクロが存在する場所ではなく、編集中のExcelの詳細を取得する場合に適しています。
それらが同じファイルに存在する場合、それは問題ではありませんが、それらが異なるファイルにあり、マクロが存在する場所ではなくデータが存在するファイルが必要な場合は、ActiveWorkbookが最適です。両方のシナリオで。
これを取得する普遍的な方法があります:
Function FileName() As String
FileName = Mid(Application.Caption, 1, InStrRev(Application.Caption, "-") - 2)
End Function