【问题标题】:VBA - Word - iterating through paragraphs slows down incredibly over timeVBA - Word - 遍历段落会随着时间的推移而减慢
【发布时间】:2016-09-26 19:41:08
【问题描述】:

我的以下代码部分随着时间的推移会减慢执行速度。我的 Word 文档有 200 多页和大约 12000 段。在第 3000 段左右,可以说执行速度比开始时慢几倍。

有什么方法可以让速度保持在同一水平?也许对于大文档来说,遍历段落根本就没有办法?

Dim worddoc As Word.Document
Dim ParaCount as long, J as long, x as long
Dim RowData as string

With worddoc
    ParaCount = .Paragraphs.Count
    For J = 1 To ParaCount    
        RowData = .Paragraphs(J).Range.Text       
        x = x + 1
        If x Mod 10 = 0 Then Application.StatusBar = x
    Next ParaCount
End With

【问题讨论】:

标签: vba ms-word


【解决方案1】:

这样的事情应该可以工作。我相信你已经让它工作了,但这里提到了For Each 方法。

Public Sub Iterate_Paragraphs()
    Dim Paragraph As Word.Paragraph

    For Each Paragraph In ActiveDocument.Paragraphs
        Debug.Print Paragraph.Range.Text
    Next
End Sub

【讨论】:

  • 太棒了!它快很多倍!你有解释吗?
  • 当我执行in Selection.Paragraphs 时,它不会遍历段落,但会一直重复第一个段落。你知道这是为什么吗?
  • @musbach 我相信这是因为Paragraphs 有一个名为Next 的属性,其中包含对下一段的引用,它在For...Each 的封面下使用。我记得在 Range 对象中有点像这样docs.microsoft.com/en-us/office/vba/api/excel.range.next
猜你喜欢
  • 2014-02-04
  • 2017-11-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-25
  • 1970-01-01
  • 2014-07-17
  • 2021-07-22
相关资源
最近更新 更多