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

Vbscript VB脚本不会遍历给定文件夹中的每个文件,vbscript,Vbscript,我是VBscript新手,希望编写一个简单的脚本,在给定文件夹位置的几千个csv文件中更改几个单元格。我有一个很好的开始,这一切似乎都在工作,除了当我运行脚本(从一个只调用脚本的.bat文件)时,它一次只更改和移动3-8个文件。它更改的文件数是随机的,不像它总是更改5个文件之类的。我不确定代码中的错误是什么,为什么它不会编辑和移动每个文件,并且一次只编辑两个文件,以下是我迄今为止得到的信息,提前感谢您的帮助: Set objFSO = Wscript.CreateObject("Scriptin

我是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
Set objFSO=Wscript.CreateObject(“Scripting.FileSystemObject”)
设置colFiles=ObjFSO.GetFolder(“C:\Users\xxx\BadCSVs”).Files
Set xl=CreateObject(“Excel.Application”)
对于colFiles中的每个objFile
如果LCase(objFSO.GetExtensionName(objFile))=“csv”,则
设置wb=xl.Workbooks.Open(objFile)
设置sht=xl.ActiveSheet
如果(第(1,11)单元格“),则
短单元(1,8)=短单元(1,8)和短单元(1,9)
短单元(1,9)=短单元(1,10)
短单元(1,10)=短单元(1,11)
短单元格(1,11)=空
wb.保存
wb.Close为真
其他的
'如果文件已打开且只有10列数据,则它不会进行任何更改,然后将其关闭。
wb.关闭
如果结束
如果结束
下一个
xl.退出
你的邪恶全球

On Error Resume Next
隐藏错误。禁用/删除它,然后再次测试

你的

传递比较SaveChanges(未定义/空)与布尔文字True的布尔结果。也许您复制了VBA代码

wb.Close SaveChanges:=True 
(标记冒号)在VBScript中不合法的

应该与

xl.Quit
如果在循环中调用Excel,请在那里终止它。我会尝试从循环中启动/退出Excel,但您应该仔细测试该方法。

您的方法

On Error Resume Next
隐藏错误。禁用/删除它,然后再次测试

你的

传递比较SaveChanges(未定义/空)与布尔文字True的布尔结果。也许您复制了VBA代码

wb.Close SaveChanges:=True 
(标记冒号)在VBScript中不合法的

应该与

xl.Quit
如果在循环中调用Excel,请在那里终止它。我会尝试从循环中启动/退出Excel,但您应该仔细测试该方法。

您的方法

On Error Resume Next
隐藏错误。禁用/删除它,然后再次测试

你的

传递比较SaveChanges(未定义/空)与布尔文字True的布尔结果。也许您复制了VBA代码

wb.Close SaveChanges:=True 
(标记冒号)在VBScript中不合法的

应该与

xl.Quit
如果在循环中调用Excel,请在那里终止它。我会尝试从循环中启动/退出Excel,但您应该仔细测试该方法。

您的方法

On Error Resume Next
隐藏错误。禁用/删除它,然后再次测试

你的

传递比较SaveChanges(未定义/空)与布尔文字True的布尔结果。也许您复制了VBA代码

wb.Close SaveChanges:=True 
(标记冒号)在VBScript中不合法的

应该与

xl.Quit

如果在循环中调用Excel,请在那里终止它。我会尝试从循环中启动/退出Excel,但是你应该仔细测试这种方法。

VB.NET不是vba,也不是VBScript。错误恢复时,下一步可能是隐藏可能解释你不一致行为的错误。VB.NET不是vba,也不是VBScript。错误恢复时,下一步可能是隐藏可能解释你不一致行为的错误。VB.NET不是vba,也不是VBScriptVB.NET不是VBScript。错误恢复时,下一步可能是隐藏可能解释您不一致行为的错误。VB.NET不是vba,VB.NET也不是VBScript。错误恢复时,下一步可能是隐藏可能解释您不一致行为的错误。因此,我做了一些小更改,如下所述。(上面的更改被重新编辑)我将这一行Set xl=CreateObject(“Excel.Application”)放在For循环之外,并将“wb.Close SaveChanges=True”更改为“wb.Close True”这类工作。。。。它通过并改变了更多的文件(接近50个),但仍然不是文件夹中的所有文件,所以我做了一些小改动,如下所述。(上面的更改被重新编辑)我将这一行Set xl=CreateObject(“Excel.Application”)放在For循环之外,并将“wb.Close SaveChanges=True”更改为“wb.Close True”这类工作。。。。它通过并改变了更多的文件(接近50个),但仍然不是文件夹中的所有文件,所以我做了一些小改动,如下所述。(上面的更改被重新编辑)我将这一行Set xl=CreateObject(“Excel.Application”)放在For循环之外,并将“wb.Close SaveChanges=True”更改为“wb.Close True”这类工作。。。。它通过并改变了更多的文件(接近50个),但仍然不是文件夹中的所有文件,所以我做了一些小改动,如下所述。(上面的更改被重新编辑)我将这一行Set xl=CreateObject(“Excel.Application”)放在For循环之外,并将“wb.Close SaveChanges=True”更改为“wb.Close True”这类工作。。。。它通过并更改了更多的文件(接近50个),但仍然不是文件夹中的所有文件