VBA VLookup允许用户select目录上的文件名

我一直在尝试使用VBA将VLookup公式插入到列中。 Table_array是可变的,每个月都在变化,所以我想要一个对话框来指定我想要使用的文件。 Table_array每个月的格式都是一样的,到目前为止我的公式如下:

 Sub VlookupMacro() Dim FirstRow As Long Dim FinalRow As Long Dim myValues As Range Dim myResults As Range Dim myFile As Range Dim myCount As Integer Set myFile = Application.GetOpenFilename("Excel Files (*.xls), *.xls") Set myValues = Application.InputBox("Please select the first cell in the column with the values that you're looking for", Type:=8) Set myResults = Application.InputBox("Please select the first cell where you want your lookup results to start ", Type:=8) Range(myResults, myResults.Offset(FinalRow - FirstRow)).Formula = _ "=VLOOKUP(" & Cells(FirstRow, myValues.Column) & ", myFile.value($A$2:$B$U20000), 5, False)" If MsgBox("Do you want to convert to values?", vbYesNo) = vbNo Then Exit Sub Columns(myResults.Column).Copy Columns(myResults.Column).PasteSpecial xlPasteValues Application.CutCopyMode = False End Sub 

在代码不能通过Set = myFile行的时候,我遇到了'myFile'的问题。 任何build议或修改将是最受欢迎的。 除此之外,variables文件将永远不会超过20000行(这就是为什么我已经修复了公式中的范围),我们将始终拿起第5列。

GetOpenFileName将不会返回一个对象。 因此,您不能Set值。

尝试:

 FileName = Application.GetOpenFilename(FileFilter:="Excel Files (*.xls), *.xls", Title:="Please select a file") If FileName = False Then ' User pressed Cancel MsgBox "Please select a file" Exit Sub Else Workbooks.Open Filename:=FileName End If 

你已经将MyFile声明为一个范围,但是你试图把一个文件名放在var中。 GetOpenFileName函数返回文件名,但不打开该文件。 您必须将文件名保存为stringvariables,然后使用该文件名打开工作簿。