🙏 Helfen Sie jetzt mit, unser LibreOffice Forum zu erhalten! 🙏
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱
🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀
>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗
Nach einem Feldbefehl suchen
-
- Beiträge: 12
- Registriert: Fr 26. Apr 2013, 13:32
Nach einem Feldbefehl suchen
Hallo,
ich habe ein Dokument in dem zahlreiche Feldbefehle mit dem gleichen Muster des Feldnamens sind ( Feldbefehl_LO_laufende nummer).
Ich möchte nun gerne alle Feldbefehle mit dem Muster in Text umwandeln.
[Feldbefehl_LO_laufende nummer] soll zu <!Feldbefehl_LO_laufende nummer!> im fließtext werden.
Der Wert der einzelnen Feldbefehle ist für mich dabei irrelevant und kann verloren gehen.
Mir ist leider unklar, wie ich über ein Makro nach Feldbefehlen suchen kann.
Ich wäre über einen Hinweis für dieses kleine Problem sehr dankbar.
Felix
ich habe ein Dokument in dem zahlreiche Feldbefehle mit dem gleichen Muster des Feldnamens sind ( Feldbefehl_LO_laufende nummer).
Ich möchte nun gerne alle Feldbefehle mit dem Muster in Text umwandeln.
[Feldbefehl_LO_laufende nummer] soll zu <!Feldbefehl_LO_laufende nummer!> im fließtext werden.
Der Wert der einzelnen Feldbefehle ist für mich dabei irrelevant und kann verloren gehen.
Mir ist leider unklar, wie ich über ein Makro nach Feldbefehlen suchen kann.
Ich wäre über einen Hinweis für dieses kleine Problem sehr dankbar.
Felix
Re: Nach einem Feldbefehl suchen
Hallo
Sind ausser diesen Feldbefehlen noch andere Feldbefehle im Fliestext die unverändert bleiben sollen?
Folgendes ersetzt alle Feldbefehle durch '<!vorheriger_text>'
Karolus
Sind ausser diesen Feldbefehlen noch andere Feldbefehle im Fliestext die unverändert bleiben sollen?
Folgendes ersetzt alle Feldbefehle durch '<!vorheriger_text>'
Code: Alles auswählen
def fieldsreplace():
doc = XSCRIPTCONTEXT.getDocument()
textfields = doc.getTextFields()
for field in iterable( textfields):
field.Anchor.setString( '<!{}>'.format( field.Anchor.getString() ) )
def iterable( enumerable ):
enum = enumerable.createEnumeration()
while enum.hasMoreElements():
yield enum.nextElement()
LO7.4.7.5 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO24.8.0.3 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO24.8.0.3 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
-
- Beiträge: 12
- Registriert: Fr 26. Apr 2013, 13:32
Re: Nach einem Feldbefehl suchen
Liebe/r Karolus,
vielen Dank!
Ja es sind noch andere Feldbefehle im Text. Es sollten nur jene verändert werden, deren anfangsstring "Feldbefehl_LO" ist.
aber müsste ich dazu nicht nur eine if bedingung vor die zeile:
field.Anchor.setString( '<!{}>'.format( field.Anchor.getString() ) )
setzen?
VG
Felix
vielen Dank!
Ja es sind noch andere Feldbefehle im Text. Es sollten nur jene verändert werden, deren anfangsstring "Feldbefehl_LO" ist.
aber müsste ich dazu nicht nur eine if bedingung vor die zeile:
field.Anchor.setString( '<!{}>'.format( field.Anchor.getString() ) )
setzen?
VG
Felix
Re: Nach einem Feldbefehl suchen
Hallo
Ja das müsstest du.
Ja das müsstest du.
Code: Alles auswählen
def fieldsreplace():
doc = XSCRIPTCONTEXT.getDocument()
textfields = doc.getTextFields()
for field in iterable( textfields):
s = field.Anchor.getString()
if s.startswith('Feldbefehl_LO'):
field.Anchor.setString( '<!{}!>'.format( s ) )
def iterable( enumerable ):
enum = enumerable.createEnumeration()
while enum.hasMoreElements():
yield enum.nextElement()
LO7.4.7.5 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO24.8.0.3 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO24.8.0.3 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
-
- Beiträge: 12
- Registriert: Fr 26. Apr 2013, 13:32
Re: Nach einem Feldbefehl suchen
Vielen Lieben Dank für den Code!
-
- Beiträge: 12
- Registriert: Fr 26. Apr 2013, 13:32
Re: Nach einem Feldbefehl suchen
mhh.
Wenn ich das richtig sehe, ist der code ein python script. Irgendwie schaffe ich es nicht den code auf Libre Office Basic umzuschreiben. Ich selbe habe ein wenig programmierkenntnisse in freepascal aber das hilft mir auch nur beim nachvollziehen geschriebenen codes, nicht aber beim selber erstellen....
Wenn ich das richtig sehe, ist der code ein python script. Irgendwie schaffe ich es nicht den code auf Libre Office Basic umzuschreiben. Ich selbe habe ein wenig programmierkenntnisse in freepascal aber das hilft mir auch nur beim nachvollziehen geschriebenen codes, nicht aber beim selber erstellen....
Re: Nach einem Feldbefehl suchen
Hallo
Das siehst du richtig, du musst es aber nicht übersetzen - es muss nur an die richtige Stelle kopiert werden damit es in allen Dokumenten zur Verfügung steht.
Weil ich gerade in der Nachbarschaft ein Script
mit eingebauter Installierfunktion gepostet habe bekommst du auch eins: Der SourceCode dazu:
Karolus
Das siehst du richtig, du musst es aber nicht übersetzen - es muss nur an die richtige Stelle kopiert werden damit es in allen Dokumenten zur Verfügung steht.
Weil ich gerade in der Nachbarschaft ein Script
mit eingebauter Installierfunktion gepostet habe bekommst du auch eins: Der SourceCode dazu:
Code: Alles auswählen
import uno
from os import path
try:
context = XSCRIPTCONTEXT
except:
pass
ctx = uno.getComponentContext()
servicemanager = ctx.ServiceManager
createUnoService = servicemanager.createInstance
file_access = createUnoService("com.sun.star.ucb.SimpleFileAccess")
pathsubstution = createUnoService("com.sun.star.util.PathSubstitution")
def install_me(*_):
"""
Funktion zum kopieren dieses eingebetteten Pythonscripts
ins den .userconfig_python_pfad"""
pythonfolder = pathsubstution.substituteVariables('$(user)/Scripts/python/',0)
filename = path.basename(__file__)
if not file_access.isFolder( pythonfolder):
file_access.createFolder(pythonfolder)
file_access.copy(__file__, path.join( pythonfolder, filename))
def fieldsreplace():
doc = context.getDocument()
textfields = doc.getTextFields()
for field in iterable( textfields):
s = field.Anchor.getString()
if s.startswith('Feldbefehl_LO'):
field.Anchor.setString( '<!{}!>'.format( s ) )
def iterable( enumerable ):
enum = enumerable.createEnumeration()
while enum.hasMoreElements():
yield enum.nextElement()
LO7.4.7.5 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO24.8.0.3 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO24.8.0.3 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:
Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.