Das Problem
Word-Formatvorlagen -Kaskade . Out of the box, haben ein paar Stile keinen übergeordneten, aber die meisten sind auf einem anderen Stil basiert. In dem Objekt-Modell wird dies durch die gesteuert.BaseStyle
Eigentum. Eine der Regeln ist, dass eine Art nur auf einer anderen Art des gleichen Typs basieren. So kann ein Charakter Stil nur auf einem anderen Charakter Stil basieren. Eine Tabelle Stil kann nur auf einem anderen Tisch Stil basieren. Und so weiter.
Abfragen des
.BaseStyle
eines Style routinemäßig kehrt Unsinn. Öffnen Sie ein Dokument und versuchen Sie so etwas wie dieses: Sub TestBaseStyles () Dim sty Wie Word.Style For Each sty In ActiveDocument.Styles "In einem sauberen Dokument, produziert dieser Unsinn Debug.Print sty.NameLocal, sty.BaseStyle Weiter sty End Sub
Sofern Ihr
Style
Objekt "grundiert" wurde in gewisser Weise das Lesen der .BaseStyle
Anwesen produziert ungemilderte Unsinn: - Word 2003 berichtet, dass die meisten Arten auf Normal-Stil basieren. Klar Zeichenformate, Tabellen-und Listenstile nicht auf normalen beruhen, da es ein Absatzformat ist.
- Word 2007 und Word 2010 scheint eine zufällige Stil wie der Bericht
.BaseStyle
. Tabelle Stile könnte sagen, sie sind auf den Charakter Stilen. Zeichenformate könnte sagen, sie sind auf Absatz Stilen.
Workaround
Der beste Weg, fand ich, dies zu umgehen habe, ist das Lesen.Description
Eigenschaft vor dem Lesen der .BaseStyle
Eigentum. Dies irgendwie "Primzahlen" die Style-Objekt und danach die berichten .BaseStyle
genau. So etwas wie dieses funktioniert sehr gut:
Sub TestBaseStyles () Dim sty Wie Word.Style For Each sty In ActiveDocument.Styles Debug.Print sty.NameLocal, sty.Description, sty.BaseStyle Weiter sty End SubSie haben noch an den Ausgang
.Description
in keiner Weise. Nur Lesen und Zuweisen einer Variablen tun wird. Something like this: Sub DoSomethingWithMyStyle () Dim sty Wie Word.Style Dim SBeschreibung als String For Each sty In ActiveDocument.Styles "" Prime "der Stil SBeschreibung = sty.Description "Jetzt können wir lesen. BaseStyle MsgBox sty.BaseStyle Weiter sty End SubEs gibt einige andere Eigenschaften von einem Stil, einen Stil in die Berichterstattung über die korrekte wird zu zwingen
.BaseStyle
.
Deshalb ist dieses Problem nicht sehr häufig angezeigt: Ihr Code
bereits eine der Eigenschaften, die den Stil niederlassen gelesen haben. Lesen der .Linked
Eigenschaft eines Absatzes Stil, zum Beispiel, ist genug, um zu erzwingen, Word die berichten .BaseStyle
genau. Der Vorteil der Verwendung der
.Description
Eigenschaft ist, dass sie harmlos sein scheint und gilt für jeden Stil
Art, so ist es einfach, in die Gewohnheit des Lesens der sich .Description
vor dem Lesen der .BaseStyle
.
Keine Kommentare:
Kommentar veröffentlichen