Ответ 1
Workbooks.Open
использует текущий экземпляр MS Excel, а CreateObject("Excel.Application")
создает новый экземпляр MS Excel. Вы можете читать CreateObject
здесь.
Простое создание Workbooks.Open
после создания нового экземпляра не гарантирует, что книги будут открываться в новом экземпляре. Вам придется связываться с ним. Например
Dim oXLApp As Object, wb As Object
Set oXLApp = CreateObject("Excel.Application")
'~~> Hide Excel
oXLApp.Visible = False
'~~> Open files
Set wb = oXLApp.Workbooks.Open("C:\Sample.xls")
Относительно вашего другого вопроса
Кроме того, должен ли я просто использовать один экземпляр Excel, созданный с помощью CreateObject, чтобы открыть все книги или мне нужно создать один экземпляр для каждой рабочей книги, которую я должен обработать
Вам не нужно несколько экземпляров. Вы можете работать с одним экземпляром. Например
Dim oXLApp As Object, wb As Object
Set oXLApp = CreateObject("Excel.Application")
'~~> Hide Excel
oXLApp.Visible = False
'~~> Open files
Set wb = oXLApp.Workbooks.Open("C:\Sample1.xls")
'
'~~> Do some Stuff
'
wb.Close (False)
'~~> Open files
Set wb = oXLApp.Workbooks.Open("C:\Sample2.xls")
'
'~~> Do some Stuff
'
wb.Close (False)
'
'~~> And So on
'