我打算或多或少地自动完成一些工作,并考虑使用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))
我认为这与我如何使用" openWs"这样在VLookUp参数内部。任何人都可以确定我认为错在哪里?
我使用Path和filepath作为变量,因为程序后来每月都会有一个新的Path和一个新的文件路径,这是我知道的最好的方法(基本上,路径和文件路径由月份名称和根据今天的日期我接受的年份名称。
答案 0 :(得分:3)
Replace all of the "openWs" in front of Match and VLOOKUP with "Application" so that it reads:
Value = Application.VLOOKUP("John",openWs.Range("A1:S30"), Application.Match("Age", openWs.Range("A1:S1")))