Excel VBA宏报错:无法找到B2.xlsx,需从单元格读取路径打开工作簿
修正后的VBA代码及说明
原代码存在两个核心问题:
- 错误将字符串"B2"当作文件路径传入
Workbooks.Open,而非读取单元格B2内的实际路径 - 未给变量
x赋值,会触发运行时错误
以下是修正后的代码:
Sub Foo() Dim x As Workbook Dim y As Workbook Dim filePath As String ' 给x赋值为当前代码所在的工作簿(即已打开的工作簿x) Set x = ThisWorkbook ' 从Macro工作表B2单元格读取工作簿y的完整路径 filePath = x.Sheets("Macro").Range("B2").Value ' 检查路径是否有效,避免空路径报错 If filePath <> "" Then Set y = Workbooks.Open(filePath) ' 复制指定区域并粘贴到目标起始单元格(Excel会自动匹配区域大小) x.Sheets("Macro").Range("A3:A26").Copy y.Sheets("Summary").Range("M41").PasteSpecial Application.CutCopyMode = False ' 清除复制状态 Else MsgBox "Macro工作表B2单元格未填写有效路径!" End If End Sub
关键修改点:
- 用
x.Sheets("Macro").Range("B2").Value获取真实文件路径,替换原代码中的硬编码字符串"B2" - 给
x赋值为ThisWorkbook(若代码写在工作簿x的模块中),确保指向正确的目标工作簿 - 增加空路径检查,避免无效输入导致的运行错误
- 粘贴时仅指定起始单元格
M41,Excel会自动适配复制区域的大小,比固定写死M41:M63更灵活
内容的提问来源于stack exchange,提问作者Bobby
相关产品推荐
相关产品推荐

