Ein kleiner Abstecher…

…in die wunderliche Welt von Microsoft, genauer gesagt in die Welt von M$ Word. Ich hab mir heute unter größten Suchanstrengungen zwei Makros zusammengefummelt, die mir zukünftig die Arbeit sehr erleichtern werden und da ich bei meiner Suche im Internet keinerlei Makros mit dieser Funktionalität finden konnte, dacht ich mir, ich poste sie mal hier.

1. Da die meisten Portale und Foren keine HTML Tags akzeptieren und auch kein TinyMCE haben, sondern mit vorgefertigten Tags arbeiten, brauchte ich ein Makro, das mir kursiven und fettgedruckten Text sucht und in die entsprechenden Tags schreibt. Aus „ein Text mit kursiver und fetter Schrift“ sollte am Ende „ein Text mit [i]kursiver[/i] und [b]fetter[/b] Schrift“ werden (die Tags mit den eckigen Klammern werden beim Animexx verwendet, kann man dann aber beliebig für seine Zwecke ändern). Das Makro sieht dann so aus:

Sub kursiv_bold_ersetzen()
'
' kursiv_bold_ersetzen Makro
' Makro aufgezeichnet am 01.02.2008 von Salieri
'
    Selection.Find.ClearFormatting
    Selection.Find.Font.Italic = True
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find
    .Text = ""
    .Replacement.Text = "[i]^&[/i]"
    .Forward = True
    .Wrap = wdFindContinue
    .Format = True
    .MatchCase = False
    .MatchWholeWord = False
    .MatchWildcards = False
    .MatchSoundsLike = False
    .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
    Selection.Find.ClearFormatting
    Selection.Find.Font.Bold = True
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find
        .Text = ""
        .Replacement.Text = "[b]^&[/b]"
        .Forward = True
        .Wrap = wdFindContinue
        .Format = True
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
End Sub

Ich habe keinerlei Ahnung von Word Makros, mag also sein dass diverse Dinge, die Word mir da reinschreibt, überflüssig sind. Ich weiß nich mal, was für ne Programmiersprache das ist. Wichtig ist aber, dass es funktioniert. Selection.Find.Font.Italic = True gibt die Formatierung an und .Replacement.Text = „[b]^&[/b]“ die Art, wie die Ergebnisse verarbeitet werden. Das ^& ist wohl in dem Fall der entsprechende Platzhalter. Es geht, aber ganz verstanden hab ich das System dahinter noch nicht. Denn im nächsten Beispiel sieht der Platzhalter anders aus:

2. Da diese Tags überall unterschiedlich sind, hab ich mir auch gleich ein Makro geschrieben, um das ganze Dokument von einem Tagsystem ins andere überführen zu können. In meinem Beispiel überführe ich einen für Fanfiktion.de formatierten Text in einen Animexx konformen Text. Im FFde sind kursive Texte mit [style type=“italic“]text[/style] markiert, fettgedruckte mit [style type=“bold“]text[/style]. Da das schließende Tag jeweils gleich ist, war’s mit einer einfachen Ersetzung nicht getan, also mussten Platzhalter für die Suche her und das Ergebnis sieht so aus:

Sub ffde_nach_animexx()
'
' ffde_nach_animexx Makro
' Makro aufgezeichnet am 01.02.2008 von Salieri
'
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find
        .Text = "\[style type=""bold""\](*)\[/style\]"
        .Replacement.Text = "[b]\1[/b]"
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchAllWordForms = False
        .MatchSoundsLike = False
        .MatchWildcards = True
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
    With Selection.Find
        .Text = "\[style type=""italic""\](*)\[/style\]"
        .Replacement.Text = "[i]\1[/i]"
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchAllWordForms = False
        .MatchSoundsLike = False
        .MatchWildcards = True
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
End Sub

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.