Seite 1 von 1

Makro Basic Fehler -> bitte nach Programmierung verschieben

Verfasst: Do 5. Jun 2014, 12:10
von turner1984
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.

Re: Makro Basic Fehler

Verfasst: Do 5. Jun 2014, 14:20
von lorbass
Deine Frage gehört in den Bereich LibreOffice Programmierung.

Gruß
lorbass

Re: Makro Basic Fehler -> bitte nach Programmierung verschie

Verfasst: Fr 6. Jun 2014, 11:32
von turner1984
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?