Formatierungen im Word-Dokument als Plain Text mit HTML Tags?

saintpauli

saintpauli

Mitglied
Thread Starter
Dabei seit
19.02.2008
Beiträge
87
Reaktionspunkte
2
Servus.
Ich pflege ab und zu ein CMS Redaktionssystem.

Die Ausgangsdokumente erhalte ich in Word. Hier werden Formatierungen wie
Fett, Kursiv und Liste benutzt, die entsprechend im CMS mit übernommen werden sollen.

Derzeit muss ich den Text in das CMS kopieren und manuell die Formatierungen einfügen.
Also als Beispiel Ich bin eine Überschrift wird zu <b>Ich bin eine Überschrift</b>

Gibt es eine Möglichkeit diese "einfachen" Formatierungen <b>, <i>,<li> zu automatisieren und Formatierungen mit HTML Tags automatisch zu ersetzen?
Entweder über Word (Macros?) oder gerne einem dritten Programm?

Word speichert zwar das ganze auch als HTML, aber das ist schon wieder mit irgendwelchen Class, Tables, usw, die ich gar nicht brauche. Das ist mir schon wieder viel zu viel.

Danke für eure Hilfe und Hinweise
 
Du könntest das word Dokument in Open Office öffnen und dann als HTML speichern.
Open Office verwendet zwar auch styles, aber es erzeugt ein viel übersichtlicheres html als Word, d.h. du hast es erheblich schneller aufgräumt.
 
Du könntest das word Dokument in Open Office öffnen und dann als HTML speichern.
Open Office verwendet zwar auch styles, aber es erzeugt ein viel übersichtlicheres html als Word, d.h. du hast es erheblich schneller aufgräumt.

Naja...ob ich nun manuell die Tags hinzufüge oder überflüssigen Code entferne. Zeitlich wird sich das nicht viel geben. Und mir geht es ja um "Automatisierung" und damit Zeiterparnis...:p

Vielleicht noch mal zur Verdeutlichung. Ich brauche keine HTML Seite.
Also kein Header, tables, etc. selbst <br> sind nicht nötig.

Das Endresultat ist einfach nur der Fließtext. Hier noch mal ein Beispiel.
<b>Das ist die Überschrift</b>
Und da gibt es normalen Text, aber auch mal <i>kursiven</i> oder <u> unterstrichenen</u> und ab und an auch mal
<li>Listen</li>

P.S. Im Notfall nehme ich auch eine PC Lösung, da das CMS nur im IE auf'n PC funktioniert (*kopfschüttel*) und ich das ganze unter Parallels bearbeite.
 
aus einem "sauberen" HTML kann man z.B. mit einer xsl Transformation den von dir gewünschten Textbaustein erzeugen.
Damit wäre es dann automatisiert.
Man kann natürlich auch ein Perl Programm schreiben und mit entsprechenden regulären Ausdrücken alles "suchen und ersetzen".
Beide Techniken setzen voraus, dass entweder deine Transformationsbeschreibung irre flexibel ist oder der Ausgangscode immer recht ähnlich formatiert ist.
 
Zuletzt bearbeitet:
aus einem "sauberen" HTML kann man z.B. mit einer xsl Transformation den von dir gewünschten Textbaustein erzeugen.
Damit wäre es dann automatisiert.
Man kann natürlich auch ein Per Programm schreiben und mit entsprechenden regulären Ausdrücken alles "suchen und ersetzen".
Beide Techniken setzen voraus, dass entweder deine Transformationsbeschreibung irre flexibel ist oder der Ausgangscode immer recht ähnlich formatiert ist.

Was ist eine XSL Transformation und mit welchem Programm erzeugt man den? "Sauberes" HTML wäre dann zunächst über OpenOffice zu erstellen?

Programmieren kann ich leider nicht. Also wäre ich selbst bei einem Word Makro auf Hilfe angewiesen. Suchen und Ersetzen funktioniert im klassischen Sinn nicht, da das formatierte Wort ja nicht ersetzt werden soll, sondern davor und dahinter ein Tag gesetzt werden muss.

Der Ausgangscode ist immer ein Worddokument und am Ende ist der Text so wie in dem Beispiel. Kein Codeschnipsel mehr aber auch nicht weniger... ;)
 
Hallo,

habe hier gerade nur Word für Windows, aber Du könntest das Dokument als "nur Text" speichern.
Wobei die Ideen von rueruka praktischer sind, erfordern zwar einmal mehr Arbeit doch könntest Du das Skript dann universell einsetzen.

Viele Grüße
 
Nur mal eine Idee auf die Schnelle: Mach Dir ein Makro für jeden Fall, also fett, kursiv, unterstrichen - und lege die Makros auf eine Aktionsleiste

Makro fett:

strtext = Selection.Text
strtext = "<b>" + strtext + "</b>"
Selection.Text = strtext

Du markierst den Text und klickst auf eines der Makros. Im genannten Beispiel wird der markierte Text vorne um "<b>" und hinten um "</b>" ergänzt. Für underline, kursiv etc. entsprechend den Makrotext ändern.

Grüße,
Ralph
 
Die gesuchte Konvertierung erschien mir nicht gerade außergewöhnlich, sodass es im Netz sicher einige fertige Lösungen geben sollte. Hier ist beispielsweise eine Lösung als VBA-Makro.

An deine Anforderungen angepasst:
Code:
Sub Word2Wiki()
    Application.ScreenUpdating = False
    ConvertItalic
    ConvertBold
    ConvertUnderline
    ConvertLists
    ' Copy to clipboard
    ActiveDocument.Content.Copy
    Application.ScreenUpdating = True
End Sub
Private Sub ConvertBold()
    ActiveDocument.Select
    With Selection.Find
        .ClearFormatting
        .Font.Bold = True
        .Text = ""
        .Format = True
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
        .Forward = True
        .Wrap = wdFindContinue
        Do While .Execute
            With Selection
                If InStr(1, .Text, vbCr) Then
                    ' Just process the chunk before any newline characters
                    ' We'll pick-up the rest with the next search
              .Font.Bold = False
                    .Collapse
                    .MoveEndUntil vbCr
                End If
                ' Don't bother to markup newline characters (prevents a loop, as well)
                If Not .Text = vbCr Then
                    .InsertBefore "<b>"
                    .InsertAfter "</b>"
                End If
                .Font.Bold = False
            End With
        Loop
    End With
End Sub
Private Sub ConvertItalic()
    ActiveDocument.Select
    With Selection.Find
        .ClearFormatting
        .Font.Italic = True
        .Text = ""
        .Format = True
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
        .Forward = True
        .Wrap = wdFindContinue
        Do While .Execute
            With Selection
                If InStr(1, .Text, vbCr) Then
                    ' Just process the chunk before any newline characters
                    ' We'll pick-up the rest with the next search
                    .Font.Italic = False
                    .Collapse
                    .MoveEndUntil vbCr
                End If
                ' Don't bother to markup newline characters (prevents a loop, as well)
                If Not .Text = vbCr Then
                    .InsertBefore "<i>"
                    .InsertAfter "</i>"
                End If
                .Font.Italic = False
            End With
        Loop
    End With
End Sub
Private Sub ConvertUnderline()
    ActiveDocument.Select
    With Selection.Find
        .ClearFormatting
        .Font.Underline = True
        .Text = ""
        .Format = True
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
        .Forward = True
        .Wrap = wdFindContinue
        Do While .Execute
            With Selection
                If InStr(1, .Text, vbCr) Then
                    ' Just process the chunk before any newline characters
                    ' We'll pick-up the rest with the next search
                    .Font.Underline = False
                    .Collapse
                    .MoveEndUntil vbCr
                End If
                ' Don't bother to markup newline characters (prevents a loop, as well)
                If Not .Text = vbCr Then
                    .InsertBefore "<u>"
                    .InsertAfter "</u>"
                End If
                .Font.Underline = False
            End With
        Loop
    End With
End Sub
 Private Sub ConvertLists()
   Dim para As Paragraph
    For Each para In ActiveDocument.ListParagraphs
        With para.Range
            .InsertBefore "<li>"
            .InsertAfter "</li>"
            .ListFormat.RemoveNumbers
        End With
    Next para
End Sub
 
Wow...vielen Dank für das editierte Makro.

Ich würde es ja gerne ausprobieren. Aber mit Alt+F11 erhalte ich nur die Ton-Systemeinstellungen. Auch den Haken bei den Tastatureinstellungen "Die Tasten F1, F2 als Standard-Funktionstasten verwenden" hat keinen Erfolg (es passiert nix). :confused:

Ich verwende Word 2008 und die Apple USB Tastatur.
 
Die Beschreibung auf der Seite gilt für Word unter Windows. Aber die Makro-Geschichte ist sowieso hinfällig geworden, da du Word 2008 benutzt, dem Microsoft die VBA-Fähigkeiten nicht auf seinen Lebensweg mitgab.
 
Das ist ja schade. Gibt es dafür eine Begründung von Microsoft?

Gibt es denn ein Alternativprogramm zu Word mit VBA-Fähigkeiten?
(Ich suche also kein Schreibprogramm, sondern nur etwas was dieses Makro in dem Dokument ausführt)

Es reicht ja aus den Text aus Word per Copy+Paste irgendwo in ein Dokument zu kopieren, das Makro auszuführen und dann von da aus ins CMS zu kopieren.
 
Google doch mal nach "Word2html" oder "word to html". Ich habe vor Jahren mal ein UNIX-Tool auf dem Webserver benutzt, dass über Datei-Upload funktionierte - weiß leider nicht mehr wie es heißt, vielleicht gibts aber mittlerweile auch was besseres.
 
Zurück
Oben Unten