如何在不使用CreateObject的情况下打开excel并获取工作簿

由于这里讨论的几个原因,我不能打开这样的Excel工作表:

Set excel = CreateObject("Excel.Application") excel.Visible = False Set excelWb = excel.Workbooks.Open(file_path.xls) 

所以我试图打开它像这样:

 CreateObject("WScript.Shell").Run "excel.exe" Wscript.Sleep 5000 ' wait for it to load Set excel = GetObject(,"Excel.Application") excel.visible = False Set excelWb = excel.Workbooks.Open(file_path.xls) 

但是,这给了我这个错误:

 ActiveX component can't create object 

除非我已经打开了excel,否则我会打开两个页面:

 CreateObject("WScript.Shell").Run "excel.exe" Wscript.Sleep 5000 CreateObject("WScript.Shell").Run "excel.exe" Wscript.Sleep 5000 Set excel = GetObject(,"Excel.Application") excel.visible = False Set excelWb = excel.Workbooks.Open(file_path.xls) 

但是这给我留下了一个可见的Excel表单。 为了使用GetObject ,我需要打开两个,这GetObject 。 任何想法呢?

如果你的目标是在后台打开工作簿,这可能是一个更好的select:

 On Error Resume Next Dim excel, excelWB CreateObject("WScript.Shell").Run "excel.exe /e ""C:\Test\blank.xlsx""" Set excelWB = Nothing Do Set excel = GetObject(, "Excel.Application") Set excelWB = excel.Workbooks("blank.xlsx") Loop While excelWB Is Nothing excel.Visible = False