VBA,如何打开新的 excel 实例

VBA, How to open new excel instance

当我没有打开excel APP时,抛出以下错误:

ActiveX Component can't create object

重现问题的步骤:

1 打开 Outlook,ALT + F11 并插入以下子内容:

Sub Test()
  Dim myXL As New Excel.Application
  Set myXL = GetObject(, "Excel.Application")
  Set wb = myXL.Workbooks.Open("MyPath\MyXL.xlsx")
End Sub
  1. 关闭所有 excel 文件

  2. 运行 来自 outlook 的子测试。

错误将在 :

上抛出
Set myXL = GetObject(, "Excel.Application")

如何避免此错误?

更好的选择应该是下一种方式,我认为:

   Dim objexcel As Object

   On Error Resume Next 'firstly, try catching the existing open session, if any:
    Set objexcel = GetObject(, "Excel.Application")
    If err.Number <> 0 Then 'if  no any existing session, create a new one:
        err.Clear: Set objexcel = CreateObject("Excel.Application")
    End If
   On Error GoTo 0

引用“Microsoft Excel ... 对象库”,您可以声明

Dim objexcel As Excel.Application

智能感知建议的好处...

如果您知道其中打开的特定工作簿的全名,也可以找到 Excel 打开的会话:

   Set objExcel = GetObject(ThisWorkbook.fullName).Application   
   Debug.Print objExcel.hwnd

甚至对于由第三方应用程序在新会话中打开的新工作簿,如“Book1”:

   Set objExcel = GetObject("Book1").Application
   Debug.Print objExcel.hwnd

如果相应的应用程序删除新工作簿(并在同一会话中打开它们),将它们命名为“Book2”、“Book3”等,循环构建工作簿名称,将“Book”根与增量变量可以用来获取它。