2014-05-21 55 views
0

「內存不足」好吧,我周圍環顧了很多,我似乎沒有發現任何人甚至有同樣的問題。我試圖實現一個簡單的VBScript將一堆.xls文件轉換爲.csv。一旦我使用CreateObject,我會得到一個「內存不足」的錯誤,儘管我還沒有做任何事情(即我沒有開始迭代文件),即使我在啓動機器後嘗試了正確的操作(Windows 7 64位4GBram,空閒時使用約2.5GB)。代碼如下關於CreateObject(「Excel.Application」)在vbscript

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" 

我得到創建的EXCEL.EXE * 32個過程中,使用約14MB,我則必須手動殺死在任務管理器。

謝謝!

編輯:修正了代碼中的一些錯誤(有兩個不同的名稱用於文件對象,忘了Dim oBook),因爲代碼沒有得到那麼多,所以沒有拋出錯誤。編輯2:所以我只是把它複製到Excel中的VBA Sub中,它的工作正常(好吧,發現了另一個愚蠢的錯誤,我不得不nix的Wscript行)。任何想法爲什麼我不能在我的機器上在cscript中創建一個excel對象?

+0

VBS在我看來很好,除非假設文件擴展名是4個字符。您可能希望在創建excel對象後立即通過'oExcel.Visible = True'使其可視化爲可視化。 – PatricK

回答

0

嘗試使用正確的32位或64位cscript/wscript的Excel似乎是32位。 c:\ windows \ syswow64

+0

感謝您的幫助!是的,我正在運行32位的辦公室,所以這似乎是一個有前途的調查。然而,我已經嘗試用32位csript(%windir%\ syswow64 \ cscript.exe vbscriptfile.vbs)執行exectuting,並且我一直得到相同的錯誤。我也嘗試運行32位cmd.exe,然後從那裏運行cscript vbscriptfile.vbs或%windir%\ syswow64 \ cscript.exe vbscriptfile.vbs,並得到相同的結果。由於我已經能夠通過VBA而不是VBS轉換我的文件,恐怕我不能再花更多時間在此上。 – arrayofeels

相關問題