我在Excel中写了一个VBA宏已经有好几个月了。突然,前几天它开始抛出一个错误,虽然我没有对工作簿进行任何更改:
运行时错误' -2147417848(80010108)':
自动化错误
调用的对象已与其客户端断开连接。
我将错误追溯到以下代码行。
wkbTool.Worksheets("Excl Spine").Range("A2:D" & exclRow).ClearContents '<--- RUNS GREAT
wkbTool.Worksheets("Delq Spine").Range("C2:D13").ClearContents '<--- ERROR OCCURS HERE
请注意,第一个行每次都运行良好,第二个行是发生错误的位置。我指出这一点是因为他们正在做大致相同类型的工作,但是一个抛出错误而另一个没有。这不是我在脚本中首次引用wkbTool.Worksheets("Delq Spine")
。
我aware solutions this错误abound。我已经尝试了大部分内容以及我自己的一些想法。例如,以下内容引发相同的错误:
尝试1 - 一切都是变量
Dim wkbTool as Workbook
Dim wksht as Worksheet
Dim myRange as Range
Set wkbTool = Workbooks("Name.xlsm")
Set wksht = wkbTool.Worksheets("Delq Spine")
Set myRange = wksht.Range("C2:D13")
myRange.ClearContents '<--- ERROR
尝试2 - 相反
Workbooks("Name.xlsm").Worksheets("Delq Spine").Range("C2:D13").ClearContents
尝试3 - 也许ClearContents
做一些疯狂的事情,跳过它
For i = 3 to 4
For j = 2 to 13
wkbTool.Worksheets("Delq Spine").cells(j,i) = ""
Next j
Next i
这会导致Excel崩溃,但不会先抛出错误。它在崩溃之前在第一次迭代中清楚地执行操作,因为当Excel恢复工作簿时,单元格(2,3)为空。此外,我没有在此次尝试的第一行使用ClearContents
,以防ClearContents
本身造成某种情况。
尝试4 - 很好,我不需要那条线
我注释掉导致错误的行。在下次循环时,有一个Worksheets("Delq Spine")
的引用,它在第一次迭代中起作用,但不在第二次迭代中起作用:
With wkbTool.Worksheets("Delq Spine")
.Activate
.Range("C2").FormulaR1C1 = "=IFERROR(VLOOKUP(RC[-1],'[" & wkbNew.Name & "]" & wksht.Name & "'!R3C2:R14C3,2,FALSE),0)"
End With
在上面,工作表已激活,但在将公式分配给C2时,Excel崩溃类似于尝试3。同样,一旦Excel恢复,很明显操作成功,因为公式在该单元格中更新。
尝试5 - 当然工作簿已损坏
我回过头来查看我公司的备份文件,找到当时肯定有用的工作簿版本。它在同一个地方遇到了同样的错误。
尝试6 - 让我们重新创建工作簿
我从头开始重新创建工作簿,包括编写所有公式和格式化单元格。我确实将VBA脚本复制/粘贴到新版本,因为我没有时间重写它只是因为它再次失败。
我将继续添加有关我在尝试时所做的尝试的更多信息,我上周一直在研究和解决这个问题。