VBA执行粘贴操作时报下标越界错误,无法定位问题原因求助
代码错误排查
你的代码存在3个明确问题,是报错的直接原因:
- Range参数缺少引号:
Range(A2)写法错误,VBA会将无引号的A2识别为未定义的变量,而非单元格地址,触发运行时错误。 - 工作簿引用规则错误:
Workbooks()集合只能索引当前已打开的工作簿,且只能传入文件名(不能带Network\file\这类路径前缀),传入全路径会找不到对应文件,触发下标越界错误。 - 复制逻辑不完整:调用
Copy方法后没有编写粘贴逻辑,原有写入行是不完整的无效语句,无法完成数据写入,自然会触发粘贴相关报错。
修正后代码(推荐直接赋值方案,不使用剪贴板,稳定性更高)
这里默认目标工作簿Copy of Generic Open Order Report by Sku_Macro - Copy.xlsx已经提前打开,如果未打开可以在代码开头补充打开逻辑。
Sub Get_Data() Dim FileToOpen As Variant Dim OpenBook As Workbook Dim TargetSht As Worksheet Dim SourceRng As Range Application.ScreenUpdating = False ' 绑定目标工作表,此处用文件名(不含路径)索引已打开的工作簿 Set TargetSht = Workbooks("Copy of Generic Open Order Report by Sku_Macro - Copy.xlsx").Worksheets(2) FileToOpen = Application.GetOpenFilename(Title:="Browse for your file & import Range") If FileToOpen <> False Then Set OpenBook = Application.Workbooks.Open(FileToOpen) Set SourceRng = OpenBook.Sheets(1).Range("A2:T30000") ' 直接赋值,无需剪贴板,避免粘贴错误 TargetSht.Range("A2").Resize(SourceRng.Rows.Count, SourceRng.Columns.Count).Value = SourceRng.Value OpenBook.Close False End If Application.ScreenUpdating = True End Sub
如果你的目标工作簿运行代码时未打开,可以在Set TargetSht行之前补充打开代码:
' 替换为你实际的文件完整路径 Workbooks.Open Filename:="Network\file\Copy of Generic Open Order Report by Sku_Macro - Copy.xlsx"
内容的提问来源于stack exchange,提问作者elias
相关产品推荐
相关产品推荐

