我写了一个vbScript来在登录时为每个用户的计算机收集计算机信息,并且Id喜欢让脚本将信息记录到服务器上的Excel工作表中,每台计算机都有自己的行。
我写这篇文章就像6年前一样但是丢失了脚本并且从那时起就没有触及vbScript。
所以我需要做的是,
我不知道从哪里开始,因为vbScript对我来说很陌生。
编辑 - 到目前为止我有这个循环并且回调测试它,但它只有1,而我有6行,其值为第0列。我尝试使用条件来检查值的单元格值知道存在,我得到一个运行时错误。
Set objExcel = CreateObject("Excel.Application")
Set objWorkbook = objExcel.Workbooks.Open("test.xlsx")
Do While objExcel.ActiveCell.Offset(iRow,0).Value<>""
WScript.Echo iRow
If objExcel.Cells(iRow,0).Value = "three" Then
WScript.Echo "three"
End If
iRow = iRow+1
Loop
WScript.Quit
答案 0 :(得分:2)
你的脚本中很可能有一个On Error Resume Next
,这会使代码无声地失败。
据我所知,你的代码可能正在发生的事情:
Do While objExcel.ActiveCell.Offset(iRow,0).Value<>""
脚本检查活动单元格的偏移(iRow,0)
处的单元格是否为空,以及它是否进入循环。
WScript.Echo iRow
该脚本回显了iRow
的当前值(可能为0)。
If objExcel.Cells(iRow,0).Value = "three" Then
脚本尝试访问单元格 (iRow,0)
(不 偏移 (iRow,0)
处的单元格),失败,因为Cells()
不是从零开始的。第一行和第一列在Cells()
属性中具有索引1。更不用说使用Cells()
时,您必须使用绝对行号和列号,而不是ActiveCell
中与Offset()
相对的那些。
要解决此问题,我会删除On Error Resume Next
,只需使用Cells()
代替ActiveCell.Offset()
:
iRow = 1
Do While objExcel.Cells(iRow, 2).Value <> ""
WScript.Echo iRow
If objExcel.Cells(iRow, 2).Value = "three" Then
WScript.Echo "three"
End If
iRow = iRow + 1
Loop