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

时间:2014-08-05 14:51:02

标签: excel winapi vbscript

由于以下几个原因here,我无法打开这样的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)

然而,这给了我this错误:

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,这有点奇怪。关于这个的任何想法?

1 个答案:

答案 0 :(得分:1)

如果您的目标是在后台打开工作簿,这可能是更好的选择:

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