自动化错误 - 调用的对象在自动筛选期间已与其客户端断开连接
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
好的,我知道有很多关于此的帖子,但到目前为止 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