excel - 使用通配符在文档中查找字符串;返回完整的字符串 VBA

标签 excel search ms-word vba

我需要做的是在 word 文档中搜索美元金额,然后将金额返回给程序以供用户验证。我知道金额以“$”开头,以小数点后两位数结尾(每个文档只有一个金额)。搜索像我想要的那样返回 true,但是我实际上如何从 word 文档中提取完整的数字(分配给变量)

下面的代码(Excel 2010);干杯。

With wdDoc.Content.Find
   .Text = "$*.??"
   .MatchWildcards = True
   If .Execute Then
      'would be verified here
   Else
      'etc
   End If
End With

编辑: 我设法完成了以下工作;

   With wdApp.Selection.Find
      .Text = "$*.??"
      .Wrap = wdFindAsk
      .Forward = True
      .MatchWildcards = True
      If .Execute Then
         debug.print wdApp.Selection.Text
      Else
         debug.print "Not Found"
      End If
   End With

唯一不利的是,如果用户在搜索运行时设法选择了不同的 Word 文档,它将找不到结果,因为选择已更改。有什么方法可以专门搜索代码中前面打开的事件文档吗? (“wdDoc”)。使用 wdDoc.Content 似乎无法返回字符串。

Edit2:有没有一种方法可以使用 Word.Document 而不是 Word.Application 从搜索中返回文本?

最佳答案

您可以使用 Range 对象来引用找到的文本。

此外,查找模式 $*.?? 可以在您的文档中找到很多东西,而不是您想要的东西,如果存在杂散的 $ 的话。

您可以使用此模式精确查找美元金额

$[0-9]{1,}.[0-9]{2}

Sub Demo()
    Dim wdDoc As Document
    Dim oRng As Range

    ' Set reference to required doc
    Set wdDoc = ActiveDocument

    ' ....

    Set oRng = wdDoc.Content
    With oRng.Find
        .Text = "$[0-9]{1,}.[0-9]{2}"
        .Wrap = wdFindAsk
        .Forward = True
        .MatchWildcards = True

        If .Execute Then
           Debug.Print oRng
        Else
          'etc
        End If
    End With
End Sub

关于excel - 使用通配符在文档中查找字符串;返回完整的字符串 VBA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19376093/

相关文章:

excel - 将文件从文件路径复制到另一个

vba - AdvancedFilter 宏在 AutoFilter 关闭时运行速度较慢

excel - 将 "##h ##m"转换为 ##.## 小时

ajax - 针对 ajax 调用的 Google 搜索优化

vba - 使用 Excel 宏中的 Word Selection 对象

c# - 使用c#以编程方式设置word文档表格单元格边距

c# - 使用 DocumentFormat.OpenXml dll 读取 .Doc 文件

c# - 如何将 C# 对象列表导出到 Excel 电子表格?

sql - 有没有一种方法可以在Microsoft SQL Server中使用SQL Server Powershell搜索列?

search - Elasticsearch术语统计查询未正确分组