VB脚本不会遍历给定文件夹中的每个文件

时间:2015-06-19 20:04:13

标签: vbscript

我是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

1 个答案:

答案 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 ,请在此处终止。我会尝试启动/退出循环,但你应该仔细测试这种方法。