Access 2007 VBA-打开两个Excel工作簿

时间:2018-07-21 03:39:00

标签: vba ms-access-2007

我正在使用Access2007。在Access文件中,我具有打开Excel的VBA代码。 Access程序启动时的工作簿。 Excel工作簿保持打开状态 在程序运行时。我使用以下代码打开工作簿:

Public xl As Object
Public wb1 As Object
Set xl = New Excel.Application
Set wb1 = xl.Workbooks.Open("c:\Book1.xlsx")

现在,在程序运行时,我可能需要打开第二个Excel工作簿, 从中获取一些数据,然后将其关闭。我使用了这段代码:

Public wb2 As Object
Set wb2 = xl.Workbooks.Open("c:\Book2.xlsx")

但这不起作用。似乎第一个工作簿可能已经关闭,因为 如果我执行debug.print Workbooks.Count,响应为“ 0”。

关于如何打开第二个工作簿并且仍然打开第一个工作簿的任何建议? 我应该创建第二个Excel实例并使用它打开第二个工作簿吗?

谢谢。

1 个答案:

答案 0 :(得分:1)

您可能会更幸运地使用此过程:

Sub OpenExcel(fName As String)
    Dim xlApp As Object
    On Error Resume Next
    Set xlApp = GetObject(, "Excel.Application")
    If Err.Number <> 0 Then
        'Excel wasn't running, start it from code
        Set xlApp = CreateObject("Excel.Application")
    End If
    On Error GoTo 0
xlApp.Workbooks.Open (fName)
End Sub

使用您的代码可能会打开Excel,但是第二个工作簿未默认设置为可见,可以使用xl.Visible = True进行设置。另外,第二个xl对象也可以提供帮助。

无论如何,这种方法更安全一些。

确保完成后,确保使用xlApp.QuitSet xlApp = Nothing之类的东西清理(并释放内存)。

实际上,我建议您立即重新启动...,然后再重新启动,查看一下任务管理器中正在运行的进程-如果您正在运行多个“不可见”的Excel实例,我不会感到惊讶。 :)