vbscript - 对 Excel 文件进行排序时类型不匹配

标签 vbscript

我收到此错误:

Type mismatch: 'objExcel.Cells(...).Value'

运行该程序时:

Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = True
Set objWorkbook = objExcel.Workbooks.Open("myFile.xlsx")

strMach = "string1,string2,string3"
arrMach = Split(strMach, ",")

for j = 0 to Ubound(arrMach) 
  remove(arrMach(j))
Next

Function remove(strValue)
  i = 1
  removeCounter = 0

  Do Until objExcel.Cells(i, 2).Value = ""
    If objExcel.Cells(i, 2).Value = strValue Then
      Set objRange = objExcel.Cells(i, 2).EntireRow
      objRange.Delete
      i = i - 1
      removeCounter = removeCounter + 1
    End If

    i = i + 1
  Loop

  wscript.echo strValue & " - REMOVED!"
  wscript.echo "Removed " & removeCounter & " results."
End Function

该程序用于从所有现有行中搜索字符串,如果找到,则删除整行。

错误似乎来自以下行:

Do Until objExcel.Cells(i, 2).Value = ""

我已经尝试在大约 50 行的 Excel 文件上对此进行测试,效果很好。但是当我在大约 25,000 行的 Excel 文件上使用它时,我总是会收到错误。有人可以帮忙吗?文件的大小会在运行时影响我的代码吗?

谢谢。

编辑: 我已经在 50,000 多行的 Excel 表上尝试过这个方法进行测试,效果很好。但是,每当我在实际文件上使用它时,仍然会出现相同的错误。是否有任何我应该注意的特殊字符/值无法通过上面的代码正确处理?再次感谢。

最佳答案

当您检查的单元格包含错误时,例如,可能会出现这样的错误因为由于删除了行而导致引用丢失。

添加一些调试代码来识别罪魁祸首:

On Error Resume Next
Do Until objExcel.Cells(i, 2).Value = ""
  If Err Then Exit Do
  If objExcel.Cells(i, 2).Value = strValue Then
    Set objRange = objExcel.Cells(i, 2).EntireRow
    objRange.Delete
    i = i - 1
    removeCounter = removeCounter + 1
  End If

  i = i + 1
Loop

If Err Then
  WScript.Echo "Error " & Err.Number & " in row "& i & ": " & Err.Description
  WScript.Echo "Value is: " & objExcel.Cells(i, 2).Value
End If
On Error Goto 0

关于vbscript - 对 Excel 文件进行排序时类型不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15606846/

相关文章:

vbscript - 如何用vbscript检查文件是否存在

ruby - 在 Ruby 中使用浏览器作为 GUI

regex - 如何从链接中仅获取 href 值

vbscript - 如何清除vbscript中数组的内容?

vbscript - vbs taskkill 按名称

javascript - VBScript 匿名关联数组? (就像 JavaScript 中一样)

excel - 从任务计划程序启动 excel 可以正常工作,但现在失败了

properties - 获取VB元素的属性

javascript - 从 asp.net 控件内的 Javascript 返回字符串

node.js - 使用 Node 运行 .vbs 脚本