Hallo,
ich habe ein umfangreiches Makroprogramm geschrieben, das in einem Calc Dokument eingebunden ist. Also über thiscomponent kann ich auf die sheets zugreifen, alles bestens. Aber ich muß noch viel an dem Code ändern, deshalb hätte ich den Code gerne getrennt von dem Calc Dokument. sodass ich die Code datei auswechseln kann, und andere User schreiben weiterhin ihre Daten in die Calc Tabellen. Dazu hab ich zwei Fragen.
Wie erhalte ich den Code als eigenständige Datei? wie greife ich dann auf mein Calc Dokument zu. (Calc und programm sollen im selben Verzeichnis liegen, das soll aber frei wählbar sein, also das Programm soll zunächst mal feststellen, wie sein Pfad heißt)
danke für Tipps
Grüße susapo
makro umwandeln
Moderator: Moderatoren
Re: makro umwandeln
Innerhalb der Basic-IDE z.B. mit der Schaltfläche "BASIC speichern".Wie erhalte ich den Code als eigenständige Datei?
Du kannst nicht mit Code der 'in Dateien' gespeichert ist auf andere Dateien zugreifen bzw. höchstens indem Du die andere Datei als Dateiobjekt refenzierst, womit aber jegliches "ThisComponent" hinfällig ist.wie greife ich dann auf mein Calc Dokument zu. (Calc und programm sollen im selben Verzeichnis liegen
Wenn der Code nicht in derselben Datei gespeichert werden soll, dann ist es der richtige Weg ihn in lokale Makrobibliotheken speichern (Extras-Makros-Makros verwalten-Basic-Meine Makros) und nicht 'in Dateien'.
Gruß
Stephan
Re: makro umwandeln
Danke für deine Antwort, Stephan.
meinst du "Basic exportieren"? Basic speichern gibt's bei mir nicht.
ich merke dass ich mich unklar ausgedrückt habe. Ja, ich will die Calc-Datei als Dateiobjekt refenzieren!
Stell dir eine exe datei und eine Datenbank vor, beide im gleichen Verzeichnis. Ich kann die exe Datei mit einer neuen Version überschreiben und die Datenbank bleibt davon unberührt.
ich könnte ja meine Makros in eine leeres Calc oder Writer Dokument kopieren und die Makros aus dem "datenbank" Calc Doku entfernen.
ich glaube ich bin grad ein bisschen verwirrt ....
meinst du "Basic exportieren"? Basic speichern gibt's bei mir nicht.
ich merke dass ich mich unklar ausgedrückt habe. Ja, ich will die Calc-Datei als Dateiobjekt refenzieren!
Stell dir eine exe datei und eine Datenbank vor, beide im gleichen Verzeichnis. Ich kann die exe Datei mit einer neuen Version überschreiben und die Datenbank bleibt davon unberührt.
ich könnte ja meine Makros in eine leeres Calc oder Writer Dokument kopieren und die Makros aus dem "datenbank" Calc Doku entfernen.
ich glaube ich bin grad ein bisschen verwirrt ....
Re: makro umwandeln
jameinst du "Basic exportieren"?
Ja, natürlich. Nur warum formulierst Du:Ja, ich will die Calc-Datei als Dateiobjekt refenzieren!
wenn das doch garkeine Rolle spielt?Also über thiscomponent kann ich auf die sheets zugreifen, alles bestens.
Vorbehaltlich das auch ich mich irren kann bin ich mir jedenfalls sehr sicher das es absolut unmöglich ist ein Calc-Dokument per ThisComponent zu referenzieren wenn das Makro das das tun soll aus einem anderen Dokument heraus gestartet wird.
Der einzige, indirekte, Weg um das zu bewerkstelligen wäre, meines Wissens, ein Makro in der eigentlichen Daten-Datei zu starten, was z.B. dann geht wenn das Makro als Autostartmakro gesetzt ist und man die Datei einfach per exterenem Makro öffnet (Parameter MacroexecMode beachten) , woraufhin das Autostart-Makro automatisch startet.
Und im Sinne der exe-Datei gibt es bei OO/LO sog. Extensions und damit würde man Dein Problem normalerweise lösen.Stell dir eine exe datei und eine Datenbank vor, beide im gleichen Verzeichnis. Ich kann die exe Datei mit einer neuen Version überschreiben und die Datenbank bleibt davon unberührt.
Einstiegsseite Extension-Entwicklung:
https://wiki.openoffice.org/wiki/Docume ... Extensions
Updates für Extensions:
https://wiki.openoffice.org/wiki/Docume ... Extensions
(wobei es genauso üblich ist neue Extensionversionen einfach per Extensionmanager 'Drüberzuinstallieren'.
Gruß
Stephan
Re: makro umwandeln
Hallo Stephan, danke für deine Mühe und deine Geduld!
mit den Extension werde ich mich später mal befassen. Ich hab jetzt "auf die Schnelle" mein calc Doku kopiert, das eine Daten genannt und das andere Programm, hab aus Daten allen Code entfernt und aus Programm alle Daten und eine referenz auf das daten Dokument gemacht. Beide werden jetzt "hidden" geöffnet und ich hab nur noch das große Dialogfenster, womit meine Kollegen arbeiten und sie kommen nicht mehr direkt an die Tabellen.
Ich hab noch ein Problem m it dem Datenaustausch zu meinem Webspace, aber dafür mach ich einen neuen Thread auf.
Grüße Michael
mit den Extension werde ich mich später mal befassen. Ich hab jetzt "auf die Schnelle" mein calc Doku kopiert, das eine Daten genannt und das andere Programm, hab aus Daten allen Code entfernt und aus Programm alle Daten und eine referenz auf das daten Dokument gemacht. Beide werden jetzt "hidden" geöffnet und ich hab nur noch das große Dialogfenster, womit meine Kollegen arbeiten und sie kommen nicht mehr direkt an die Tabellen.
Ich hab noch ein Problem m it dem Datenaustausch zu meinem Webspace, aber dafür mach ich einen neuen Thread auf.
Grüße Michael
Re: makro umwandeln
wenn Du die Daten in einer Datenbank hast, kannst Du genau das machen. Bei meinem Sqlite-Projekt kann ich jederzeit die .odb-Datei ändern, oder sogar verschiedene nutzen. Die Daten werden immer über die angemeldete Datenverbindung geholt.
Leider sind Calc-Dateien als Datenquelle zwar möglich, aber read-only, also keine direkte Möglichkeit für Dich.
Ich schätze eine Anpassung wäre nicht wenig Arbeit fur Dich.
Mfg, Jörn
Libre Office 6.3.1 (Win 10 Pro) / Libre Office 6.0.7 (Win8.1 Pro, Win 7 Pro) / AOO (Win 7)
Re: makro umwandeln
Hallo Jörn,
danke für den Tipp. Ich plane schon eine Neufassung des ganzen Projekts entweder in Python oder Kotlin, aber erst nächstes Jahr, wenn ich mehr Zeit habe. Die jetzige version ist soweit arbeitsfähig und wird so deutlich nicht mehr verändert.
Grüße Michael
danke für den Tipp. Ich plane schon eine Neufassung des ganzen Projekts entweder in Python oder Kotlin, aber erst nächstes Jahr, wenn ich mehr Zeit habe. Die jetzige version ist soweit arbeitsfähig und wird so deutlich nicht mehr verändert.
Grüße Michael