Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 添加筛选器时出现自动错误_Excel_Vba - Fatal编程技术网

Excel 添加筛选器时出现自动错误

Excel 添加筛选器时出现自动错误,excel,vba,Excel,Vba,我正在尝试向excel文件中的工作表添加自动筛选: '---- SLIDE THREE ---- Sub SlideTangerine3() 'reportWeek As String) 'Declare variables Dim pre As Presentation Dim slide As slide Dim textbox As Shape Dim book As Workbook Dim sheet As Worksheet Dim switch As String 'Set v

我正在尝试向excel文件中的工作表添加自动筛选:

'---- SLIDE THREE ----
Sub SlideTangerine3() 'reportWeek As String)

'Declare variables
Dim pre As Presentation
Dim slide As slide
Dim textbox As Shape
Dim book As Workbook
Dim sheet As Worksheet
Dim switch As String

'Set variables
Set pre = ActivePresentation
Set slide = pre.Slides(3)

'-----------------------------------------------------

Set book = Workbooks.Open("C:\Users\User\Desktop\Book1.xlsx")
Set sheet = book.Worksheets(3)

If Not sheet.AutoFilterMode Then
    sheet.Range("A1").AutoFilter
End If

book.Close

End Sub
单击“运行”,vba编辑器将冻结


结束进程后,我从上面的注释中收到消息“自动化错误远程过程调用失败”

,我注意到您正在执行
book。关闭
而不执行
book。保存
。这将引发一个对话框,要求您保存或放弃对工作簿的更改。即使没有任何条件,应用自动筛选也是一种“改变”

因为Excel应用程序不可见,所以您看不到此对话框,并且它被困在一个无限空间中等待您响应(但您无法响应,因为您看不到它!)。我认为这两种方法都可以解决你的问题

选项1使工作簿可见。这将允许显示对话框,然后您可以选择保存或放弃更改

Sub SlideTangerine3() 'reportWeek As String)

'Declare variables
Dim pre As Presentation
Dim slide As slide
Dim textbox As Shape
Dim book As Workbook
Dim sheet As Worksheet
Dim switch As String

'Set variables
Set pre = ActivePresentation
Set slide = pre.Slides(3)

'-----------------------------------------------------

Set book = Workbooks.Open("C:\Users\User\Desktop\Book1.xlsx")
book.Application.Visible = True
Set sheet = book.Worksheets(3)

If Not sheet.AutoFilterMode Then
    sheet.Range("A1").AutoFilter
End If

book.Close

End Sub
选项2显式保存(或不保存)文件,这将完全避免出现对话框:

Sub SlideTangerine3() 'reportWeek As String)

'Declare variables
Dim pre As Presentation
Dim slide As slide
Dim textbox As Shape
Dim book As Workbook
Dim sheet As Worksheet
Dim switch As String

'Set variables
Set pre = ActivePresentation
Set slide = pre.Slides(3)

'-----------------------------------------------------

Set book = Workbooks.Open("C:\Users\User\Desktop\Book1.xlsx")
Set sheet = book.Worksheets(3)

If Not sheet.AutoFilterMode Then
    sheet.Range("A1").AutoFilter
End If

book.Close True 
'### OR to discard changes, use this:
'book.Close False

End Sub

我没有看到为您的筛选器指定任何参数。Have you@Okuma.Scott我只希望过滤器在那里,也就是说,所有的参数都是可选的,应该不会有什么区别。可能是工作簿有问题,请检查它是否以受保护或编辑模式打开,等等。第一个问题:如果您在另一个工作簿上运行此代码(例如,Set book=Workbooks.Add`s),它是否工作,或者您是否仍会出错?@DavidZemens我刚刚创建了一个新的xlsx文件。它得到相同的冻结/错误。