Excel页眉和页脚文本替换太慢,是否有替代方法?

时间:2019-07-08 10:34:33

标签: excel vba

我正在尝试用VBA替换excel左页眉中的一组特定单词(以及与此相关的每个页眉和页脚) 问题是它太慢了,大约需要40秒才能打印2张纸。

我已经用替代命令完成了

With osheet.PageSetup
    For i = 1 To footerfindreplace.count
          .LeftHeader = Application.WorksheetFunction.Substitute(.LeftHeader, footerfindreplace(i).TextReplace, footerfindreplace(i).TextReplaceBy)
    next i
End with 

也有这种选择,但是将所有文本替换为我想要的单词,并且不保留我不想替换的其余文本。

If .LeftHeader = footerfindreplace(i).TextReplace Then
     .LeftHeader = footerfindreplace(i).TextReplaceBy
End If

更新

根据建议,还尝试了VBA.replace 花费完全相同的时间.. 20秒打开替换了文本的文件,无论执行该命令是什么。我还尝试将循环放在不同的位置,但仍无改善。 花费20秒在20秒内替换所有页眉和页脚是否正常?

我正在寻找大约15个文本来查找和替换可能性,但是对于相同数量的可能性,cells.replace命令可以完美工作而不会出现延迟。

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

您是否尝试过使用VBA.Replace?
此代码用“ Bar”替换LeftHeader中的所有“ Foo”。

Set pgSetup = Sheet1.PageSetup替换为您需要的内容,并在必要时循环。

Sub testRep()
    Dim pgSetup As PageSetup
    Dim findStr As String
    Dim repStr As String

    Set pgSetup = Sheet1.PageSetup
    findStr = "Foo"
    repStr = "Bar"

    pgSetup.LeftHeader = VBA.Replace(pgSetup.LeftHeader, findStr, repStr)

End Sub

修改:
添加了一些其他代码,您应该会看到更新需要多长时间。 为了进行比较,使用下面的代码(testRep2),用3个标题(R,C,L)更新5张纸,每张纸需要0.1到1秒的时间(比不使用Application.ScreenUpdating和{{ 1}})。

Application.DisplayStatusBar