在Word VBA

时间:2019-03-16 01:10:02

标签: html vba ms-word string-search

我的代码的目标是能够使用VBA搜索一组关键术语,以便能够应用粗体格式。我试图将代码设置为期望以下格式的字符串:

  • 项目#
  • 项目#@
  • 项目#@@
  • 项目##
  • 项目## @
  • 项目## @@

这里是#号,代表数字,@之后,代表小写字母。我相信我编写的代码能够找到整个文档的通用字符串,但是#和@将交叉引用到文档中的某个位置,看来我的脚本无法找到字符串是由于交叉引用。

注意:我想在HTML标记中放置空格,因为我想在标记执行之前显示它们的外观。

此代码的目的是创建一个动态文档,该文档随项目更改而更新了Items,但是我将要将该文档转换为HTML,并且我有JavaScript可以查找文本以创建标签并应用代码覆盖。我已经遇到了需要预处理Word文档以确保格式保持一致的需求,而不管其粗体如何应用。如果项目以粗体显示,则会出现格式问题,然后#以粗体显示,导致html看起来像 Item ,而我发现很难用JavaScript找到这些字符串应用编码。

Sub FindTheText()
Dim test As Variant
Set test = ActiveDocument.Range.Find
With Selection.Find
    .ClearFormatting
    .Text = "Item [0-9]"
    .MatchWildcards = True
    .MatchCase = False
    .MatchWholeWord = True
    .Wrap = wdFindContinue
End With
Selection.Find.Execute
End Sub

这只是示例代码,因此我需要在循环中创建一系列命令以查找所需的每种类型的#/ @组合。一旦我掌握了基础知识,那至少就是我的计划

为演示所需的输出,我将输入一个示例段落,然后输入一个错误的HTML代码和良好的HTML代码的示例。

示例段落

我的示例代码应该能够找到项目3aa并应用粗体,以便在html中应用单个粗体标记。这些项目可能会有所不同,但我希望我能看到一个或两个数字,可能会出现从项目1到项目1z到99zz的一个或两个字母,因此我需要为所有情况做准备。

HTML输出错误

我的示例代码应该能够找到 Item 3aa 并应用粗体,以便在html中应用单个粗体标记。项目可能会有所不同,但我希望我能看到一个或两个数字,可能还会出现一个或两个字母,范围从项目 1 项目 1 z 项目 99 zz ,所以我需要为所有情况做准备。

良好的HTML输出

我的示例代码应该能够找到项3aa 并应用粗体,以便在html中应用单个粗体标记。项目可能会有所不同,但我希望我能看到一个或两个数字,可能还会出现一个或两个字母,范围从项目1 项目1z 项目99zz 所以我需要为所有情况做准备。

1 个答案:

答案 0 :(得分:0)

如果您要进行通配符搜索,则可以使用“((Item [0-9] @)()”)查找文本“ Item”,后跟任意数量的数字。

您可以使用“((Item [0-9] {1,n})()”查找文本“ Item”,后跟数字,其中n替换为要查找的最大数字。

您可以通过添加[a-z] @或[a-z] {1,n}来扩展搜索字段,以包含小写字母。

例如“((项目[0-9] {1,2} [a-z] {1,3})()”将找到项目,后跟一个或两个数字,然后是1或2或3个小写字母。

在上面的搜索文本中,括号()用于封闭文本。 ()被称为字段。搜索文本中可以使用1到9个字段。您可以使用\ 1到\ 9在替换文本中引用这些字段。因此,在上述所有情况下,替换文字均为“ \ 1 \ 2 ”(就像您插入一个空格以烘烤可见的粗体标签一样。

您可以在此处找到有关通配符搜索的更多信息

https://wordmvp.com/FAQs/General/UsingWildcards.htm