自动化错误 - 调用的对象在自动筛选期间已与其客户端断开连接

Automation Error - The Object Invoked has Disconnected from It Clients during autofilter

好的,我知道有很多关于此的帖子,但到目前为止 none 有一个似乎对我有用的解决方案。

我 运行 一周前第一次遇到这个问题,并创建了一个非常简单的程序来尝试弄清楚发生了什么。我已经诉诸于手动输入所有这些(我通常从一个旧的宏开始并修改它或复制和过去的代码片段);我已经制作了自己的数据文件,以防万一我打算用作输入的文件有什么奇怪的地方;它仍然出错。

我有其他宏在执行完全相同的过程,它们仍然可以正常工作。这让我发疯。下面的代码在 Autofilter 行崩溃。

Sub Fred()
Dim strFileToOpen As String
Dim wbHL7 As Workbook
    strFileToOpen = Application.GetOpenFilename(Title:="Please select the Invoice file.", FileFilter:="Excel Files *.xls* (*.xls*),")
    If strFileToOpen = "False" Then
        MsgBox "No file selected.", vbExclamation, "Sorry!"
        Exit Sub
    Else
        Set wbHL7 = Workbooks.Open(Filename:=strFileToOpen)
    End If
    rCnt = Cells(Rows.Count, 1).End(xlUp).Row
    ActiveSheet.Range("A1:K" & rCnt).AutoFilter Field:=11, Criteria1:=0, Operator:=xlFilterValues
    ActiveSheet.Range("A1:K" & rCnt).Offset(1, 0).SpecialCells(xlCellTypeVisible).EntireRow.Delete
    ActiveSheet.AutoFilterMode = False
End Sub

许多其他帖子暗示我的实际系统可能存在兼容性问题,但为什么其他宏仍然有效?顺便说一下,一旦它这样做,它基本上会锁定所有与 Excel 有关的东西,我必须打开任务管理器来终止进程。我正在使用 Windows 7 和 Office 2013。

编辑:

我只想补充一点,如果我在与数据相同的书中记录一个自动过滤器宏,它就可以正常工作。

您的代码有误。条件必须是一个字符串。如果仔细查看录制的宏,您会发现它也使用了字符串。

将您的自动过滤器行更改为以下内容,它应该可以工作:

ActiveSheet.Range("A1:K" & rCnt).AutoFilter Field:=11, Criteria1:="=0", Operator:=xlFilterValues