❤️ Helfen Sie noch heute, unser LibreOffice Forum zu erhalten! ❤️
Unterstützen Sie das LibreOffice-Forum und helfen Sie uns, unser Ziel für 2025 zu erreichen!

🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱


❤️ DANKE >> << DANKE ❤️

>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

Makro Basic Fehler -> bitte nach Programmierung verschieben

WRITER hat alles, was Sie von einer modernen, voll ausgestatteten Textverarbeitung erwarten.
Antworten
turner1984
Beiträge: 2
Registriert: Do 5. Jun 2014, 11:49

Makro Basic Fehler -> bitte nach Programmierung verschieben

Beitrag von turner1984 » Do 5. Jun 2014, 12:10

Hallo, ich noob habe mir einen Makro - Code gekapert, um meine ODT Ausgabe von meinem Server von html zu befreien, leider gibt mir das Script einen Fehler aus. Hoffe das einer von Ihnen,kurz sagen kann was ich da falsch gemacht habe.
Wie gesagt ist gekapert :oops: und ich verstehe davon nicht so viel, lese mir gerade was dazu durch. Aber hilft mir bisher nicht weiter. ----> Damit der Kontext nicht fehlt, warum mache ich das überhaupt?
Es geht um die ODT Ausgabe von Dolibarr, einem Opensource CRM- und ERP System, das leider beim Erstellen von odt Dokumenten nach Vorlage aus der Datenbank immer statt ü &uuml etc. und <br /> reinschreibt. :evil: Also wenn diese Lösung klappt, würde es nicht nur mir helfen, sondern auch Dolibarr für Startups und Freelancer extrem vereinfachen. Vielen Dank.

Code: Alles auswählen

'Attribute VB_Name = "modUmlauteErsetzen"
Sub UmlauteErsetzen()
  'Erweitern Sie das folgende Array, wenn
  'weitere Buchstaben ersetzt werden sollen
  Dim sSuchtext(8) As String
  Dim sErsetzen(8) As String
  '
  sSuchtext(1) = "&Auml;"
  sErsetzen(1) = "Ä"
  sSuchtext(2) = "&auml;"
  sErsetzen(2) = "ä"
  sSuchtext(3) = "&Ouml;"
  sErsetzen(3) = "Ö"
  sSuchtext(4) = "&ouml;"
  sErsetzen(4) = "ö"
  sSuchtext(5) = "&Uuml;"
  sErsetzen(5) = "Ü"
  sSuchtext(6) = "&uuml"
  sErsetzen(6) = "ü"
  sSuchtext(7) = "&szlig;"
  sErsetzen(7) = "ß"
  sSuchtext(8) = "<br />"
  sErsetzen(8) = " "
  '
  For i = 1 To 8
    Selection.Find.ClearFormatting <-- hier gibt er den Fehler aus: BASIC-Laufzeitfehler. Objektvariable nicht belegt.
    Selection.Find.Replacement.ClearFormatting
    '
    With Selection.Find
      .Text = sSuchtext(i)
      .Replacement.Text = sErsetzen(i)
      .Forward = True
      .Wrap = wdFindContinue
      .Format = False
      .MatchCase = True
      .MatchWholeWord = False
      .MatchWildcards = False
      .MatchSoundsLike = False
      .MatchAllWordForms = False
    End With
    '
    Selection.Find.Execute Replace:=wdReplaceAll
  Next i
End Sub
Vielen Dank für sachdienliche Hinweise.

geändert am 05.06.2014
Sorry, dass ich mich falsch eingeordnet habe. Danke für den Hinweis. Lieber Admin bitte verschieb mich in die Programmierung. Danke.
Zuletzt geändert von turner1984 am Fr 6. Jun 2014, 10:51, insgesamt 2-mal geändert.

Benutzeravatar
lorbass
* LO-Experte *
Beiträge: 627
Registriert: Mo 25. Apr 2011, 18:17

Re: Makro Basic Fehler

Beitrag von lorbass » Do 5. Jun 2014, 14:20

Deine Frage gehört in den Bereich LibreOffice Programmierung.

Gruß
lorbass

turner1984
Beiträge: 2
Registriert: Do 5. Jun 2014, 11:49

Re: Makro Basic Fehler -> bitte nach Programmierung verschie

Beitrag von turner1984 » Fr 6. Jun 2014, 11:32

Habe selber die Lösung gefunden

Sub sonderzeichenaustauschen
doc = thisComponent

repl = doc.createReplaceDescriptor()

repl.SearchAll = True
repl.SearchCaseSensitive = True
repl.SearchRegularExpression = False
repl.SearchStyles = False
repl.SearchWords = False

searchchars = array( "&Auml;","&auml;","&Uuml;","&uuml;","&Ouml;","&ouml;","<br />" ) ' hier musst du deine Sonderzeichen eintragen
replacechars = array( "Ä","ä","Ü","ü ","Ö","ö"," " ) 'und hier die Ersetzungen

for i = 0 to ubound( searchchars )
repl.SearchString = searchchars(i)
repl.ReplaceString = replacechars(i)
doc.replaceAll( repl )
next i


End Sub

Rockt.... nur leider führt er es headless nicht aus... weiß jmd. dazu antwort?


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.



Antworten