VBA-Word:应用多段格式

时间:2016-10-24 14:02:46

标签: vba ms-word macros word-vba

我试图在Word上使用我的第一个(希望是最后一个)Macro,我已经走到了尽头。由于我在Word和Word Online之间工作很多,格式化往往会发生变化,所以我需要创建一个宏,这样可以省去手动重新调整它的麻烦。

我的问题是我需要根据使用的字体在我的正文文本上有不同的间距(Arial在6之前有间距,而Courier New用于0之前的代码间距)。我试图使用宏记录器和替换功能创建代码,但是记录器给了我一个通用代码,它没有指定我需要的字体(虽然我选择它)所以当我同时运行时我最终得到了两者都有Arial格式。以下是我为Courier New提供的代码:

Sub FormatBodyCode()

Application.ScreenUpdating = False

Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find.Replacement.ParagraphFormat
    .SpaceBefore = 0
    .SpaceBeforeAuto = False
    .SpaceAfter = 0
    .SpaceAfterAuto = False
    .LineSpacingRule = wdLineSpaceMultiple
    .LineSpacing = LinesToPoints(1.15)
    .Alignment = wdAlignParagraphLeft
    .OutlineLevel = wdOutlineLevelBodyText
    .LineUnitBefore = 0
    .LineUnitAfter = 0
End With
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 Replace:=wdReplaceAll

Application.ScreenUpdating = True
End Sub

如何指定字体以使其有效?

1 个答案:

答案 0 :(得分:1)

一次快速代码更改应限制搜索单个字体:

...
With Selection.Find
    ...
    .Format = True 
    .Font.Name = "Courier New"    ' <== Add this - Or whatever font you want
    ...

执行多种字体的最简单方法是将整个函数复制到另一个具有不同名称的函数,并在另一个函数中更改字体名称和间距。