【发布时间】: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.Name和XLInstance.ActiveWorkbook.Name。将Option Explicit添加到代码顶部以显示未定义的错误。 -
您需要
XLInstance.ActiveSheet.Name。如果您在 Word 中运行它,ActiveSheet 会自行尝试查找不存在的 Word 应用程序活动表。