【问题标题】:ActiveSheet and ActiveWorkbook are empty when opening Excel打开 Excel 时 ActiveSheet 和 ActiveWorkbook 为空
【发布时间】:2022-02-15 20:27:16
【问题描述】:

我正在尝试打开 Excel 并在不同时间使用多张工作表中的信息来自动化 Word 文档。

通过调试从局部变量的状态来看,Excel似乎启动成功,Workbook对象也分配成功。但是,当“DB Schedules”工作表被激活时,ActiveSheet 变量保持为空并且无法使用属性“Name”,而是抛出“Object Required”错误并跳转到 finally 块。

工作簿的路径和工作表的名称都是正确的,但即使在激活任意工作表之前,ActiveSheet 变量也是空的。已知该工作表包含信息,为了确定,我尝试了多个文件。

Sub CompileReport()

    Dim XLInstance As Object
    Dim XLWorkbook As Object
    Dim XLPath As String

    XLPath = "C:\Users\SaracchiG\OneDrive - AECOM\Documents\M11 Jn7A\GC300 Certificates\" & _
    "Construction Compliance\Certificates Data Project_Name.xlsx"

    On Error Resume Next
    Set XLInstance = GetObject(, "Excel.Application")
    XLInstance.Quit
    If Err Then
        Set XLInstance = CreateObject("Excel.Application")
    End If
    On Error GoTo Finally
    Set XLWorkbook = XLInstance.Workbooks.Open(XLPath, ReadOnly:=True)
  
    'Testing it all works (doesn't!)
    XLWorkbook.Worksheets("DB Schedules").Activate
    MsgBox ActiveSheet.Name
    MsgBox ActiveWorkbook.Name
    'Do some stuff with different sheets

Finally:
    XLWorkbook.Close
    XLInstance.Quit

End Sub

【问题讨论】:

  • 使用XLInstance.ActiveSheet.NameXLInstance.ActiveWorkbook.Name。将Option Explicit 添加到代码顶部以显示未定义的错误。
  • 您需要XLInstance.ActiveSheet.Name。如果您在 Word 中运行它,ActiveSheet 会自行尝试查找不存在的 Word 应用程序活动表。

标签: excel vba ms-word


【解决方案1】:

您无需激活工作表即可使用它

    'Do some stuff with different sheets
    With XLWorkbook.Worksheets("DB Schedules")
           MsgBox .Name
           MsgBox .Parent.Name
    End With

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-09
    • 1970-01-01
    • 1970-01-01
    • 2020-04-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多