【发布时间】:2020-06-07 22:11:16
【问题描述】:
我想选择一个单元格并使用该单元格中的值文本,在特定的 word 文档 (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
【问题讨论】:
-
也许可以试试 'wrdApp.Documents.Content' 并在内容中寻找价值?
-
您的 Word 相关变量应该是公开的,并且您应该先创建不同的 subs 以检查文档是否已经打开。如果文档未打开,则打开它并执行您的代码。如果它已经打开,只需激活该文档并执行您的代码。
-
不久前我回答了一个非常相似的问题:Edit a workbook, whether open or closed, from Word VBA。它是为“另一种方式”的问题而编写的,但在从 Excel 自动化 Word 时也适用相同的原则。通读该答案,了解在其他 Office 应用程序可能运行或未运行以及文件可能打开或未打开时与其他 Office 应用程序交互的各种方式。
标签: excel vba search ms-word find