none
filterdatabase aus Access 2007 heraus auslesen

    Frage

  • Hallo zusammen,

    ich habe folgendes Problem:


    in Excel 2007 habe ich folgende Codezeilen um auf gefiltere Bereiche zuzugreifen:
    Dim bereich as Range
    Set bereich = Range("Tabelle1!_FilterDatabase")

    Jetzt will ich diese Funktion Aus Access 2007 heraus nutzen.

    Dim ex As New Excel.Application
    ex.Visible = True
    ex.Workbooks.Open datei
    With ex.Workbooks(1).Sheets(1)
        Debug.Print .UsedRange.AutoFilter 'funktioniert
        Set bereich = .Range("Tabelle1!_FilterDatabase") 'geht nicht
    End With
    ex.Workbooks.Close
    Set ex = Nothing

    Wie kann ich aus Access heraus auf die gefilterten Bereiche in Excel zugreifen ?

    viele Grüße

    Thomas

     

     

    Dienstag, 6. Juli 2010 08:09

Antworten

  • Hallo Thomas,

    Ich habe folgendes gemacht:

    1)    In Excel 2007

    Habe eine Excel Datei erstellt die aussieht wie im folgendem Beispiel: http://www.pctipp.ch/forum/showpost.php?s=d4911d6632dc04b39981e49cebdfe917&p=67882&postcount=14

    Habe dan von A15 bis H19 einen AutoFilter gemacht (A15:H19 selektiert und Data à Sort&Filter Kategorie àFilter)

    Habe dann geprüft mit folgendem Code und das Resultat ist =Sheet1!$A$15:$H$19

    Sub test()
    Dim bereich As Range
    Set bereich = Range("Sheet1!_FilterDatabase")
    Debug.Print bereich.Name
    End Sub

     

    2)    In Access 2007 – VBA folgender Code geprüft (Verweis auf Microsoft Excel 12.0 Object Library):

    Option Compare Database
     
    Private Sub Main()
    Dim ex As New Excel.Application
    '//Dim bereich As Range
    ex.Visible = True
    ex.Workbooks.Open ("C:\Filme\Filterul.xlsx")
    With ex.Workbooks(1).Sheets(1)
     Debug.Print .UsedRange.AutoFilter '//funktioniert und liefert True
     Set bereich = .Range("Sheet1!_FilterDatabase") '//funktioniert
     Debug.Print bereich.Name '//liefert =Sheet1!$A$15:$H$19
    End With
    ex.Workbooks.Close
    Set ex = Nothing
     
    End Sub

     

     

     Welche Fehlermeldung bekommst Du?

    Grüße,

    Robert

     
    • Als Antwort markiert Thomas Eckel Dienstag, 14. September 2010 12:41
    Dienstag, 6. Juli 2010 10:44
    Besitzer

Alle Antworten

  • Eckelth schrieb am 06.07.2010 10:09 Uhr:
    Dim bereich as Range

    Versuche es doch bitte mal so:

       Dim bereich As Excel.Range

    Peter



    Dienstag, 6. Juli 2010 10:20
  • Hallo Thomas,

    Ich habe folgendes gemacht:

    1)    In Excel 2007

    Habe eine Excel Datei erstellt die aussieht wie im folgendem Beispiel: http://www.pctipp.ch/forum/showpost.php?s=d4911d6632dc04b39981e49cebdfe917&p=67882&postcount=14

    Habe dan von A15 bis H19 einen AutoFilter gemacht (A15:H19 selektiert und Data à Sort&Filter Kategorie àFilter)

    Habe dann geprüft mit folgendem Code und das Resultat ist =Sheet1!$A$15:$H$19

    Sub test()
    Dim bereich As Range
    Set bereich = Range("Sheet1!_FilterDatabase")
    Debug.Print bereich.Name
    End Sub

     

    2)    In Access 2007 – VBA folgender Code geprüft (Verweis auf Microsoft Excel 12.0 Object Library):

    Option Compare Database
     
    Private Sub Main()
    Dim ex As New Excel.Application
    '//Dim bereich As Range
    ex.Visible = True
    ex.Workbooks.Open ("C:\Filme\Filterul.xlsx")
    With ex.Workbooks(1).Sheets(1)
     Debug.Print .UsedRange.AutoFilter '//funktioniert und liefert True
     Set bereich = .Range("Sheet1!_FilterDatabase") '//funktioniert
     Debug.Print bereich.Name '//liefert =Sheet1!$A$15:$H$19
    End With
    ex.Workbooks.Close
    Set ex = Nothing
     
    End Sub

     

     

     Welche Fehlermeldung bekommst Du?

    Grüße,

    Robert

     
    • Als Antwort markiert Thomas Eckel Dienstag, 14. September 2010 12:41
    Dienstag, 6. Juli 2010 10:44
    Besitzer
  • Hallo Robert,

    entscheidend war erstmal den Range als excel.range zu markieren. Vielen Dank an Peter.

    Leider ist dies nur die halbe Lösung. Dein Beispielcode funktioniert nur, wenn ich Access mit Admin-Rechten starte.

    Als "normaler" User erhalte ich bei gleichem Code die Fehlermeldung 1004 "Anwendungs- oder objektdefinierter Fehler" beim Ausführen der Zeile set bereich = ....

    Verblüffend, oder ?
    Gibt es dafür auch noch eine Lösung ?

    Gruß
    Thomas

    Dienstag, 6. Juli 2010 13:24
  • ergänzend noch die Frage:

    Wie kann ich ermitteln, welches Recht genau fehlt.

    Hintergrund:
    der code soll von einigen Users genutzt werden, die keine Adminrechte haben. Ggf. kann aber das fehlende Recht nachgezogen werden. Eingesetzt wird noch Win XP SP3 mit Office 2007SP1.

    Tests auf einem Rechner mit Standardinstallation Win7 + Office 2007 brachten die gleichen Ergebnisse.

    Gruß
    Thomas

     

    Donnerstag, 8. Juli 2010 07:54