Excel If-Then语句在VBS中不适用于CSV文件
我正试图为我的同事和我创建一个简单的脚本,以检查某些项目(ID号和考勤点)的CSV文件,比手动将其打开到Excel、扫描100多行,然后重新导出为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
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