Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel If-Then语句在VBS中不适用于CSV文件_Excel_Vbscript_Vba - Fatal编程技术网

Excel If-Then语句在VBS中不适用于CSV文件

Excel If-Then语句在VBS中不适用于CSV文件,excel,vbscript,vba,Excel,Vbscript,Vba,我正试图为我的同事和我创建一个简单的脚本,以检查某些项目(ID号和考勤点)的CSV文件,比手动将其打开到Excel、扫描100多行,然后重新导出为CSV(当您每天必须多次执行此操作时,所需时间开始累积)更快。为了开始,我创建了第一个部分来检查考勤点是否大于允许的值,然后抛出一个错误,让我们知道如何进入并修复它。不幸的是,我似乎无法让它工作 Dim oExcel Set oExcel = WScript.CreateObject("Excel.Application") Dim ws Set ws

我正试图为我的同事和我创建一个简单的脚本,以检查某些项目(ID号和考勤点)的CSV文件,比手动将其打开到Excel、扫描100多行,然后重新导出为CSV(当您每天必须多次执行此操作时,所需时间开始累积)更快。为了开始,我创建了第一个部分来检查考勤点是否大于允许的值,然后抛出一个错误,让我们知道如何进入并修复它。不幸的是,我似乎无法让它工作

Dim oExcel
Set oExcel = WScript.CreateObject("Excel.Application")
Dim ws
Set ws = ActiveSheet.Range("S11, S200")
If ws > 28 Then
  MsgBox "Error: User with more than 28 presence checks!"
ElseIf ws > 14 Then
  MsgBox "Error: User with more than 14 presence checks!"
ElseIf ws > 12 Then
  MsgBox "Error: User with more than 12 presence checks!"
ElseIf ws > 8 Then
  MsgBox "Error: User with more than 8 presence checks!"
ElseIf ws > 4 Then
  MsgBox "Error: User with more than 4 presence checks!"
End If

任何帮助都将不胜感激:)

这对我来说运行起来很慢,尽管速度非常慢

我注意到的事情-

  • 你从没告诉过它文件在哪里。即使有拖放功能,你仍然需要知道在哪里可以找到任何东西

  • 您正在处理后期绑定,但是没有正确设置ws.Range。我刚使用cells属性设置ws.Range,一开始可能会让人困惑

    私人小组委员会()

    端接头


    • VBScript不支持VBA之类的隐式对象,因此不能直接使用
      ActiveSheet
      。对象需要显式句柄。在这种情况下,您可以通过应用程序对象访问活动图纸。另外,
      .Range(“S11,S200”)
      也不起作用。范围字符串用冒号定义。试着这样做:

      Set ws  = oExcel.ActiveSheet
      Set rng = ws.Range("S11:S200")
      
      有关将VBA转换为VBScript的详细信息,请参见

      要获得有关当前代码的进一步帮助(我怀疑
      rng>28
      等是否会按您预期的方式工作),请发布一个新问题,并提供有关输入数据的更多信息


      另外,由于您的输入文件似乎是CSV,因此您可以将该文件作为文本文件进行处理:

      filename  = "C:\path\to\your.csv"
      delimiter = ","
      
      Set fso = CreateObject("Scripting.FileSystemObject")
      csv = fso.OpenTextFile(filename).ReadAll
      
      rows = Split(csv, vbNewLine)
      For Each row In rows
        fields = Split(row, delimiter)
        For Each field In fields
          'do stuff
        Next
      Next
      

      你在哪一行遇到了什么错误?第4行,字符1。所需对象:“ActiveSheet”代码:800A01A8这里似乎缺少一些代码。你不应该告诉编译器首先在哪里打开文件吗?它应该是一个简单的拖放和运行,不幸的是我是一个新手。。
      filename  = "C:\path\to\your.csv"
      delimiter = ","
      
      Set fso = CreateObject("Scripting.FileSystemObject")
      csv = fso.OpenTextFile(filename).ReadAll
      
      rows = Split(csv, vbNewLine)
      For Each row In rows
        fields = Split(row, delimiter)
        For Each field In fields
          'do stuff
        Next
      Next