我是VBscript的新手,我正在寻找一个简单的脚本,它可以在给定文件夹位置的几千个csv文件中更改几个单元格。我有一个良好的开端,这一切似乎都在工作,除了我运行脚本(来自一个只调用脚本的.bat文件)的事实,它一次只更改并移动3-8个文件。它更改的文件数是随机的,它不像它总是更改5个文件或其他东西。我不确定代码中有什么错误,为什么它不会编辑和移动每个文件,而且一次只做几个,这是我到目前为止所做的事情,提前感谢任何帮助:
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
答案 0 :(得分:3)
您的EVIL全球
On Error Resume Next
隐藏错误。禁用/删除它并再次测试。
您
wb.Close SaveChanges=True
传递比较SaveChanges(未定义/空)与布尔文字 True 的布尔结果。也许您复制了VBA代码
wb.Close SaveChanges:=True
(标记冒号)在VBScript中不合法?
和
Set xl = CreateObject("Excel.Application")
应该与
配对xl.Quit
如果您在循环中调用Excel ,请在此处终止。我会尝试启动/退出循环,但你应该仔细测试这种方法。