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

Excel导入其他工作簿ListObject表格至数组时遇Error 91问题求助

解决VBA Error 91:Object variable not set问题

你的代码触发Error 91,核心原因是PCws.ListObjects("ImportTable").DataBodyRange这条引用链里有对象未被正确初始化,常见两种情况:

  • 目标工作表ImportSheet里不存在名为ImportTable的ListObject
  • 这个ListObject存在,但没有任何数据行,导致DataBodyRange为Nothing

针对这两种情况,修改代码如下,加入对象存在性检查和空数据行的处理:

Sub Test()
    Dim arrPC As Variant
    Dim PCwb As Workbook
    Dim ws As Worksheet
    Dim PCws As Worksheet
    Dim importTable As ListObject

    Set ws = ThisWorkbook.Sheets("MainSheet")
    ' 打开工作簿时加入错误捕获,避免路径或文件不存在报错
    On Error Resume Next
    Set PCwb = Workbooks.Open("C:\Path\OtherWorkbook")
    On Error GoTo 0
    If PCwb Is Nothing Then
        MsgBox "目标工作簿无法打开,请检查路径是否正确"
        Exit Sub
    End If

    ' 检查目标工作表是否存在
    On Error Resume Next
    Set PCws = PCwb.Sheets("ImportSheet")
    On Error GoTo 0
    If PCws Is Nothing Then
        MsgBox "工作簿中不存在ImportSheet工作表"
        PCwb.Close SaveChanges:=False
        Exit Sub
    End If

    ' 检查ListObject是否存在
    On Error Resume Next
    Set importTable = PCws.ListObjects("ImportTable")
    On Error GoTo 0
    If importTable Is Nothing Then
        MsgBox "ImportSheet中不存在名为ImportTable的表格"
        PCwb.Close SaveChanges:=False
        Exit Sub
    End If

    ' 处理DataBodyRange为空的情况
    If Not importTable.DataBodyRange Is Nothing Then
        arrPC = importTable.DataBodyRange.Value
        ' 清空数据行
        importTable.DataBodyRange.ClearContents
    Else
        ' 表格无数据时初始化空数组
        arrPC = Empty
        MsgBox "ImportTable中没有数据行"
    End If

    PCwb.Close SaveChanges:=True
End Sub

关键修改点说明:

  • 增加了工作簿、工作表、ListObject的存在性检查,避免因对象不存在触发错误
  • 单独把ListObject赋值给变量importTable,简化后续引用,也方便检查
  • 先判断DataBodyRange是否存在,再执行赋值和清空操作,避免空对象引用
  • 加入了错误提示,方便快速定位问题
  • 关闭工作簿时明确指定SaveChanges参数,避免弹出不必要的保存提示

内容的提问来源于stack exchange,提问作者GreyGhost

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 19:18:27