Ich habe 4000 Datensätze in meiner Wissensdatenbank, fast alle im Word-Format. Viele sind auf unsere voreingestellten Stile formatiert, von denen es etwa 20 gibt. Jetzt implementieren wir neue Stilnamen :(und ich möchte ein Makro schreiben, um Stapel von Sätzen zu betrachten, ändere 'Stil A' zu 'Neuer Stil A' ',' Style B 'zu' New Style B 'etc. Ich kann das tun, aber ich möchte fragen, wie der aktuelle Style-Name eines Absatzes einer unserer 20 voreingestellten Styles ist. Wenn ein Stilname ein Standard-Word-Stil oder ein Stil ist, der von woanders bezogen wird, möchte ich etwas anderes als das Konvertieren in einen neuen Stil tun. Vielen Dank!Prüfen von Stilnamen in Word anhand einer Liste erlaubter Stile
Antwort
Um den Stilnamen eines ausgewählten Absatzes zu finden, verwenden Sie :
Selection.ParagraphFormat.Style.NameLocal ' or Name
auf einem integrierten Stil, den Einsatz umgehen:
ActiveDocument.Styles(wdStyleNormal)
mit wdStyleNormal
einen eingebauten in Word konstant, von denen es viele für alle (die meisten) sind der Standard-Stile. Sie können einen Style-Namen verwenden, um an einem Ihrer eigenen (nicht integrierten) Styles zu arbeiten. Lookup Styles
in Hilfe für Details.
Das folgende Makro Ich verteile verwendet (Kopie) Stile aus einer vorbereiteten Vorlage auf die Vorlage Normal Benutzer:
Sub CopyStyles()
Dim n, src, dst
'
On Error Resume Next
src = ActiveDocument.AttachedTemplate.FullName
dst = NormalTemplate.FullName
'
' Copy styles
'
n = ActiveDocument.Styles(wdStyleNormal).ParagraphFormat.SpaceBefore
ActiveDocument.Styles(wdStyleNormal).ParagraphFormat.SpaceBefore = 0
Application.OrganizerCopy Source:=src, Destination:=dst, Object:=wdOrganizerObjectStyles, Name:=ActiveDocument.Styles(wdStyleNormal).NameLocal
ActiveDocument.Styles(wdStyleNormal).ParagraphFormat.SpaceBefore = n
Application.OrganizerCopy Source:=src, Destination:=dst, Object:=wdOrganizerObjectStyles, Name:=ActiveDocument.Styles(wdStyleHeading1).NameLocal
Application.OrganizerCopy Source:=src, Destination:=dst, Object:=wdOrganizerObjectStyles, Name:=ActiveDocument.Styles(wdStyleHeading2).NameLocal
Application.OrganizerCopy Source:=src, Destination:=dst, Object:=wdOrganizerObjectStyles, Name:=ActiveDocument.Styles(wdStyleHeading3).NameLocal
Application.OrganizerCopy Source:=src, Destination:=dst, Object:=wdOrganizerObjectStyles, Name:=ActiveDocument.Styles(wdStyleHeading4).NameLocal
Application.OrganizerCopy Source:=src, Destination:=dst, Object:=wdOrganizerObjectStyles, Name:=ActiveDocument.Styles(wdStyleHeading5).NameLocal
Application.OrganizerCopy Source:=src, Destination:=dst, Object:=wdOrganizerObjectStyles, Name:=ActiveDocument.Styles(wdStyleHeading6).NameLocal
Application.OrganizerCopy Source:=src, Destination:=dst, Object:=wdOrganizerObjectStyles, Name:=ActiveDocument.Styles(wdStyleTOC1).NameLocal
Application.OrganizerCopy Source:=src, Destination:=dst, Object:=wdOrganizerObjectStyles, Name:=ActiveDocument.Styles(wdStyleTOC2).NameLocal
Application.OrganizerCopy Source:=src, Destination:=dst, Object:=wdOrganizerObjectStyles, Name:=ActiveDocument.Styles(wdStyleTOC3).NameLocal
Application.OrganizerCopy Source:=src, Destination:=dst, Object:=wdOrganizerObjectStyles, Name:=ActiveDocument.Styles(wdStyleTOC4).NameLocal
Application.OrganizerCopy Source:=src, Destination:=dst, Object:=wdOrganizerObjectStyles, Name:=ActiveDocument.Styles(wdStyleTOC5).NameLocal
Application.OrganizerCopy Source:=src, Destination:=dst, Object:=wdOrganizerObjectStyles, Name:=ActiveDocument.Styles(wdStyleTOC6).NameLocal
End Sub
Danke @Paul. Mein Makro lädt den Punkt, der die neuen Stile enthält, und die Stiländerungen funktionieren OK. Aber was ich tun möchte, ist jeden Absatz zu befragen und zu sehen, ob sein Stil einer meiner oder einer eingebauten ist. So ähnlich wie in Excel. Ich denke, ich könnte 'if old_para_style = my_style_1 oder old_para_style = my_style_2 ... ... ... my_style_20' codieren, aber das ist nicht sehr elegant und würde wahrscheinlich lange dauern. Gibt es einen eleganteren Weg? – hmm
Sie können einen 'Select-Fall old_para_style \ Case my_style1 .... \ Case Default: .... \ End Select' wählen. Dadurch kann VB den Zeichenfolgenabgleich optimieren. –
Danke @Paul - Ich werde es versuchen – hmm
Vielleicht verstand ich Ihre Frage falsch. Hier sind ein paar Beispiele, die vielleicht mehr in Richtung ist, was man sucht:
Sub test()
Dim para As Paragraph
' rename a style of the document
'
On Error GoTo lbl_NoSuchStyle
ActiveDocument.Styles("TestStyle1").NameLocal = "TestStyle2"
On Error GoTo 0
lbl_NoSuchStyle:
'
' Check styles of all paragraphs
'
For Each para In ActiveDocument.Paragraphs
Select Case para.Format.Style.NameLocal
Case "Req"
Debug.Print "Isa Req"
Case "TestStyle2"
para.Style = wdStyleHeading3 ' change style to another style
Case Else
Debug.Print "Unknown Style"
End Select
Next para
End Sub
Danke @Paul I up-arrowed eine deiner Antworten, aber nicht öffentlich angezeigt, da ich zu wenige Beiträge habe .. – hmm
- 1. Holen Sie sich die Liste der Stile von Word-Datei
- 2. Inline benutzerdefinierte Stile in Microsoft Word
- 3. Abrufen von Wörterbuchelementen anhand einer Liste oder Prioritätsschlüssel
- 4. Liste Stile nicht angezeigt
- 5. CKEditor Stile Liste Styling
- 6. Eine Word-Seriendruck-Datenquelle programmgesteuert prüfen
- 7. Maximal erlaubter Parameter für Kreditkartenfeld
- 8. Autoinkrement-Liste in Word 2016
- 9. Suchen (und ersetzen) Stile in Word mit C#
- 10. Gibt es eine Möglichkeit, ein Zeichen anhand einer Liste von Zeichenfolgen zu prüfen, ohne eine lange Kette von ODER-Operatoren zu schreiben?
- 11. Holen Sie sich alle Stile in Office 365 Word-Dokument
- 12. MS Access - Suche nach Schlüsselwörtern anhand einer Liste von Schlüsselwörtern in einer anderen Tabelle
- 13. Tabellenzeile anhand des Wertes der Eingabesuche prüfen SAPUI5
- 14. Filter Dokumente anhand einer Bedingung
- 15. CSS-Äquivalent einer nummerierten Liste von Microsoft Word
- 16. Druckwerte aus der Liste anhand von separater Textdatei
- 17. Microsoft Word VBA-Makro - Ein Absatz Suchen-Ersetzen-Stile
- 18. Wie kann ich anhand einer Liste von Strings überprüfen, ob diese Strings in einer Liste enthalten sind?
- 19. IP prüfen Via Liste
- 20. Separate Layout-Stile von Thema Stile
- 21. prüfen gleiches Objekt ist bereits in einer Liste
- 22. Split String anhand einer Zeichenkette in F #
- 23. prüfen, ob ein bestimmtes Kontrollkästchen in einer Checkbox-Liste
- 24. Summen in einer Tabelle anhand von Parametern in PHP
- 25. Word-Wrapping in ungeordneter Liste in HTML
- 26. Suchen Sie in einer Python-Liste nach Übereinstimmungen mit einer benutzerdefinierten Liste von Stammwörtern unterschiedlicher Länge.
- 27. C# eine Liste von einer anderen subtrahieren oder prüfen, ob eine Liste vollständig in einer anderen Liste enthalten ist
- 28. prüfen „Nicht in“ einer Liste Bedingung Angular 2 Vorlage
- 29. Prolog, prüfen, ob ein Paar Elemente in einer Liste erscheint
- 30. prüfen, ob ein Element in einer verschachtelten Liste ist
Wenn Sie nur neue Art _Namen_ Implementierung sind, dann warum Sie nicht nur die Stile im Dokument _rename_? –