Auto_Open() in Calc?
Moderator: Moderatoren
Re: Auto_Open() in Calc?
Hallo
Ja die gibt es: → Extras → Anpassen → "_| Ereignisse |_" ...
Gruß Karo
Ja die gibt es: → Extras → Anpassen → "_| Ereignisse |_" ...
Gruß Karo
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
Re: Auto_Open() in Calc?
Hallo
Dann musst du die Variable ausserhalb der Function oder Sub global initialisieren und den Wert in der Start-sub zuweisen, etwa so:
( entnommen aus der OOo-hilfe zum Stichwort "Global" )
Damit steht die Variable in anderen Sub_s zur Verfügung.
Gruß Karo
Dann musst du die Variable ausserhalb der Function oder Sub global initialisieren und den Wert in der Start-sub zuweisen, etwa so:
Code: Alles auswählen
Global iGlobalVar As Integer
Sub ExampleGlobal
iGlobalVar = 42
End sub
Damit steht die Variable in anderen Sub_s zur Verfügung.
Gruß Karo
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
Re: Auto_Open() in Calc?
Hallo
zu 1. Automatisch geht das nicht in OOo - aber es geht : per CalcAddin. Eine gute Extension auf dieser Basis ist z.B. http://extensions.services.openoffice.o ... numbertext
zu 2. Soweit ich weiss müssen eigene BasicFunctionen in der Standard-Bibliothek abgelegt werden, damit sofortiger Zugriff darauf gewährleistet ist.
Gruß Karo
zu 1. Automatisch geht das nicht in OOo - aber es geht : per CalcAddin. Eine gute Extension auf dieser Basis ist z.B. http://extensions.services.openoffice.o ... numbertext
zu 2. Soweit ich weiss müssen eigene BasicFunctionen in der Standard-Bibliothek abgelegt werden, damit sofortiger Zugriff darauf gewährleistet ist.
Gruß Karo
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
Re: Auto_Open() in Calc?
zu 1. Eh du lange grübelst: Das Makro kann aber nicht in Basic geschrieben werden, java, Python sind u. a. möglich
Moritz
Moritz
Re: Auto_Open() in Calc?
Hallo,
Ich habe genau das gleiche Problem ... verstehe aber die Zusammenhänge nicht.
ich habe ein Calc-Dokument, das Werte aus einer anderen Tabelle übernimmt.
Bestimmte Zeilen sollen nach dem Start ausgeblendet werden, das habe ich über ein Makro in StarBasic realisiert.
Das Makro ist im Dokument selbst, in einer eigenen Bibliothek gespeichert.
Das Makro funktioniert, nicht aber die Zuweisung an das Ereignis 'beim Öffnen' oder 'nach dem Laden': mein Makro steht in der Auswahl nicht zur Verfügung.
Natürlich könnte ich das Makro in die Standard-Bibliothek einbinden und an das ganze Haus (>1000 User) verteilen, aber es sind nur ca 40, die es brauchen, deshalb habe ich es ja auch im Dokument selbst gespeichert.
Oder ein 'Knöfchen' machen: "Ausblenden" - Aber es soll ja Anwenderfereundlich sein und schon beim Öffnen die geeignete Ansicht bieten.
Den Hinweis von Moritz
und bei den Links von Karo (CalcAddin) habe ich nichts gefunden.
Gibt es keine Möglichkeit ein Makro in einem Dokument zu hinterlegen, das nach dem Öffnen ausgeführt wird?
Ich habe genau das gleiche Problem ... verstehe aber die Zusammenhänge nicht.
ich habe ein Calc-Dokument, das Werte aus einer anderen Tabelle übernimmt.
Bestimmte Zeilen sollen nach dem Start ausgeblendet werden, das habe ich über ein Makro in StarBasic realisiert.
Das Makro ist im Dokument selbst, in einer eigenen Bibliothek gespeichert.
Das Makro funktioniert, nicht aber die Zuweisung an das Ereignis 'beim Öffnen' oder 'nach dem Laden': mein Makro steht in der Auswahl nicht zur Verfügung.
Natürlich könnte ich das Makro in die Standard-Bibliothek einbinden und an das ganze Haus (>1000 User) verteilen, aber es sind nur ca 40, die es brauchen, deshalb habe ich es ja auch im Dokument selbst gespeichert.
Oder ein 'Knöfchen' machen: "Ausblenden" - Aber es soll ja Anwenderfereundlich sein und schon beim Öffnen die geeignete Ansicht bieten.
Den Hinweis von Moritz
verstehe ich nicht ...moritz hat geschrieben:zu 1. Eh du lange grübelst: Das Makro kann aber nicht in Basic geschrieben werden, java, Python sind u. a. möglich
Moritz
und bei den Links von Karo (CalcAddin) habe ich nichts gefunden.
Gibt es keine Möglichkeit ein Makro in einem Dokument zu hinterlegen, das nach dem Öffnen ausgeführt wird?
Viele Grüße,
Tara
-------------
OOo 3.3 unter Windows XP_SP3, W7 und (K)Ubuntu
Tara
-------------
OOo 3.3 unter Windows XP_SP3, W7 und (K)Ubuntu
Re: Auto_Open() in Calc?
Dein Makro steht nicht zur Verfügung über Extras-Makros-Makros Verwalten-OOo Basic / Schaltfläche "Zuordnen" / Register "Ereignisse" / Schaltfläche "Makro"nicht aber die Zuweisung an das Ereignis 'beim Öffnen' oder 'nach dem Laden': mein Makro steht in der Auswahl nicht zur Verfügung.
Dein Makro steht hingegen zur Verfügung über Extras-Anpassen / Register "Ereignisse" / Schaltfläche "Makro"
das ist ein im Forum bereits vielfach benannter Programmfehler in OOo.
es ist nicht möglich ein benutzerdefinierte Tabellenfunktion für Calc in Basic zu schreiben, welche im Functionsasssistenten direkt, usammen mit allen anderen Funktionen, angezeigt wird. Soll eine benutzerdefinierte Funktion im Funktionsassistenten angezeigt werden muß diese in Java, C++, etc. geschrieben sein.verstehe ich nicht ...
Auch das steht bereits mehrfach im Forum.
Gruß
Stephan
Re: Auto_Open() in Calc?
genau das war's.Stephan hat geschrieben:Dein Makro steht hingegen zur Verfügung über Extras-Anpassen / Register "Ereignisse" / Schaltfläche "Makro"
vielen Dank!
Viele Grüße,
Tara
-------------
OOo 3.3 unter Windows XP_SP3, W7 und (K)Ubuntu
Tara
-------------
OOo 3.3 unter Windows XP_SP3, W7 und (K)Ubuntu
Re: Auto_Open() in Calc?
So fern sich das auf das bezieht was ich zu benutzerdefinierten Tabellenfunktionen schrieb ist es doch lediglich ein Mißverständnis, denn wenn ich schreibe das in Basic geschriebene benutzerdefinierte Tabellenfunktionen nicht im Funktionsassistenten auftauchen heißt das nicht das man sie nicht benutzen kann, mann kann sie nur nicht mit ein paar Mausklicks im Funktionsassitentenb einfügen, sondern muß sie per Tastatur eintippen, so wie man das mit normalen Funktionen auch kann, dort aber nicht muß.Wofür gibt es Bibliotheken, die man auch exportieren und importieren kann, wenn letztendlich doch niemand auf die Funktionen zugreifen kann? Oder habe ich den Zusammenhang etwas falsch verstanden?
Oder verstehe ich die FRage falsch?
das heißt inhaltlich was?Verstehe ich nicht ganz warum Add-Ins erst kompliziert
Ich denke schon das diese allgemein auch in Basic geschrieben werden können, allein ging es hier im Thread ja darum das es nicht möglich ist ein AddIn in Basic zu schreiben welches benutzerdefinierte Tabellenfunktionen enthält, also ein ganz spezielles ADDIn (nicht "speziell" weil besonders kompliziert, sondern weil es einer spezifischen Aufgabe dient).und dann auch noch nicht einmal in Basic geschrieben werden können.
Das ist überhaupt nicht vergleichbar, weil erstens der Begriff "AddIn" bei OOo etwas Anderes umfasst, denn das was in Excel (Basic-)AddIns sind wären in Calc technisch Extensions und zum Wesentlichen weil hier wieder einmal gilt das OOo multiplattformfähig ist und das AddIns dann auch sein müssen.Wo sich Add-Ins in excel doch durch einen Mausklick realisieren lassen.
Ein Excel-AddIn hat es hier viel leichter, denn es muß nur unter Windows funktionieren und es kann sich quasi darauf verlassen unter Windows zu laufen, kann also (notfalls) wenn bei bestimmten Dingen die Excel-Funktionalität nicht reicht gleich Möglichkeiten von Wndows nutzen, z.B. direkte Registry-Zugriffe.
Alles das könnte ein Calc-AddIn auch, nur es ist wenig üblich plattformabhängige AddIns zu schreiben, die dann nur unter einem Betriebsssytem funktionieren würden. Es ist ja zum Beispiel möglich auch von OOo aus (auch in basic) auf die Windows-Registry zuzugreifen, nur würde ein AddIn welches sich dieses ZUgriffes bedingt dann unter Linux oder MacOS schlicht nicht mehr funktionieren, weil keine Registry da ist. Typischerweise vermeidet mam also solche betriebssystemspezifischen ZUgriffe um nicht in jedem AddIN mehrere Versionen (Windows, Linux, MacOS) beinhalten zu müssen.
Gruß
Stephan
Re: Auto_Open() in Calc?
Ach so.bezog nicht direkt auf das was du geschrieben hast. Das war eigentlich eher darauf bezogen warum man nur auf Funktionen/Makros aus der Standardbibliothek zurückgreifen kann.
Hierzu am besten ein kleines Beispiel: Ich habe meine Basic Funktionen in einer eigenen Bibliothek liegen und möchte diesen nun einem Freund zur Verfügung stellen, dafür exportiere ich diese Bibliothek als Extension, sodass mein Freund einfach nur noch doppelt drauf klicken muss und schon sind die Funktionen installiert. Soweit so gut. Nun kann er jedoch nicht auf die Funktionen zugreifen, auch nicht per Tastatureingabe. Er müsste Sie erst in den Standardordner verschieben. Und den Punkt versteh ich nicht.
ZUnachst einmal unterscheide bitte zwischen Basic-Funktionen und benutzerdefinierten Tabellenfunktionen, denn beide sind zwar gleich (bzw. können gleich sein, wenn es so sein soll) und beide Funktionieren insofern unterschiedlich als das bei normalen Basic-Funktionen der ZUgriff auch dann kein Problem ist wenn sie nicht in der Standard-Bibliothek liegen, da normale Basic-Funktionen ja ohnehin nur unter Zuhilfenahme eines Makros gestartet werden können und in diesem Makro dann auch gleich die Bibliothek geladen werden kann in der die Funktion liegt und dann klappt der Zugriff.
Ist also beispielsweise die Funktion
Code: Alles auswählen
Function abc()
abc = Now
End Function
Code: Alles auswählen
Sub aufruf()
x = xyz.abc
Msgbox x
End Sub
Was jedoch bei nicht geladener Bibliothek xyz zu einem Laufzeitfehler führren sollte, weshalb man die Bibliothek vorher laden muß und das ja im, ohnehin benötigten Makro, auch problemlos kann:
Code: Alles auswählen
Sub aufruf()
GlobalScope.BasicLibraries.LoadLibrary("xyz")
x = xyz.abc
Msgbox x
End Sub
Ja, Beides ist so. Und ich kenne keinen stichhaltigen Grund warum es bei OOo so ist, es ist also eine ärgerliche Einschränkung.Dennoch ist es bei Excel so, dass sobald ich ein Add-In Installiere, ich die Funktionen sofort zur Verfügung habe. Dies ist nach dem Installieren von OOo Extensions jedoch nicht so.
Das es sich kaum empfiehlt auf einem unbekannten Zielsystem die Standardbibliothek zu überschreiben, was u.U. (ich bin im Moment nicht ganz sicher) auch mit einer Extension ginge, welche lediglich händisch angepasst werden müßte da der Bordmechanismus von OOO das ERzeugen einer Extension aus der Bibliothek Standard verhindert, wäre wohl ein möglicher gangbarer Weg die Bibliothek Standard auf dem Zielsystem mittels Code zu erweitern (früher als es bei OOo noch keine Extensions gab wurden ohnehin selbstprogrammierte Installer zu Makroinstallation verwendet was so ähnlich war), Code dazu findest Du wohl hier im Forum, sonst wohl zunächst ausgehend von:
http://www.starbasicfaq.de/WiekannmanBi ... eren..html
http://www.starbasicfaq.de/AddLibraries.html
http://www.starbasicfaq.de/WiekannmanBi ... chen..html
Mann könnte diesen mechanismus nun auch in eine EXtension verpacken, da der NUtzer dann aber erst die EXtension installieren und danach ein makro aufrufen muß ist es wohl zweckmäßiger dafür einfach ein normales Dokument zu nutzen, ähnlich wie es in UREF geschieht:
http://www.heise.de/software/download/uref/41933
(UREF mach funktionell natürlich etwas ganz Anderes es geht mir nur um den integrierten Installationsmechanismus, denn UREF wird nicht als Extension installiert.)
Gruß
Stephan
Re: Auto_Open() in Calc?
Karolus und ich haben bereits darauf hingewisen, daß benutzerdefinierte Calc- Funktionen, die nicht im Standard-Basic-Makro-Verzeichnis gespeichert sind und trotzdem mit dem Funktionsassistenten aufgerufen werden können, sehr wohl möglich sind. Sie sind als Extension weiterzugeben und problemlos auf jedem Rechner installierbar. siehe das von Karolus genannte NumberToText.
Aber: Sie dürfen nicht in starbasic geschrieben werden, sondern z.B. in Python.
Moritz
Aber: Sie dürfen nicht in starbasic geschrieben werden, sondern z.B. in Python.
Moritz