我正在尝试用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命令可以完美工作而不会出现延迟。
感谢您的帮助
答案 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