ADO - XLS -> Array - Probleme

  • Hallo Leute,

    ich habe ein Problem mit meiner Copy/Paste-Programmierung. Ich bin jetzt schon länger am Werkeln und dennoch komme ich nicht zum Ergebnis. Also fürchte ich, ich brauche nun die Hilfe von Leuten, die wissen was sie tun. Das ganze soll Teil eines größeren C&P-Programms werden, allerdings verstehe ich es gerade nicht mehr..

    Folgendes Setting: Ich möchte ohne vorhandene Excel-Installation XLS-Dateien auslesen.
    Folgendes Problem: Die erste Spalte stimmt nicht. Auch die erste Zeile stimmt nicht, wenn Strings enthalten sind.

    Im Anhang findet ihr ein Archiv, in dem das Skript und einige Beispiel-XLS liegen.


    Hier mal das Skript zur direkten Ansicht. Für jede Hilfe bin ich euch dankbar :)
    Edit: Entfernt. Ist nun im letzten Beitrag

    Grüße autoiter

    Einmal editiert, zuletzt von autoiter (28. Oktober 2016 um 15:26) aus folgendem Grund: Korrigierte Fassung im dritten Beitrag

  • Hallo Leute,

    ich habe einige Fehler korrigieren können und das Skript nun auch etwas kommentiert. Die Fehler in der ersten Spalte kamen durch meine unfähige Umwandlung des Strings in ein Array (das mache ich wahrscheinlich eh suboptimal).

    Jedenfalls werden jetzt relativ unfallfrei alle Beispiele abgearbeitet. Leider bleibt ein großes Problem: In meinen Beispielen habe ich in den Überschriften zwischen Zahlen und Worten variiert. Die Worte werden in den Tabellen nicht angezeigt!

    In bsp1 (1|2|Fu|Ba|3|4) kommt |||3|4 heraus. 1 und 2 werden also auch verschluckt.

    in bsp 2 fehlen dann einfach die Namen:
    bsp2.xls-Namen als Überschriften.PNGbsp2.xls-Arrayansicht - Namen fehlen.PNG

    Hat das etwas mit den Datentypen zu tun, die man laut dem MS-Artikel nicht auswählen kann? Auch MAXSCANROWS=1 in der Verbindungszeichenfolge brachte mir da nichts. Eigentlich dürften die Inhalte doch dennoch nicht leer sein. Weiß da jemand etwas?

    Ergänzung: Es liegt am Datentyp. In bsp1.xls sind in der Überschrift die Zellen 1 und 2 als Text formatiert. Daher fehlen auch die als Text formatierten Ziffern 1 und 2. Hm, was kann ich tun, damit ich alle Felder bekomme? :huh:

    Hier das aktuelle kommentierte Skript, bei dem es sich um eine angepasste Version ADO Example Excel handelt

    Edit: Entfernt. Ist nun im letzten Beitrag

    Im Anhang das Ganze noch einmal mit den Testdateien.

    Grüße autoiter

    2 Mal editiert, zuletzt von autoiter (28. Oktober 2016 um 15:25)

  • Hallo Leute,

    ich konnte mein Problem lösen. In den Verbindungstext musste zu den Extended Properties IMEX=1 ergänzt werden. Dies führt beim Auslesen zum Konvertieren in Text.

    Der Vollständigkeit halber hier das endgültige Skript.

    Spoiler anzeigen
  • Hallo Leute,

    Ich habe den Code in einem Programm zum Auslesen von Office Dateien benutzt, das ich hier auch gepostet habe. Dieses Programm habe ich nun auf einigen Rechnern testen können.
    Dabei ist ein Absturzproblem zu Tage getreten. Bei einem Rechner, der mit Windows 10 Home Lizenz gekauft wurde, stürzt das Programm ab. Bei allen anderen Rechnern, die Upgrades von Windows 7 Pro und 8.1 Por waren gibt es keine Probleme.

    AutoIt
    Local $oADOConnection = ObjCreate("ADODB.Connection") ; Das ADODB-Verbindungsobjekt


    Das zeigt noch keinen @error. Dennoch stürzt das Programm dann in der Zeile 45 ab:

    AutoIt
    $oADOConnection.Open($sADOConnectionString)

    Die Meldung lautet in Etwa: Die Aktion kann mit dem Objekt nicht durchgeführt werden.

    Ich habe nirgends etwas von einem grundsätzlichem Problem mit Windows Home und dem Jet OLE DB Provider finden können. Kann ich den Fehler irgendwie abfangen, damit das Programm nicht gleich abschmiert?

    Für jeden eurer Tipps bin ich wie immer sehr dankbar.

    Grüße autoiter

  • Um das Problem abzufangen brauchst Du einen COM Error Handler. Siehe unter ObjEvent in der Hilfe.

  • :D