如何使用VBA转换Microsoft Word中的文本

时间:2015-05-01 12:49:32

标签: ms-word styles accessibility word-vba

我希望Uni的所有旧Word文档都开始应用可访问的样式。对于这个测试,我想设置一个宏来搜索Word文档,无论它在哪里找到11pt Arial,我希望它应用一个可访问的样式,它将是Verdana 11pt。这样做意味着学术人员可以更轻松地将不可访问的文档转换为更易于访问的文档。

我已经开始学习宏了,并且可以创建一个将Word文件保存为PDF的文件,这是一个有用的快捷方式,但我正在努力。

我已经尝试创建一个宏来打开Replace,查找Arial 11pt的任何实例,然后将它们全部替换为另一种样式,但是当我运行它时,它似乎应用了我的替代样式,但也添加了奇怪的框文档。

此外,如果我将标题样式应用于文档,然后手动将该样式编辑为Arial 11pt,那么当我运行宏时,文本似乎应用了新样式,但我看到的仍然是Arial,而我得到奇怪的盒子!

我想自己解决这个问题,但这不是我熟悉的领域,所以社区的任何帮助都会很棒。

这是我用录音机创建的宏代码:

Sub Style()
'
' Style Macro
'
    Selection.Find.ClearFormatting
    With Selection.Find.Font
        .Size = 11
        .Bold = False
        .Italic = False
    End With
    Selection.Find.Replacement.ClearFormatting
    Selection.Find.Replacement.Style = ActiveDocument.Styles("Written Stuff")
    With Selection.Find.Replacement.ParagraphFormat
        With .Shading
            .Texture = wdTextureNone
            .ForegroundPatternColor = wdColorBlack
            .BackgroundPatternColor = wdColorBlack
        End With
        .Borders.Shadow = False
    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
End Sub

在这个例子中,我没有使用Verdana而是使用阿尔及利亚,所以我可以更容易地看到字体的变化。

1 个答案:

答案 0 :(得分:0)

您正在寻找文字属性Font =" Arial 11pt"然后想要应用段落样式。可能应用于段落文本的属性的优先级高于parapgraph样式的属性。

当你说"另外,如果我将标题样式应用于文档,然后手动将该样式编辑为Arial 11pt,那么......"您不是手动编辑样式,而是编辑具有样式的pragraph的文本。 (编辑样式意味着要编辑样式的定义,样式可以应用于许多段落。)

你可以做两件事:

  • 将文本级字体替换为文本级新字体,或
  • 删除文本级字体属性并应用段落样式。