VBA Datei mittels C++ Code lesen



  • Hallo,
    warum löst Du es nicht mittels OLE Automation. Damit kannst Du die Excel Datei öffnen und ändern. Mit den Schlagworte "C++ Builder Ole Automation Excel" sollten genügend Beispiele zu finden sein.

    Gruß



  • warum löst Du es nicht mittels OLE Automation.

    Das wäre eine Notlösung. Aber dann müsste stets Excel 2003 auf den Rechnern bleiben, da dafür das VBA Script geschrieben ist und keiner mehr Bock hat in die VBA-Technik noch großartig Zeit zu investieren um die dat Datei z.B. mittels Excel 2007 öffnen zu können. Trotzdem danke



  • Hallo,
    wie es aussieht reden wird aneinander vorbei. Beschreib doch mal in Stichpunkten was Du genau vor hast bzw. umsetzten musst. Mit der Ole Automation kannst Du auch Excel 2007 öffnen und bearbeiten unabhängig von VBA Makro, vorausgesetzt dass Office installiert ist. Ich bin davon ausgegangen, dass Office auf den Rechneren installiert ist und die Excel Dateien für die weitere Verarbeitung angepasst werden soll. Du öffnest die Datei, passt die Werte mittel c++ Code an, schreibst die Werte zurück und fertig.
    Wenn die Lösung Geld kosten darf und Du Excel-Dateien ohne Office Installation erstellen möchtest, dann schau Dir mal folgendes an: http://www.tmssoftware.com/site/flexcel.asp

    Gruß



  • Hallo,

    Beschreib doch mal in Stichpunkten was Du genau vor hast bzw. umsetzten musst

    - gegeben sei eine über zehn Jahre alte Arbeitsmappe (Excel 2003)
    - in dieser Arbeitsmappe sind zahlreiche VBA-Macros sowie Datenbankanwendungen
    mit eingebaut
    - damit man nicht jedesmal eine Kopie der Arbeitsmappe anlegen muss, kann die
    Arbeitsmappe die Eingabewerte in einer *.dat Datei speichern und öffnen
    - da im Laufe der Zeit noch Anforderungen hinzugekommen sind hat man sich
    entschlossen, das Ganze mit einer ordentlichen Entwicklungsumgebung
    umzusetzten (BCB)
    - Da man in dieser neuen Version ja auch die Dateien lesen will welche mittels
    VBA Code von der alten Excelarbeitsmappe angelegt worden sind haben wir das
    Dilemma, dass wir mittels C++ Code Dateien öffnen müssen welche mittels VBA
    angelegt worden sind
    - Die Lösung mit dem OLE-Automation hätte zur Folge, dass Excel 2003 auf dem
    ausführenden Rechner installiert sein muss. Bei anderen Excel-Versionen
    funktioniert der VBA - code nit. Daher nur eine Notlösung



  • Probier´s doch mal per Reverse Engineering. Der Datentyp VARIANT wird von Microsoft definiert, exportier´ doch einfach mal ein VARIANT Objekt und guck´ dir im Hex Editor an, wie der auf der Festplatte aussieht. Das probierst du dann für alle gängigen Datentypen (Ganzzahl, Fließkommazahl, Text, etc.).



  • Das Format ist doch mehr oder weniger dokumentiert, wieso Reverse-Engineering?
    http://msdn.microsoft.com/en-us/library/aa266212(v=vs.60).aspx

    Die Frage ist, ob man sich so einen Klotz ans Bein binden will. Ich würde eher das VBA-Script so ändern, dass es nicht in einem proprietären MS-Format abspeichert.



  • Bashar schrieb:

    Das Format ist doch mehr oder weniger dokumentiert, wieso Reverse-Engineering?
    http://msdn.microsoft.com/en-us/library/aa266212(v=vs.60).aspx

    Die Frage ist, ob man sich so einen Klotz ans Bein binden will. Ich würde eher das VBA-Script so ändern, dass es nicht in einem proprietären MS-Format abspeichert.

    Oh, das habe ich gesucht und nicht gefunden 👍

    Vielleicht sind Bestandsdaten noch ein Kriterium, sodass man nicht einfach das Dateiformat ändern kann?



  • Die konvertiert man dann einmal.



  • Die konvertiert man dann einmal.

    Es handelt sich hier um Berechnungen von 10 Jahren. Der Wandlungsaufwand wäre enorm (aber im Notfall sicherlich möglich).

    Anderer Vorschlag:
    Was wäre wenn man sich eine VBA Entwicklungsumgebung zulegt (möglichst kostenlos) den Code zum Öffnen in eine DLL packt und somit die Datei öffnet? Spricht was dagegen? Kennt eine ne kostenlose VBA Entwicklungsumgebung?



  • Der Wandlungsaufwand wäre enorm

    Haeh, man definiert ein neues Daenformat, implementiert einen Konverter (wegen mir in VBA) und laesst alle Daten automatisch umwandeln.



  • Kennt eine ne kostenlose VBA Entwicklungsumgebung?

    Schon mal Alt + F11 in Excel benutzt?

    Gruß


Anmelden zum Antworten