我是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发布于 2015-06-20 04:12:29
你邪恶的全球
On Error Resume Next会隐藏错误。禁用/删除它,然后再次测试。
你的
wb.Close SaveChanges=True传递SaveChanges (未定义/空)与布尔文字True比较的布尔结果。也许你复制了VBA代码
wb.Close SaveChanges:=True (标记冒号)在VBScript中是不合法的?
和
Set xl = CreateObject("Excel.Application")应该与一个
xl.Quit如果在循环中调用Excel ,请在此处终止它。我会尝试从循环中启动/退出Excel,但您应该仔细测试这种方法。
https://stackoverflow.com/questions/30946421
复制相似问题