Excel / VBA从文件select中获取完整的文件path

我有一个VBAmacros,做这样的事情

Sub test() For Each X In Workbooks("file.xlsx").Sheets("sheetname") Do something Next End Sub 

我正在执行此macros的工作表不是 for-each循环中的工作表。 我也通过工作表中的一个button来运行这个macros。

但是,该macros执行的时间的文件名和位置将有99%的不同。 所以,当这个macros被执行时,我想要一个可能性,一个“打开文件”对话框出现,我select一个文件,然后在那个macros中使用那个文件。

我也想这样做:

 Dim worksheetname as variable For Each X in worksheetname.sheets("sheetname") 

而不是直接排队,因为它比直接在代码中更好。

但是,即使使用硬编码的文件名,我也没有正确地做到这一点(不知道该如何将其调暗,以及如何将其设置为文件名),如果你们也可以帮助我通过文件对话框进行连接),那就太好了。

发现至less有这么一个。 所以现在只剩下从文件对话框select它

谢谢!

XEB

尝试这样的事情,我把它作为一个函数与文件typesfilter的args和(可选)它将打开的默认目录:

 Sub g() FilePath = FileSelectBox("*.xlsx") Msgbox "Filepath = " & FilePath End Sub Function FileSelectBox(ByRef FileType As String, Optional ByVal DefaultDir As String) As String Dim a As Object, FileName As String, varFile As Variant Set a = Application.FileDialog(msoFileDialogFilePicker) With a .AllowMultiSelect = False .Title = "Select File..." .Filters.Clear .Filters.Add "Excel Files", FileType If Not IsMissing(DefaultDir) And DefaultDir <> "" Then .InitialFileName = DefaultDir If .Show = True Then For Each varFile In .SelectedItems FileSelectBox = varFile Next varFile End If End With End Function 

MSISDN: https : //msdn.microsoft.com/en-us/library/office/ff196794.aspx