用VBA自动筛选Excel
我想从Access打开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
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