如何用VBA从浏览器选择的外部工作簿执行VLOOKUP
解决VBA中VLOOKUP引用外部文件的问题
你的代码核心问题是把VBA变量openbook直接写进了公式字符串——Excel公式根本识别不了这个VBA变量,得换成Excel能解析的外部工作簿引用格式(带文件名的工作表区域引用)。
修正步骤:
- 先获取打开的工作簿名称(含扩展名),用
openbook.Name - 把这个名称拼接成Excel公式能识别的区域引用:
"[" & openbook.Name & "]GL!C1:C4" - 再把这个拼接好的字符串代入VLOOKUP公式里
修正后的完整代码:
Sub bdmachine() Dim filetoopen As Variant Dim openbook As Workbook Dim lookupRange As String ' 存储格式化后的查找区域引用 filetoopen = Application.GetOpenFilename( _ Title:="Browse for the Breakdown that you want to turn into a lead sheet.", _ FileFilter:="Excel Files (*.xls*), *xls*") If filetoopen <> False Then Set openbook = Application.Workbooks.Open(filetoopen) ' 构建Excel能识别的外部区域引用 lookupRange = "[" & openbook.Name & "]GL!C1:C4" With Selection ' 代入正确的区域引用到公式中 .FormulaR1C1 = "=VLOOKUP(RC[-1], " & lookupRange & ", 4, 0)" End With End If End Sub
补充说明:如果打开的工作簿路径包含空格或特殊字符,Excel会自动给引用加上单引号,上述写法已经兼容这种情况,无需额外处理。
内容的提问来源于stack exchange,提问作者Anil Sargin
相关产品推荐
相关产品推荐

