从其他工作簿使用Vlookup时遇到问题

我打算做一些或多或less的自动化工作,并且正在考虑使用Excel VBA。 基本上我想要一个单独的工作簿从一些不同的工作簿获取数据。

为此,我尝试过:

Dim openWb As Workbook Dim openWs As Worksheet Path = Dir("PathToFile\File.xlsx") filepath = "PathToFile" Set openWb = Workbooks.Open(filepath & Path) Set openWs = openWb.Sheets("Sheet1") currentwb.Sheets("Sheet2").Cells.(2, 20).Value = openWs.VLOOKUP("John",openWs.Range("A1:S30"), openWs.Match("Age", openWs.Range(A1:S1)) 

我想实现的基本上是从对应于“John”的行和与“Age”对应的列中获取一个值。 我使用匹配相当大的范围(而不是一列),以避免其他人改变文件会导致任何问题的情况。

这给了我行上的语法错误:

 Value = openWs.VLOOKUP("John",openWs.Range("A1:S30"), openWs.Match("Age", openWs.Range(A1:S1)) 

我认为这与VLookUp参数中的“openWs”等有关。 任何人都可以确定我认为错在哪里?

我使用path和文件path作为variables,因为程序每个月都会有一个新的path和一个新的文件path,这是我所知道的最好的方式(基本上,path和文件path由月份名称和年份名称组成根据今天的date我被污染了)。

将Match和VLOOKUP前的所有“openWs”replace为“Application”,使其成为:

 Value = Application.VLOOKUP("John",openWs.Range("A1:S30"), Application.Match("Age", openWs.Range("A1:S1")))