用VBA自动筛选Excel

用VBA自动筛选Excel,excel,ms-access,vba,autofilter,Excel,Ms Access,Vba,Autofilter,我想从Access打开Excel并对工作表应用过滤器。 下面是我的代码: Dim s as String Set oApp = CreateObject("Excel.Application") oApp.Wworkbooks.Open FileName:="dudel.xlsm" oApp.Visible = True s = "AB" With oApp .Rows("2:2").Select .Selection.AutoFilter .Ac

我想从Access打开Excel并对工作表应用过滤器。 下面是我的代码:

Dim s as String
Set oApp = CreateObject("Excel.Application")
oApp.Wworkbooks.Open FileName:="dudel.xlsm"
oApp.Visible = True
s = "AB"
With oApp
        .Rows("2:2").Select
        .Selection.AutoFilter
        .ActiveSheet.Range("$A$2:$D$9000").AutoFilter Field:=3, Criteria1:= _ 
             Array(s, "E", "="), Operator:=xlFilterValues
        .Range("A3").Select 
End With
运行代码时,出现以下错误:

运行时错误1004范围类的自动筛选方法失败


有人知道为什么吗?

试试这个。我已经对代码进行了详细的注释,但如果您有一些问题,请询问:)


还有一件事:将
运算符:=xlFilterValues
更改为
运算符:=7
(在access中添加对excel库的引用之前,access不知道excel constanst)

您的工作表在excel中受保护吗?我已选中。不受保护请检查excel中
C2:C9000
范围内的数据是否真的包含值“AB”、“E”和“=”从
Criteria1
中删除
”=“
将删除空白。@Xarxas,BK201绝对正确!将
Criteria1:=数组,“E”和“=”
更改为
Criteria1:=数组,“E”)
Sub test()
    Dim s As String
    Dim oApp As Object
    Dim wb As Object
    Dim ws As Object


    Set oApp = CreateObject("Excel.Application")
    oApp.Visible = True

    'tries to open workbook
    On Error Resume Next
    'change file path to the correct one
    Set wb = oApp.workbooks.Open(FileName:="C:\dudel.xlsm")
    On Error GoTo 0

    'if workbook succesfully opened, continue code
    If Not wb Is Nothing Then
        'specify worksheet name
        Set ws = wb.Worksheets("Sheet1")
        s = "AB"
        With ws
            'disable all previous filters
            .AutoFilterMode=False
            'apply new filter
            .Range("$A$2:$D$9000").AutoFilter Field:=3, Criteria1:=Array(s, "E"), Operator:=7
        End With

        'close workbook with saving changes
        wb.Close SaveChanges:=True
        Set wb = Nothing
    End If

    'close application object
    oApp.Quit
    Set oApp = Nothing
End Sub