我正在尝试使用VBA在一个Word文档中提取句子并将其放入另一个Word文档中.因此,例如,如果我们需要找到组织的标题,我们将遵循以下算法:
搜索"标题"
在"标题"之后执行(获取)每个字符并且(停止)直到"地址"
And*_*y G 11
以下工作但可能有一种更有效的方法:
Sub FindIt()
Dim blnFound As Boolean
Dim rng1 As Range
Dim rng2 As Range
Dim rngFound As Range
Dim strTheText As String
Application.ScreenUpdating = False
Selection.HomeKey wdStory
Selection.Find.Text = "Title"
blnFound = Selection.Find.Execute
If blnFound Then
Selection.MoveRight wdWord
Set rng1 = Selection.Range
Selection.Find.Text = "Address"
blnFound = Selection.Find.Execute
If blnFound Then
Set rng2 = Selection.Range
Set rngFound = ActiveDocument.Range(rng1.Start, rng2.Start)
strTheText = rngFound.Text
MsgBox strTheText
End If
End If
'move back to beginning
Selection.HomeKey wdStory
Application.ScreenUpdating = True
End Sub
Run Code Online (Sandbox Code Playgroud)
您可以使用Activate在文档之间切换,最好使用对象变量.
Microsoft MVP Jay Freedman对我进行了修改,让我在没有Selection对象的情况下工作,使其更加整洁.
Sub RevisedFindIt()
' Purpose: display the text between (but not including)
' the words "Title" and "Address" if they both appear.
Dim rng1 As Range
Dim rng2 As Range
Dim strTheText As String
Set rng1 = ActiveDocument.Range
If rng1.Find.Execute(FindText:="Title") Then
Set rng2 = ActiveDocument.Range(rng1.End, ActiveDocument.Range.End)
If rng2.Find.Execute(FindText:="Address") Then
strTheText = ActiveDocument.Range(rng1.End, rng2.Start).Text
MsgBox strTheText
End If
End If
End Sub
Run Code Online (Sandbox Code Playgroud)
唯一剩下的要求是将此文本放入另一个文档中.就像是:
Documents(2).Range.Text = strTheText
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
45281 次 |
| 最近记录: |