尝试使用VBScript将XLS转换为CSV和CSV到XLS。 接收错误:800A03EC(无法获取Workbooks类的Open属性)

我试图打开CSV,然后使用SaveAs方法将其另存为XLS。 反之亦然,在另一个脚本。 我不小心以前的文件格式代码错误,并没有得到这个错误。 CSV实际上是开放的。 我不小心做了CSV格式2(这实际上是SYLK)和XLS,6(实际上是CSV)。

我已经看遍了所有,我能find的大部分与使用不正确的参数(我已经多次检查)有关。 其余的是ASP,并build议改变组件服务的权限(这可能不会是一个问题,因为我可以让Open方法使用不同的格式)。

所以我不知如何进行。 如果我甚至不能使用Open方法,那么我有点卡住了。 如果SaveAs方法不适用于这个任务,我可以解决这个问题。 但我需要能够打开使用Open方法的XLS(因为我也试图做XLS到CSV)。 可能以另一种方式修复CSV到XLS,因为Open方法有时似乎有效。

无论如何,我的CSV到XLS代码如下。 XLS到CSV与此基本相同。 它只是翻转格式代码,并为文件使用不同的path。

strName = "MidCSVTemp.csv" strSaveName = Month(Now) & "." & Day(Now) & "." & Year(Now) & ".xls" strPath = "C:\Users\adam\Documents\" & strName strSavePath = "C:\Users\adam\Documents\" & strSaveName 'Options for Workbook.Open intUpdateLinks = 0 boolReadOnly = False intFormat = 6 'Options for SaveAs intFileFormat = 56 Set objExcel = CreateObject("Excel.Application") Set objWorkBook = objExcel.Workbooks.Open(strPath,intUpdateLinks,boolReadOnly,intFormat) Call objWorkBook.SaveAs(strSavePath,intFileFormat) Call objWorkbook.Close 

我认为问题在于你正在使用Workbooks.Open()方法的Format参数,就像FileFormat参数一样。 它不应该是xlCSV (6) ,这是一个FileFormat常量。 根据文档 , Format应该是以下值之一:

  • 1 =制表符
  • 2 =逗号
  • 3 =空格
  • 4 =分号
  • 5 =没有
  • 6 =自定义

由于您传递的值是6 ,所以期望您也包含Delimiter参数。 既然你不包括它,你会得到一个错误。

您应该能够打开一个CSV而不指定Format参数(Excel似乎正确地猜测分隔符而不必指定它)。 但是,为了安全起见,请为逗号分隔(CSV)文件传递值2。

 intFormat = 2 Set objWorkBook = objExcel.Workbooks.Open(strPath,intUpdateLinks,boolReadOnly,intFormat)