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

如何使用vlookup vba访问已关闭的Excel工作簿,vba,excel,Vba,Excel,我正在尝试创建一个Excel VBA宏,该宏使用VLOOKUP访问封闭工作簿中的一系列单元格。我不太擅长使用VBA编辑器,但它似乎没有显示很多关于错误的有用信息 Sub WorkBookWithData() Dim currentWb As Workbook Set currentWb = ThisWorkbook Dim currentWs As Worksheet Set currentWs = currentWb.Sheets(1) Dim strF

我正在尝试创建一个Excel VBA宏,该宏使用VLOOKUP访问封闭工作簿中的一系列单元格。我不太擅长使用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…”部分挂起

谢谢您的评论

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

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)"
strFormula = "=VLOOKUP(" & currentWs.name & "!B2,'Macintosh HD:Users:myself:Documents:l[Master_Terms_Users.xlsm]Master_Terms_Users.csv'!A1:B222,2,false)"
为什么?它可以只使用
B2
,因为您将公式设置为同一工作表中的单元格。因此,不需要指示工作表名称

如果要设置来自其他工作表的单元格,则需要在这种情况下指示工作表名称

strFormula = "=VLOOKUP(B2,'Macintosh HD:Users:myself:Documents:l[Master_Terms_Users.xlsm]Master_Terms_Users.csv'!A1:B‌​222,2,false)"
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
在我的第一次尝试中,我没有遵循从工作簿到工作表,再到范围的分配链。正如您在这段代码中看到的,我将一个新工作簿变暗-然后是大喜乐时刻,我需要将它分配到正确的打开工作簿。然后,我激活了工作簿,最后访问了工作表对象和范围

我现在也知道,我的工作簿选择编号将根据打开的其他工作簿的数量而有所不同。这本书不起作用,因为在这个过程中,这本书引用的工作簿发生了变化。这可能也是我的初始代码不起作用的原因,除了VLOOKUP中的错误编码之外

如果有一种方法可以指定正在运行的工作簿,那就太好了


感谢所有在VLOOKUP部分提供帮助的人。

1
首先打开第二个工作簿。
2
在第一个工作簿中,手动键入VLOOKUP公式。
3
关闭第二个工作簿
4
现在VLOOKUP公式将显示路径。按原样复制该公式。
5
strFormula=您需要的公式复制的
currentWs.Range(“B2”)
内部引号没有任何意义:)我猜是这样的(没有MAC来测试它)
strFormula=“=VLOOKUP(B2,'Macintosh HD:Users:My:Documents:l[Master\u Terms\u Users.xlsm]Master\u Terms\u Users.csv'!A1:B222,2,false)”