我想选择一个单元格并使用该单元格中的值文本来搜索/查找特定的字词文档(xxxxxx.docx)。该文档已与其他Word文档一起打开。
下面的代码几乎可以完成我想要的...。它打开特定的文档,然后找到文本。但是该文档已经打开,因此不能正常工作。仅需要选择/激活它,而无需再次打开。
有人知道如何管理它:选择任何单元格,使用该单元格中的值,激活/选择xxxxxx.docx,然后搜索该值。
**最重要的是,找到的文本显示在文档中,必须在屏幕上显示/弹出。所有这些都是为了在本文档中快速浏览。
Sub FindName()
Dim wrdApp As Object
Dim wrdDoc As Object
Set wrdApp = CreateObject("Word.Application")
wrdApp.Visible = True
Set wrdDoc = wrdApp.Documents.Open("C:\xxxxxx.docx")
Dim FindWord As String
Dim result As String
FindWord = ActiveCell.Value
wrdDoc.SelectAllEditableRanges
With wrdDoc.ActiveWindow.Selection.Find
.Text = FindWord
.Replacement.Text = ""
.Forward = True
.Wrap = 1
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
wrdDoc.ActiveWindow.Selection.Find.Execute
End Sub
如果文档已经打开,则Word必须已经在运行。在这种情况下,您都不想要:
您应先检查Word是否正在运行,如果正在运行,请检查文档是否打开。因此:
Sub Demo()
Dim wdApp As Object, wdDoc As Object
Const StrNm As String = "C:\xxxxxx.docx"
On Error Resume Next
Set wdApp = GetObject(, "Word.Application")
If Err Then
Set wdApp = CreateObject("Word.Application")
End If
On Error GoTo 0
With wdApp
For Each wdDoc In .Documents
If wdDoc.FullName = "StrNm" Then Exit For
Next
If wdDoc Is Nothing Then Set wdDoc = wdApp.Documents.Open(StrNm)
'to Find & navigate to a particular string
With wdDoc.Range
With .Find
.Text = ActiveCell.Value
.Execute
End If
If .Find.Found = True Then .Select
End With
'To navigate to a particular bookmark
wdDoc.Bookmarks("MyBookmark").Range.Select
End With
End Sub
Hello Macropod和其他助手,最新的代码成功了!我稍作改动,取出了书签,很幸运!为了使Word文档在屏幕上显示,我使用了外壳……我知道这一定会伤到您的眼睛,或者打碎屏幕,但是确实可以(如果没有,Word会保持最小化)。如果有人想使自己更漂亮,我很乐于向它学习。但这有效,我很高兴。非常感谢,我很喜欢!超级有帮助。
Sub Demo()
Dim wdApp As Object, wdDoc As Object
Const StrNm As String = "C:\xxxxxx.docx"
On Error Resume Next
Set wdApp = GetObject(, "Word.Application")
If Err Then
Set wdApp = CreateObject("Word.Application")
End If
On Error GoTo 0
With wdApp
For Each wdDoc In .Documents
If wdDoc.FullName = "StrNm" Then Exit For
Next
If wdDoc Is Nothing Then Set wdDoc = wdApp.Documents.Open(StrNm)
With wdDoc.Range
With .Find
.Text = ActiveCell.Value
.Execute
End With
If .Find.Found = True Then .Select
End With
End With
Shell "C:\WINDOWS\explorer.exe """ & "C:\xxxxxx.docx" & "", vbNormalFocus
End Sub