Этот код, основанный на полученных комментариях, должен работать:
Dim objXLApp, objXLWb, objXLWs
Dim XLWasRunning
Dim strMessage
' Get running instance
Set objXLApp = GetObject("", "Excel.Application")
If Not objXLApp Is Nothing Then
strMessage = "Excel Running."
XLWasRunning = True
Else
strMessage = "Excel Not Running."
Set objXLApp = CreateObject("Excel.Application")
XLWasRunning = False
End If
objXLApp.Visible = True
Set objXLWb = objXLApp.Workbooks.Open("C:\Temp\test.xlsx")
Set objXLWs = objXLWb.Sheets(1)
Возможно, вы захотите добавить следующее, чтобы проверить, нужно ли вам снова загружать книгу:
If Not XLWasRunning Then
Set objXLWb = objXLApp.Workbooks.Open("C:\Temp\test.xlsx")
Set objXLWs = objXLWb.Sheets(1)
End If
Если Excel уже запущен, вы также можете проверить, загружена ли ваша Рабочая книга перед ее загрузкой:
Dim bWorkbookFound
bWorkbookFound = False
For Each objXLWb In objXLApp.Workbooks
If objXLWb.Name = "test.xlsx" Then
' Workbook already loaded
bWorkbookFound = True
objXLWb.Activate
End If
Next