You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 17:24:00