如何使用vlookup vba访问已closures的Excel工作簿

我正在尝试创build一个使用VLOOKUP来访问已closures工作簿中单元格范围的Excel VBAmacros。 我不太擅长使用VBA编辑器,但似乎并没有显示有关错误的大量有用信息。

Sub WorkBookWithData() Dim currentWb As Workbook Set currentWb = ThisWorkbook Dim currentWs As Worksheet Set currentWs = currentWb.Sheets(1) Dim strFormula As String strFormula = "=VLOOKUP(currentWs.Range("B2"),'Macintosh HD:Users:myself:Documents:l[Master_Terms_Users.xlsm]Master_Terms_Users.csv'!A1:B222,2,false)" currentWs.Range("C2").Formula = strFormula End Sub 

Excel VBA编辑器挂在“strFormula =”= VLOOKUP …“部分。

谢谢

来自Siddharth Rout的评论。

你的代码中的主要问题是这一行:

 strFormula = "=VLOOKUP(currentWs.Range("B2"),'Macintosh HD:Users:myself:Documents:l[Master_Terms_Users.xlsm]Master_Terms_Users.csv'!A1:B222,2,false)" 

由于这个代码currentWs.Range("B2") 。 我们知道你要指示当前表单的范围(“B2”)(同一表单) 。 所以,你可以使用如下:

 strFormula = "=VLOOKUP(B2,'Macintosh HD:Users:myself:Documents:l[Master_Terms_Users.xlsm]Master_Terms_Users.csv'!A1:B‌​222,2,false)" 

为什么? 它只能使用B2因为您将公式设置到同一工作表中的单元格。 所以,不需要指定图纸名称

如果要设置其他工作表的单元格,则需要在该情况下指定工作表名称 。 所以,应该使用如下:

 strFormula = "=VLOOKUP(" & currentWs.name & "!B2,'Macintosh HD:Users:myself:Documents:l[Master_Terms_Users.xlsm]Master_Terms_Users.csv'!A1:B222,2,false)" 

这看起来没有像我以前,但它的作品。

 Sub Check_Master_Values() Dim newCurWb As Workbook Set newCurWb = Workbooks(2) newCurWb.Activate newCurWb.Sheets(1).Range("C2").Formula = "=VLOOKUP(B2,'Macintosh HD:Users:myself:Documents:[Master_Terms_Users.xlsm]Master_Terms_Users.csv'!$A$1:$B$269,2,FALSE)" End Sub 

在我的第一次尝试中,我没有按照从工作簿,表单到范围的任务链。 正如你在这段代码中看到的那样,我把一个新的工作簿变成了一个新的工作簿,然后是一个很大的工作簿,我需要将它分配给正确的打开的工作簿。 然后,我激活了工作簿,最后访问了Sheets对象和Range。

我现在也知道,我的工作簿select编号会根据其他工作簿的打开情况而有所不同。 ThisBook没有工作,因为在这个过程中,ThisBook引用的工作簿发生了变化。 这也可能是为什么我的初始代码不工作,除了在VLOOKUP中的不正确编码。

如果有办法指定哪个工作簿,这将是一件好事。

感谢所有在VLOOKUP部分给予帮助的人。