PDA

Vollständige Version anzeigen : Umstellen von Formatvorlagen auf harte Formatierung


Einbayer
12.06.2008, 08:34
Hallo zusammen,

ich habe folgendes Problem: Ich erstelle einen Beitrag für ein Sammelband. Die Vorgaben vom Verlag (nach Rückfrage anscheinend nicht verhandelbar) sehen vor, dass im Ergebnis alle Formatierungen mit harter Formatierung erfolgen sollen. Das bedeutet, dass weder ein Inhaltsverzeichnis als Feld, noch überhaupt Überschriften als Formatvorlagen verwendet werden dürfen. Alles muss als "Standard" mit +fett (etc.) formatiert werden und händisch nummeriert werden.

Nun kann ich das für die laufende Arbeit nicht akzeptieren und arbeite zunächst mit funktionierende Überschriften, einem IHV-Feld (inkl. IHV-Formatvorlagen), Querverweisen etc.

Ich bin mir sicher, dass es immer noch einfacher ist, das Ganze am Ende händisch umzustellen. Meine Hoffnung ist aber, dass das auch irgendwie automatisch geht und ich wäre für jede Idee dankbar.

Beispiel:
A. Überschrift 1
I. Überschrift 2

--> Das sind die Formatvorlagen mit automatischer Gliederungsnummerierung und die müssen jetzt in Standard und fett formatiert werden und die Nummer (A. bzw. I.) muss stehen bleiben. Im Ergebnis muss das Aussehen und die Gliederungsnummer der Überschrift bestehen bleiben.

Vielen Dank im Voraus
Einbayer

(P.S. Ich hab "Frage" ausgewählt, weil es mir im Ergebnis egal ist, von Word 2002/XP über 2003 bis (ungern) 2007 hätte ich auf verschiedenen Rechnern alles zur Verfügung, hauptsächlich schreibe ich in 2002/XP)

PapaSchlumpf
12.06.2008, 09:00
mh,
schweres und unverständliches Unterfangen des Verlags.
Evtl. akzeptieren die ja auch ein PDF?

Probier mal die Datei in Wordpad zu öffnen und dort als RTF zu speichern.
Evtl. gehen dann die FV flöten.

Viel Erfolg
PS

C-J
12.06.2008, 09:00
Hallo,
hiermit kannst Du wenigstens schon mal alle automatischen Nummerierungen und Listen etc. in echten Text verwandeln.

Public Sub convert_Listen_in_Text()
Application.StatusBar = "konvertiere automatische Listenpunkte in echten Text"
ActiveDocument.ConvertNumbersToText
MsgBox ("Fertig")
End Sub

Ich kenne diese Problematik mit den "harten" Formatierungen auch, nehme mal an die wollen das so haben, weil sie die Daten in anderen Systemen weiterverarbeiten wollen ...

Gruß, Christoph

NACHTRAG: Falls die Überschriften hinterher "eingetaggt" werden sollen (für XML oder ähnliches), dann habe ich da was für dich ....


2. NACHTRAG: hiermit werden alle Absätze mit dem Namen der Formatvorlage eingetaggt. Wenn man das zuerst macht, (fett und kursiv sollte auch noch eingetaggt werden. Da habe ich bei Bedarf auch noch was) und anschließend alles auf Standard setzt, kann man hinterher mit Suchen/Ersetzen die eingetaggten Absätze hart formatieren.

C-J
12.06.2008, 09:21
hier der 2. Code ..

Private Sub Styles()
Application.StatusBar = "Erzeuge Styles"
Dim absatz As Paragraph
Dim Teil As Range
For Each absatz In ActiveDocument.Paragraphs
Set Teil = absatz.Range
If Teil.Tables.Count <> 1 Then
Teil.InsertBefore "<" + absatz.Style + ">"
Teil.End = Teil.End - 1
Teil.InsertAfter "</" + absatz.Style + ">"
End If
Next
End Sub


Gruß, Christoph

NACHTRAG: Warum lässt sich der code nicht richtig einfügen ?????


Private Sub Styles()
Application.StatusBar = "Erzeuge Styles"
Dim absatz As Paragraph
Dim Teil As Range
For Each absatz In ActiveDocument.Paragraphs
Set Teil = absatz.Range
If Teil.Tables.Count <> 1 Then
Teil.InsertBefore "<" + absatz.Style + ">"
Teil.End = Teil.End - 1
Teil.InsertAfter "</" + absatz.Style + ">"
End If
Next
End Sub

Einbayer
12.06.2008, 15:04
OK, vielen Dank derweil.

Ich probiere die Ansätze mal aus, wenn ich mal etwas an Text probiert habe. Sieht aber ja schon mal ganz vielversprechend aus.

PDF nehmen die nicht.

Weitere Ideen immer willkommen.

Vielen Dank und viele Grüße
Einbayer

Schreibbüro
12.06.2008, 20:02
Hallo Einbayer,

mir fällt dazu noch ein: Um die Feldfunktionen und Verweise aufzulösen: Die ganze Arbeit mit Strg A markieren und mit Strg 6 alle Feldfunktionen durch ihr Ergebnis ersetzen lassen.

Zum Auflösen der Nummerierungen habe ich mal das hier gebaut. Natürlich zuerst in einer Kopie ausprobieren:

Automatische Gliederungen und nummerierte Listen in normalen Text umwandeln (http://www.schreibbuero-richter.de/vba/nummerierte_listen.html)

Die Gliederungen und Nummerierungen werden aufgelöst und die Nummern auch aus der Formatvorlage entfernt.

Gruß
Lisa

C-J
13.06.2008, 06:42
Hallo,
ich habe nochmal darüber nachgedacht ... Mein Lösungsansatz hängt stark von der Anzahl der tatsächlich verwendeten Formatvorlagen im Dokument ab.
Überspitzt ausgedrückt heißt das, wenn du nur 3 Formatvorlagen insgesamt verwendet hast, dann würde ich beim späteren Suchen/Ersetzten alle Parameter (Typo, Abstände etc.) von Hand eintragen.
Wenn Du allerdings 50 und mehr Formatvorlagen verwendet hast, würde ich eine Schleifenfunktion basteln, die eine Tabelle mit sämtlichen verwendeten Formatvorlagen inkl. aller Parameter generiert.
Diese Tabelle rüber ins Excel ...

Wenn Du mit meinem obigen Code alle Absätze mit dem Namen der verwendeten Formatvorlage "eingetaggt" hast (und dann anschließend alles auf "Standard" setzt, wo bei meinem Test hier sogar "fett" und "kursiv" erhalten blieb) kannst Du eine weitere Suchen/Ersetzten-Funktion schreiben, die alles in "hart" formatierten Text verwandelt und sich die nötigen Parameter aus der Exceltabelle zieht.

Ich weis nicht wie fit du im Programmieren bist, ich kann es nicht. :)
Aber es wäre bestimmt eine Lösung mit der Du für die Zukunft gerüstet bist ...

Gruß, Christoph


NACHTRAG: Ich sehe gerade, dass der ver****te Code zum eintaggen der Absätze beim 3. Versuch immer noch nicht richtig gepasted wurde. NICHT ZU FASSEN!!!

C-J
13.06.2008, 06:57
Jetzt aber !!!
Private Sub Styles()
Application.StatusBar = "Erzeuge Styles"
Dim absatz As Paragraph
Dim Teil As Range
For Each absatz In ActiveDocument.Paragraphs
Set Teil = absatz.Range
If Teil.Tables.Count <> 1 Then
Teil.InsertBefore "<" + absatz.Style + ">"
Teil.End = Teil.End - 1
Teil.InsertAfter "</" + absatz.Style + ">"
End If
Next
End Sub

Einbayer
17.06.2008, 08:50
Hallo Lisa, Christoph

vielen Dank für die Hinweise. Ich bin leider die Tage nicht dazu gekommen, mal das Dokument mit Text zu unterfüttern. Ich hab mir beides mal notiert und komme gelegentlich darauf zurück.

Sollten nicht allzu viele Formatvorlagen werden (<10 ohne Überschriften), sodass das Hauptproblem die Überschriften sind, die Formatvorlagen Suchen&Ersetzen geht dann ohne Schleife (aber ggf. mit Praktikant ;))

Viele Grüße
Einbayer

Einbayer
18.06.2008, 13:01
So, nochmal ich.

Der Weg von PS geht schon mal ganz gut. Es macht zwar mehr kaputt, als nötig (u.a. werden Abschnittswechsel zerstört, die es braucht, da ich an manchen Stellen zwei-spaltig schreiben muss) und das IHV wird zu links. Außerdem werden Abbildungen irgendwie anders (sind als EMF eingefügt, sehen danach leicht verändert aus, kann es nicht genau festmachen).

An sich aber auf jeden Fall schon gangbar.


Zum anderen Weg: Das Umstellen der Überschriften geht gut, der zweite Teil des Makros funktioniert bei mir nicht (Syntaxfehler beim Kompilieren). Ich bin net gut genug in VBA, um den Fehler zu kapieren. D.h. ich komme mit einem nur als Text nummerierten Dokument raus, die Formatvorlage lautet aber noch "Überschrift 1".

Viele Grüße
Einbayer

C-J
18.06.2008, 13:28
Hallo,
nimm den Code aus meinem Beitrag #8 ...
Der Code oben wurde nicht richtig eingefügt, weil der Browser anfängt den Code zu interpretieren.
Darum habe ich es nochmal als "HTML-Code" eingefügt.

nochmal zur Erklärung:
Das Makro schreibt an jedem Absatzanfang und -ende ein "Tag" mit dem Namen der Formatvorlage...

Aus "A. Überschriftentext" wird dann z. B.
<Überschrift 1>A. Überschriftentext</Überschrift 1>

Anschließend kann das ganze Dokument manuell auf "Standard" gesetzt werden.

Jetzt kann man mit Suchen/Ersetzen z.B. alle Texte, die vorher die Formatvorlage "Überschrift 1" hatten, wieder "zurückformatieren" (harte Formatierung)

z. B. so:

MUSTERVERGLEICH AKTIVIEREN!

Suchzeile:
(\<Überschrift 1\>)(*)(\</Überschrift 1\>)

Ersetzenzeile:
\2

... dann bei Format alle nötigen Einstellungen vornehmen und alle ersetzen :)
Übrig bleibt der fertig formatierte Text.

Gruß, Christoph

C-J
18.06.2008, 16:56
Hallo Einbayer,
ich muss mich bei Dir um ein vielfaches entschuldigen!

Es ist so, dass ich den Code den ich hier im Forum nun schon drei mal!! auf verschiedenste Arten und Weisen gepostet habe, selber einmal hier aus dem Forum kopiert habe und beim Test feststellen musste, dass er wirklich einen Syntaxfehler meldet.
Das tut mir überaus leid! Aber ich kann ja eigentlich gar nichts dafür.

Nun ist es mir also beim vierten Anlauf gelungen den VBA Code, "getarnt" als PHP Code, :rolleyes: (Muss man sich mal vorstellen ..) funktionstüchtig ins Forum zu kopieren.

Voila!

Sub Styles()
Application.StatusBar = "Erzeuge Styles"
Dim absatz As Paragraph
Dim Teil As Range
For Each absatz In ActiveDocument.Paragraphs
Set Teil = absatz.Range
If Teil.Tables.Count <> 1 Then
Teil.InsertBefore "<" + absatz.Style + ">"
Teil.End = Teil.End - 1
Teil.InsertAfter "</" + absatz.Style + ">"
End If
Next
End Sub

Ich möchte mal wissen wieso die anderen Filter solche komischen Effekte ausgelöst haben??

Gruß, Christoph

peppi
18.06.2008, 17:02
Hallo Christoph,

also ich habe mit vba-Code hier noch nie Probleme gehabt. Du benutzt aber die spitzen Klammern, und damit kann es schon mal zu Problemen kommen, da das für öffnene und schließende Tags steht... Da muß man dann ein wenig tricksen, oder aber den Code-Converter benutzen, den man hier im Forum downloaden kann ;)...