我需要做的是搜索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从搜索中返回文本?
答案 0 :(得分:1)
试试这个
With ActiveDocument.Content.Find
.Text = "$*.??"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindAsk
.MatchWildcards = True
If .Execute Then
Debug.Print Selection.Range.Text
Else
Debug.Print "not Found"
End If
End With
<强>后续强>
试试这个(试过并测试过)
Sub Sample()
ActiveDocument.Content.Select
With Selection.Find
.Text = "$*.??"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.MatchWildcards = True
If .Execute Then
Debug.Print Selection.Range.Text
Else
Debug.Print "not Found"
End If
End With
End Sub
答案 1 :(得分:1)
您可以使用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