Forums Neueste Beiträge
 

Word findet keine verwendeten Schriftgrade mehr

25/08/2008 - 09:53 von Karsten Lange | Report spam
Hallo NGler,

steh mal wieder wie die Kuh ...
Nachdem ich per VBA eine neue Formatvorlage definiert habe, wende ich diese
auf den kompletten Text an. Danach findet mein Word kein Text mehr, der wie
in diesem Beispiel mit dem Schriftgrad 9pt formatiert ist - obwohl der
gesamte Text 9pt ist.
Anbei der Code. Vielleicht kann das mal jemand von euch nachstellen.

Danke & Gruß Karsten


Code --

Private Sub TestSchriftgradSuchen()

ActiveDocument.Styles.Add Name:="Normal", Type:=wdStyleTypeParagraph
With ActiveDocument.Styles("Normal")
.AutomaticallyUpdate = False
.BaseStyle = ""
.NextParagraphStyle = "Normal"
End With
With ActiveDocument.Styles("Normal").Font
.Name = "Arial"
.Size = 9
.Bold = False
.Italic = False
.Underline = wdUnderlineNone
.UnderlineColor = wdColorAutomatic
.StrikeThrough = False
.DoubleStrikeThrough = False
.Outline = False
.Emboss = False
.Shadow = False
.Hidden = False
.SmallCaps = False
.AllCaps = False
.Color = wdColorBlack
.Engrave = False
.Superscript = False
.Subscript = False
.Scaling = 100
.Kerning = 0
.Animation = wdAnimationNone
End With
With ActiveDocument.Styles("Normal").ParagraphFormat
.LeftIndent = CentimetersToPoints(0)
.RightIndent = CentimetersToPoints(0)
.SpaceBefore = 0
.SpaceBeforeAuto = False
.SpaceAfter = 0
.SpaceAfterAuto = False
.LineSpacingRule = wdLineSpace1pt5
.Alignment = wdAlignParagraphLeft
.WidowControl = False
.KeepWithNext = False
.KeepTogether = False
.PageBreakBefore = False
.NoLineNumber = False
.Hyphenation = False
.FirstLineIndent = CentimetersToPoints(0)
.OutlineLevel = wdOutlineLevelBodyText
.CharacterUnitLeftIndent = 0
.CharacterUnitRightIndent = 0
.CharacterUnitFirstLineIndent = 0
.LineUnitBefore = 0
.LineUnitAfter = 0
End With
ActiveDocument.Styles("Normal").NoSpaceBetweenParagraphsOfSameStyle = False
ActiveDocument.Styles("Normal").ParagraphFormat.TabStops.ClearAll
With ActiveDocument.Styles("Normal").ParagraphFormat
With .Shading
.Texture = wdTextureNone
.ForegroundPatternColor = wdColorAutomatic
.BackgroundPatternColor = wdColorAutomatic
End With
.Borders(wdBorderLeft).LineStyle = wdLineStyleNone
.Borders(wdBorderRight).LineStyle = wdLineStyleNone
.Borders(wdBorderTop).LineStyle = wdLineStyleNone
.Borders(wdBorderBottom).LineStyle = wdLineStyleNone
With .Borders
.DistanceFromTop = 1
.DistanceFromLeft = 4
.DistanceFromBottom = 1
.DistanceFromRight = 4
.Shadow = False
End With
End With
ActiveDocument.Styles("Normal").LanguageID = wdGerman
ActiveDocument.Styles("Normal").Frame.Delete


Selection.WholeStory
Selection.Style = ActiveDocument.Styles("Normal")
Selection.HomeKey Unit:=wdStory


'Selection.Find.Font.Name = "Arial"
Selection.Find.Font.Size = 9
With Selection.Find
.Text = ""
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = True
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute
If Selection.Find.Found = True Then
MsgBox "9pt Text vorhanden.", vbCritical, "Info"
Else
MsgBox "KEIN 9pt Text vorhanden.", vbCritical, "Info"
End If

End Sub



WinXP (SP2), Word 2002 (SP3)
 

Lesen sie die antworten

#1 Helmut Weber
26/08/2008 - 17:23 | Warnen spam
Hallo Karsten,

ich tippe mal darauf, dass von einer vorhergehenden Suche
mittels des Selection-Objekts eine Option übriggeblieben
ist, die in Deiner Suche nicht zurückgesetzt wird,
z.B. .highlight = true.

Wenn man ein Range-Object verwendet,
d.h. ein neues Range-Objekt definiert,
braucht man sich um die Search-Optionen nicht zu kümmern.

Sub Test5a()
Dim rDcm As Range
Set rDcm = ActiveDocument.Range
With rDcm.Find
.Font.size = 9
If .Execute Then
rDcm.Select
End If
End With
End Sub

Was nichts selektiert,
wenn das ganze Dokument mit 9 Punkt formatiert ist!


Gruß

Helmut Weber, MVP WordVBA

Vista Small Business, Office XP

Ähnliche fragen