vbscript检测并激活打开的Excel电子表格

时间:2019-01-02 20:04:51

标签: excel vbscript

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

enter image description here

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

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

如果我使用VBScript Activate open Excel spreadsheet without URL中的代码,则可以收集/输入数据,但仅在上次打开的工作簿中使用。

如果我使用以下代码,则在找到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

0 个答案:

没有答案