我正在尝试打开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
答案 0 :(得分:1)
我认为问题在于您使用Format
方法的Workbooks.Open()
参数,就像FileFormat
参数一样。它不应该是xlCSV
(6)
,这是FileFormat
常量。根据{{3}},Format
应为以下值之一:
由于您传递的值为6
,因此您还希望自己也包含Delimiter
参数。由于您不包含它,因此您会收到错误。
您应该能够在不指定Format
参数的情况下打开CSV(Excel似乎正确地为我猜测分隔符,而无需指定它)。但是,为安全起见,请为逗号分隔(CSV)文件传递值2。
intFormat = 2
Set objWorkBook = objExcel.Workbooks.Open(strPath,intUpdateLinks,boolReadOnly,intFormat)