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



我希望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,而是阿尔及利亚,这样我可以更容易地看到字体的变化。

您正在查找一个文本属性Font="Arial 11pt",然后希望应用段落样式。应用于段落文本的属性可能比段落样式的属性具有更高的优先级。

当你说"另外,如果我将页眉样式应用于文档,然后手动编辑该样式为Arial 11pt,那么…"时,你不是手动编辑样式,而是编辑有样式的练习图的文本。(编辑样式意味着编辑样式的定义,样式可以应用于许多段落)。

你可以做两件事:

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

相关内容

  • 没有找到相关文章

最新更新