通过VBA获取刚刚打开的excel文件的地址

我创build了一个简单的空excel文件,并在工作簿上写一个简单的macros:

Private Sub Workbook_NewSheet(ByVal Sh As Object) MsgBox ThisWorkbook.Path End Sub 

打开文件并在Excel文件中插入新的表单后,msgBox什么都不显示。 但是,在保存该文件后,MsgBox显示正确的地址。 这是为什么?! 文件刚刚打开后,如何获得文件地址?

这是因为新创build的工作簿没有path。

一旦你保存它,那么它会有一个真正的path,你可以得到

你可以改变你的子如下:

 Private Sub Workbook_NewSheet(ByVal Sh As Object) If ThisWorkbook.Path = "" Then '<--| if the workbook doesn't have path, yet With Application.FileDialog(msoFileDialogSaveAs) '<--| have the user choose a path and a name .Title = "Select Folder and name" .InitialFileName = "C:\" If .Show = 0 Then Exit Sub '<--| if the user canceled the dialog box then exit sub ThisWorkbook.SaveAs .SelectedItems(1), xlOpenXMLWorkbookMacroEnabled '<--| otherwise save the workbook to the specified path as a macro enabled excel file End With End If MsgBox ThisWorkbook.Path '<--| finally show the workbook path! End Sub