【发布时间】:2016-09-29 04:10:48
【问题描述】:
我正在寻找一种方法来创建一个新文档,其中包含我文档中具有特定格式的所有文本。
到目前为止我写的内容见下文,但我被困在这里:
- 到达文档末尾时如何停止循环?或者如何为我的代码添加智能以避免静态循环,而是“扫描我的所有文档”?
Option Explicit
Sub Macro1()
Dim objWord As Application
Dim objDoc As Document
Dim objSelection As Selection
Dim mArray() As String
Dim i As Long
Dim doc As Word.Document
For i = 1 To 100
ReDim Preserve mArray(i)
With Selection.Find
.ClearFormatting
.Font.Color = wdColorBlue
.Text = ""
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindStop
.Format = True
.Execute
End With
mArray(i) = Selection.Text
Next
Set objWord = CreateObject("Word.Application")
Set objDoc = objWord.Documents.Add
objWord.Visible = True
Set objSelection = objWord.Selection
For i = 1 To 100
objSelection.TypeText (mArray(i))
Next
End Sub
【问题讨论】:
-
您可以使用
For i = 1 To ThisDocument.Words.Count - 1遍历文档中的所有单词,然后您可以使用ThisDocument.Words(i)访问该单词 -
目前,我想尽可能多地进行搜索...但是如果我能计算出有多少次出现,那么我对你的方法很好,谢谢。跨度>
-
有大量关于在 Word 中使用 Find 的示例,很难相信您还没有找到它们...
Find.Execute返回一个布尔值 - 如果查找成功,则返回 True。声明一个布尔变量,将其设置为 True 或 False,并在 Find 周围的 Do-loop 中使用它,测试 Find.Execute 是否成功。如果是,请继续;如果没有,则循环结束。您在代码中已有的wdFindStop将阻止 Word 在文档顶部重新启动。
标签: vba ms-word format find-replace