Per ADODB innerhalb einer Excel-Datei auf Daten zugreifen(?)

  • Excel

Es gibt 1 Antwort in diesem Thema. Der letzte Beitrag () ist von petaod.

    Per ADODB innerhalb einer Excel-Datei auf Daten zugreifen(?)

    Hallo Leute,

    ich habe eine kleine Anfrage, bei der ihr mir eventuell weiterhelfen könnt.

    Ich habe eine Excel-Datei (.xlsm), in der sich einige Tausend Datzensätze befinden. Auf der "Startseite"befindet sich ein Formular, das der Anwender nutzen kann, um bestimmte Daten abzufragen (z.B. Standorte, gefiltet nach eingegebener Vorwahl). Die interne Datenabfrage erfolgt über eine selbst gebastelte "SQL"-Parser-Funktion.

    ich würde diese Datenabfrage gerne auf ADODB umstellen, weil ich dann auch richtige SQL-Querys nutzen kann, und zudem viel Code einsparen kann.

    ich weiß, wie ich auf externe Excel-Dateien zugreifen kann. Z.B. über "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Quelle;Extended Properties=""Excel 12.0;HDR=YES;", aber wie muss der String lauten, wenn ich quasi auf die eigene Excel-Datei verweisen will?

    Schon mal vielen Dank im Voraus :)

    GrayFox schrieb:

    wie muss der String lauten, wenn ich quasi auf die eigene Excel-Datei verweisen will?
    Genauso.
    Da gibt's keine Abkürzung.
    Ausser dass du bei "Data Source=" dynamisch auf Thisworkbook.Fullname verweisen kannst, wenn du den Connectionstring zur Laufzeit erzeugst.

    Also quasi so:

    Visual Basic-Quellcode

    1. With ListObjects(1).QueryTable 'oder besser per Namen ansprechen
    2. .Connection="Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties=""Excel 12.0;HDR=YES;"""
    3. .CommandText = "SELECT * FROM Tabelle1$"
    4. .Refresh False
    5. End With

    Auf diese Art kannst du den SQL-Befehl auch zur Laufzeit dynamisch verändern.
    Den Connectionstring brauchst du natürlich in dem Fall nicht jedes Mal neu überschreiben.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „petaod“ ()