VBScript, чтобы обнаружить и активировать открытую таблицу Excel - PullRequest
0 голосов
/ 02 января 2019

Я работаю над проектом, который запускается на VBScript из Macro Express.У каждого пользователя этого макроса будут открыты две электронные таблицы (как показано на рисунке ниже):

enter image description here

Пользователь будет запускать макрос из ERA SURFРабочая книга назначений, которая будет собирать данные из этой электронной таблицы и вводить их в рабочую книгу UBH Gatekeeper Statistics.

Проблема, с которой я сталкиваюсь, заключается в том, чтобы получить макрос для распознавания любой из рабочих книг по требованию.

Если я использую этот код из VBScript Активировать открытую электронную таблицу Excel без 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...