这篇文章被交叉发布在
Microsoft Answers论坛
..。
下面的宏用于保护有问题的word文档。当它在较小的文档(4-10页)上运行时,它工作得很好,但我们有一个更大的27页文档(6000字),它似乎吸收了所有的内存!当我运行它的时候,我的话就冻结了。
以下是一个OneDrive可重现示例的链接:
https://1drv.ms/w/s!AgPO3BotYSt7iHvafHts2HyF2OjB?e=HSOI57
不确定通过OneDrive访问时格式是否有效,但单击复选框时会显示X。
“您将如何满足建议的说明”后面是一个文本字段,以便用户可以输入文本。“负责任的团队”和“你为什么不同意的理由”也是如此:
宏运行后,除了与上述格式一起呈红色的文本外,应锁定整个文档。
有没有办法调整宏以节省一些内存,使其在用于较大文件时能够运行?
下面是宏:
Sub Lock_Teammate_DraftReports_mp()
Selection.HomeKey wdStory
Selection.Find.ClearFormatting
Selection.Find.Font.ColorIndex = wdRed
With Selection.Find
Do While .Execute(FindText:="", Forward:=True, MatchWildcards:=False, Wrap:=wdFindStop) = True
Selection.Editors.Add wdEditorEveryone
Selection.Collapse wdCollapseEnd
Loop
End With
ActiveDocument.Protect Password:="example123", NoReset:=False, Type:=wdAllowOnlyReading,
UseIRM:=False, EnforceStyleLock:=False
End Sub发布于 2021-03-02 09:05:51
您的问题很可能与您的代码所做的所有选择有关,这既是低效的,也容易导致大量的滚动和屏幕闪烁。尝试:
Sub Lock_Teammate_DraftReports_mp()
Application.ScreenUpdating = False
With ActiveDocument
With .Range
With .Find
.ClearFormatting
.Font.ColorIndex = wdRed
.Text = ""
.Forward = True
.Wrap = wdFindStop
.MatchWildcards = False
End With
Do While .Find.Execute = True
.Editors.Add wdEditorEveryone
.Collapse wdCollapseEnd
Loop
End With
.Protect Password:="example123", NoReset:=False, Type:=wdAllowOnlyReading, UseIRM:=False, EnforceStyleLock:=False
End With
Application.ScreenUpdating = True
End Subhttps://stackoverflow.com/questions/66431497
复制相似问题