在vbscript中的CreateObject(“Excel.Application”)上的“Out of Memory”

时间:2014-05-21 09:42:32

标签: excel vbscript

好吧,我看了很多,我似乎找不到任何人甚至有同样的问题。我试图实现一个简单的vbscript将一堆.xls文件转换为.csv。一旦我使用CreateObject,我就会出现“Out of Memory”错误,即使我还没有做任何事情(即我没有开始迭代文件),即使我在启动机器后立即尝试(Windows 7 64位4GBram,空闲时使用大约2.5GB)。代码如下

Dim path1, path2, csvname

path1 = "path1"
path2 = "path2"

Dim fso, folder, files
Set fso = CreateObject("Scripting.FileSystemObject" )
Set folder = fso.GetFolder(path1)
Set files = folder.Files

Dim oExcel, oBook
Set oExcel = CreateObject("Excel.Application")

for each f in files
    Set oBook = oExcel.Workbooks.Open(path1 & "\" f.name)
    csvname = path2 & Left(f.name,len(f.name)-4) & ".csv"
    WScript.Echo csvname
    oBook.SaveAs csvname, 6
    oBook.Close False
next

oExcel.Quit
WScript.Echo "Done"

我确实使用大约14Mb创建了一个EXCEL.EXE * 32进程,然后我必须在任务管理器中手动终止。

谢谢!

编辑:修复了代码中的一些错误(有两个不同的名称用于文件对象,忘记了Dim oBook)没有抛出错误,因为代码没有那么远。

Edit2:所以我只是将它复制到Excel中的VBA Sub中,它工作得很好(好吧,发现了另一个愚蠢的bug,我不得不修改Wscript行)。有什么想法我不能在我的机器上的cscript中创建一个excel对象吗?

1 个答案:

答案 0 :(得分:0)

尝试使用正确的32位或64位cscript / wscript for excel,它似乎是32位。 C:\ WINDOWS \ SysWow64资料