我需要做的是在 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/