0

我正在开发一个从 Macro Express 运行的 VBScript 项目。此宏的每个用户都将打开两个电子表格(如下图所示):

在此处输入图像描述

用户将从 ERA SURF 分配工作簿运行宏,该宏将从该电子表格中收集数据并将其输入到 UBH 网守统计工作簿中。

我遇到的问题是让宏按需识别任一工作簿。

如果我使用VBScript 中的此代码激活没有 URL 的打开 Excel 电子表格,我将能够收集/输入数据,但它仅适用于最后打开的工作簿。

如果我使用以下代码,一旦找到 ERA SURF 分配,它将停止,但是,再一次,只拉出最后一个打开的工作簿:

For Each i In Application.Workbooks
    BookNames = i.Name
    If InStr(BookNames, "ERA SURF Assignment") Then
        AppActivate (BookNames)
    End If
Next i

我觉得我需要将两者结合起来,但也需要一种专门挑选出我想要的工作簿的方法。有什么建议么?

更新:

好的,我做了更多的研究,它比我想象的要复杂一些。我想出了以下代码。如果没有打开 Excel 工作簿,则会抛出 429 错误代码。我发现,如果除了我想要的之外还有另一个 Excel 工作簿打开,我会得到一个 9 错误代码。问题是如果我以一种方式排列我的代码,它会在我想要的文件打开时识别 9 代码,或者它会在未打开时尝试激活所需的工作簿。我错过了什么吗?

Set xl = Nothing
On Error Resume Next
   Set xl = GetObject(, "Excel.Application")   ' Attempt to attach to running Excel instance
   If Err Then
      If Err.Number = 429 Then
         MsgBox "Neither workbooks are open (Excel is not running)." & vbNewLine & "Macro will attempt to open workbooks."
         Set objExcel = CreateObject("Excel.Application")
         objExcel.Visible = True 'Making an Excel Object visible
         Set BookA = objExcel.Workbooks.Open(File1)  'Opening an Excel file1
         Set BookB = objExcel.Workbooks.Open(File2)  'Opening an Excel file2
         Set xl = GetObject(, "Excel.Application")   'attach to running Excel instance
      Else
         MsgBox Err.Description & " (0x" & Hex(Err.Number) & ")"
      End If
   End If

   BookA.Activate
   If Err.Number = 9 Then
      Set objExcel = CreateObject("Excel.Application")
      objExcel.Visible = True 'Making an Excel Object visible
      Set BookA = objExcel.Workbooks.Open(File1)  'Opening an Excel file1
   Else
      AppActivate "ERA SURF Assignment"
      objExcel.Visible = True 'Making an Excel Object visible
   End If

   BookB.Activate
   If Err.Number = 9 Then
      Set objExcel = CreateObject("Excel.Application")
      objExcel.Visible = True 'Making an Excel Object visible
      Set BookB = objExcel.Workbooks.Open(File2)  'Opening an Excel file2
   Else
      AppActivate "UBH Gatekeeper Statistics"
      objExcel.Visible = True 'Making an Excel Object visible
   End If
On Error GoTo 0
4

0 回答 0