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