Verbindung über ADODB zu einer Excel-Datei dauert zu lange, wenn die Daten nicht geöffnet ist

  • VBScript

    Verbindung über ADODB zu einer Excel-Datei dauert zu lange, wenn die Daten nicht geöffnet ist

    Hallo Leute! :)

    Ich habe ein kleines Problem mit der Perfomance bei einer ADODB-Verbindung.

    Mein Setup: Ich habe eine Web-Anwendung geschrieben, die sich über ADODB mit einer Excel-Datei verbindet und per SQL-Statements Daten abfragt.

    Mein ADO-Code:

    Visual Basic-Quellcode

    1. function runSqlQuery(query)**
    2. app.overlay("show")
    3. E("body").focus()
    4. Set conn = CreateObject("ADODB.Connection")
    5. *'Use this to avoid ado warning*
    6. set shl = CreateObject("wscript.shell")
    7. shl.sendkeys "{ENTER}"
    8. set shl = nothing
    9. *'Connect to the database*
    10. strConnect = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=excel\masterliste.xlsb;Extended Properties=Excel 12.0;"
    11. conn.Open strConnect
    12. StrSQL = query
    13. Set rs = conn.Execute(StrSQL)
    14. app.overlay("hide")
    15. set runSqlQuery = rs
    16. end function


    Mein Problem:

    Wenn ich die Masterliste.xlsb in Excel geöffnet habe, dauert es ungefähr 5 Sekunden, bis ich die Daten habe. Wenn die Datei nicht geöffnet ist, dauert es rund 25-30 Sekunden, bis die Daten abgerufen wurden.

    Ich vermute, dass im zweiten Fall die Verbindung zu Excel erstmal hergestellt werden muss, weshalb die komplette Anfrage so lange dauert. Es ist sogar so, dass im besagten Fall die Anwendung kurzzeitig instabil wird (= "Keine Rückmeldung"), aber dann nach besagter Wartezeit die Daten anzeigt.

    Kennt ihr eine Möglichkeit, um dieses Problem zu beheben und die Performance zu verbessern?

    Ein zweites Problem habe ich noch: Wenn ich den folgenden Verbindungsstring verwende: "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=excel\masterliste.xlsb;Extended Properties=Excel 12.0;**HDR=YES;**" , bekomme ich die Fehlermeldung: "Kein installierbares ISAM gefunden".

    Vielen Dank im Voraus!