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

时间:2014-09-12 16:33:28

标签: excel csv vbscript

我正在尝试打开CSV,然后使用SaveAs方法将其另存为XLS。在另一个脚本中反之亦然。我之前不小心弄错了文件格式代码,并没有收到此错误。 CSV实际上会打开。我不小心制作了CSV格式2(实际上是SYLK)和XLS,6(实际上是CSV)。

我看了一遍,我发现的大部分内容都与使用不正确的参数(我多次检查过)有关。其余的是ASP,并建议更改组件服务中的权限(这可能不会成为问题,因为我可以让Open方法使用不同的格式)。

所以我不知道如何继续。如果我甚至不能使用Open方法,那么我就有点卡住了。如果它就像SaveAs方法不能完成这项任务一样简单,我可以解决这个问题。但我需要能够使用Open方法打开XLS(因为我也尝试将XLS转换为CSV)。可能会以另一种方式修复CSV到XLS,因为Open方法似乎有时会起作用。

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

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

1 个答案:

答案 0 :(得分:1)

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

  • 1 =标签
  • 2 =逗号
  • 3 =空格
  • 4 =分号
  • 5 =没什么
  • 6 =自定义

由于您传递的值为6,因此您还希望自己也包含Delimiter参数。由于您不包含它,因此您会收到错误。

您应该能够在不指定Format参数的情况下打开CSV(Excel似乎正确地为我猜测分隔符,而无需指定它)。但是,为安全起见,请为逗号分隔(CSV)文件传递值2。

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