Eingabefeld mit Userdaten vorbelegen?

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

hylli
*******
Beiträge: 1672
Registriert: Mi, 22.02.2006 19:37

Eingabefeld mit Userdaten vorbelegen?

Beitrag von hylli »

Die ursprüngliche Anfrage stammt aus dem Writerforum:
viewtopic.php?f=1&t=46869

Da mich das Thema nun auch doch mehr interessiert, dachte ich, ich stelle es mal ins wahrscheinlich richtige Forum ein. Ich vermute einfach, dass man um Makros und evtl. Dialoge nicht herum kommen wird.

Ziel:
Beim öffnen einer Dokument-/Briefvorlage, öffnet sich zunächst ein Eingabefeld oder ein Dialog mit den eigenen Benutzerdaten (Name, Vorname, Telefonnummer...). Die Benutzerdaten können einfach übernommen oder aber bei Bedarf überschrieben werden.

Bei meiner Suche im Forum bzw. auch im Internet, konnte ich nicht wirklich brauchbares finden, vielleicht habe ich gestern aber auch die falschen Suchbegriffe verwendet?!?

Hat jemand einen Ansatz, wie ich da bewerkstelligen kann bzw. hat jemand in der Richtung schonmal was erstellt auf dem man aufbauen könnte?

Danke vorab.

Gruß
Hylli
Ein Dankeschön für eine Lösung tut nicht weh!
Wer eine Lösung selbst findet, sollte die für die Nachwelt auch posten!

Geschäftlich: LibreOffice 6.0.x ("Still") unter Windows 10 64bit
Privat: LibreOffice 6.0.x ("Still") unter Linux Mint 19.x Cinnamon 64bit
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Eingabefeld mit Userdaten vorbelegen?

Beitrag von Stephan »

Na das ist doch simpel, einfache Inputboxen und Textmarken reichen:

Code: Alles auswählen

Sub Datenabfrage
Dim profil(0) as new com.sun.star.beans.PropertyValue 
nutzer = createUnoService("com.sun.star.configuration.ConfigurationProvider") 
profil(0).Name = "nodepath" 
profil(0).Value = "org.openoffice.UserProfile/Data" 
reg_daten = nutzer.createInstanceWithArguments("com.sun.star.configuration.ConfigurationAccess", profil()) 
txt = InputBox ("Wie lautet Ihr Vornme?", "Vorname", reg_daten.givenname)
thisComponent.getBookmarks().getByName("vorname").getAnchor.setString(txt)
txt = InputBox ("Wie lautet Ihr Nachname?", "Nachname", reg_daten.sn)
thisComponent.getBookmarks().getByName("nachname").getAnchor.setString(txt)
txt = InputBox ("Wie lautet Ihre Telefonnummer?", "Telefonnummer", reg_daten.homephone)
thisComponent.getBookmarks().getByName("telefonnummer").getAnchor.setString(txt)
End Sub
dieses Makro mit dem EReignis "Neues Dokument" einer Dokumentvorlage verbinden und die Dokumentvorlage speichern.



Gruß
Stephan
Dateianhänge
Datenabfrage.ott
(9.18 KiB) 49-mal heruntergeladen
hylli
*******
Beiträge: 1672
Registriert: Mi, 22.02.2006 19:37

Re: Eingabefeld mit Userdaten vorbelegen?

Beitrag von hylli »

Hi,

sieht schon richtig Klasse aus. Kann man irgendwie Vor- und Nachname in einem Feld kombinieren?

....und 2. Frage: Mir scheint, dass vor der 1. Textmarke immer ein Absatz erstellt wird. Kann man dies umgehen?

Hylli :)
Ein Dankeschön für eine Lösung tut nicht weh!
Wer eine Lösung selbst findet, sollte die für die Nachwelt auch posten!

Geschäftlich: LibreOffice 6.0.x ("Still") unter Windows 10 64bit
Privat: LibreOffice 6.0.x ("Still") unter Linux Mint 19.x Cinnamon 64bit
hylli
*******
Beiträge: 1672
Registriert: Mi, 22.02.2006 19:37

Re: Eingabefeld mit Userdaten vorbelegen?

Beitrag von hylli »

Frage 2 konnte ich selbst lösen, indem ich nach jeder Textmarke immer ein Leerzeichen eingefügt habe. Ob das der richtige Weg war/ist -> ???

Ich stehe jedoch gerade vor einem viel größeren Problem:
Ich habe Stephans Makro genommen, um weitere Felder ergänzt, und es in meiner vorhandenen Vorlage als Makro hinterlegt und zwar am Dokument:
benutzerdaten_textmarke_01.png
benutzerdaten_textmarke_01.png (37.43 KiB) 834 mal betrachtet
Wenn ich jedoch das Makro beim Ereignis "Neues Dokument" im Makro-Selektor zuordnen will, dann bekomme ich dieses nicht zur Auswahl:
benutzerdaten_textmarke_02.png
benutzerdaten_textmarke_02.png (27.67 KiB) 834 mal betrachtet
Was mache ich an dieser Stelle falsch bzw. wo liegt mein Fehler?

Hylli
Ein Dankeschön für eine Lösung tut nicht weh!
Wer eine Lösung selbst findet, sollte die für die Nachwelt auch posten!

Geschäftlich: LibreOffice 6.0.x ("Still") unter Windows 10 64bit
Privat: LibreOffice 6.0.x ("Still") unter Linux Mint 19.x Cinnamon 64bit
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Eingabefeld mit Userdaten vorbelegen?

Beitrag von Stephan »

....und 2. Frage: Mir scheint, dass vor der 1. Textmarke immer ein Absatz erstellt wird. Kann man dies umgehen?
Die Textmarken werden nicht durch das Makro eingefügt sondern können per Hand beliebig festgelegt werden. Einzig müssen sie die im makro genannten namen haben.
Was mache ich an dieser Stelle falsch bzw. wo liegt mein Fehler?
Du machst garnichts falsch, es liegt ein Programmfehler vor.

Rufe den Dialog über Extras-Anpassen Register "Ereignisse" Schaltfläche "Makros" auf und nicht über Extras-Makros-Makros verwalten-OOo Basic SChaltfläche "Zuordnen", so wie es schon ein halbes Dutzend Mal hier im Forum steht.


Gruß
Stephan
hylli
*******
Beiträge: 1672
Registriert: Mi, 22.02.2006 19:37

Re: Eingabefeld mit Userdaten vorbelegen?

Beitrag von hylli »

Hi,
Die Textmarken werden nicht durch das Makro eingefügt sondern können per Hand beliebig festgelegt werden. Einzig müssen sie die im makro genannten namen haben.
das wusste ich, hatte jedoch immer wieder Probleme, dass vor einer Textmarke plötzlich ein Absatz/Zeilensprung gesetzt wurde, den ich allerdings nicht gesetzt habe. Seitherige Lösung: Hinter jede Textmarke ein Leerzeichen setzen, dann erst gegebenenfalls einen Absatz.
Du machst garnichts falsch, es liegt ein Programmfehler vor.

Rufe den Dialog über Extras-Anpassen Register "Ereignisse" Schaltfläche "Makros" auf und nicht über Extras-Makros-Makros verwalten-OOo Basic SChaltfläche "Zuordnen", so wie es schon ein halbes Dutzend Mal hier im Forum steht.
Das war des Rätsels Lösung. Da ich bis dato praktisch noch nie mit Makros gearbeitet habe, wusste ich das wirklich nicht. Wusste allerdings auch nicht, nach was ich da hätte suchen müssen.

Danke für die Tipps
Hylli
Ein Dankeschön für eine Lösung tut nicht weh!
Wer eine Lösung selbst findet, sollte die für die Nachwelt auch posten!

Geschäftlich: LibreOffice 6.0.x ("Still") unter Windows 10 64bit
Privat: LibreOffice 6.0.x ("Still") unter Linux Mint 19.x Cinnamon 64bit
Antworten