2014-02-12 4 views
0

Я хотел бы открыть Excel из Access и применить фильтры к листу. Ниже мой код:Autofilter Excel с VBA

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 

Когда я запускал код, я получил эту ошибку:

runt time error 1004 Autofilter methond of range class failed

Может кто-нибудь понять, почему?

ответ

1

Попробуйте этот. Я прокомментировал код в деталях, но если у вас есть какие-то вопросы - спрашивайте :)

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 

, а также еще одна вещь: изменение Operator:=xlFilterValues к Operator:=7 (доступ не знает о первенствовать constanst пока вы не добавите ссылку на excel библиотека в доступе)

+0

им жаль все еще дает такую ​​же ошибку – Xarxas

+0

Ваш листок защищен в excel? –

+0

Я проверил. не защищен – Xarxas

Смежные вопросы