2015-06-19 23 views
0

我是VBscript的新手,我正在編寫一個簡單的腳本,用於在給定文件夾位置中的幾千個csv文件中更改幾個單元格。我有一個很好的開始,似乎所有的工作,除了當我運行腳本(從一個只調用腳本的.bat文件),它只改變和移動3-8個文件。它改變的文件數量是隨機的,不像它總是改變5個文件或其他東西。我不確定代碼中出現了什麼問題,爲什麼它不會編輯和移動每個文件,並且每次只能執行一次,這是我迄今爲止所提供的任何幫助提前感謝:VB腳本不會遍歷給定文件夾中的每個文件

Set objFSO = Wscript.CreateObject("Scripting.FileSystemObject") 
Set colFiles = ObjFSO.GetFolder("C:\Users\xxx\BadCSVs").Files 
Set xl = CreateObject("Excel.Application") 

For Each objFile in colFiles 
    If LCase(objFSO.GetExtensionName(objFile)) = "csv" Then 
    Set wb = xl.Workbooks.Open(objFile) 
    Set sht = xl.ActiveSheet 


     If(sht.Cells(1,11) <> "") Then 
     sht.Cells(1,8) = sht.Cells(1,8) & sht.Cells(1,9) 
     sht.Cells(1,9) = sht.Cells(1,10) 
     sht.Cells(1,10) = sht.Cells(1,11) 
     sht.Cells(1,11) = Null 

     wb.Save 
     wb.Close True 

     Else 
     'if file is opened up and has only 10 columns of data, then it makes no changes, then closes it. 
     wb.Close 
     End If 
    End If 

Next 
xl.Quit 
+2

VB.NET IsNot vba並且也VB.NET IsNot VBScript。 – Plutonix

+1

On Error Resume Next可能會掩蓋可能解釋您的不一致行爲的錯誤。 –

回答

3

你的邪惡全球

On Error Resume Next 

隱藏錯誤。禁用/刪除它並再次測試。

wb.Close SaveChanges=True 

經過比較的SaveChanges(未定義/空)與布爾文字的布爾結果。也許你複製了VBA代碼

wb.Close SaveChanges:=True 

(標記冒號)在VBScript中不合法嗎?

而且

Set xl = CreateObject("Excel.Application") 

應與

xl.Quit 

如果調用Excel的環配對,有終止它。我會嘗試從循環中啓動/退出Excel,但您應該仔細測試該方法。

+0

所以我做了一些小改動,如下所示。 (上面重新編輯了更改)我把這一行設置爲For循環之外的xl = CreateObject(「Excel.Application」),並將「wb.Close SaveChanges = True」更改爲「wb.Close True」這種工作方式。 ...它通過並更改了更多文件(接近50),但仍然不是文件夾中的所有文件 –

相關問題