Word 2013 VBA批量复制批注时程序崩溃问题求助
Word 2013 VBA复制批注崩溃问题解决
你的问题不是Word 2013的Bug,是代码逻辑导致的。正向循环处理批注时,每新增一条批注,ActiveDocument.Comments集合的数量就会增加,你用j来偏移索引的方式虽然试图适配,但这种动态变化的集合会让Word频繁重新计算批注列表,容易触发内存溢出导致崩溃,而且循环后期索引偏移逻辑会出错,最终只剩最后一条批注的副本能成功创建。
解决方法是反向循环,从最后一条批注开始往前处理,这样新增的批注不会干扰还没处理的原有批注索引:
Sub DuplicateComments() Dim i As Long Dim originalComment As Comment ' 从最后一条批注开始反向循环 For i = ActiveDocument.Comments.Count To 1 Step -1 Set originalComment = ActiveDocument.Comments(i) ' 在原批注的范围添加副本 ActiveDocument.Comments.Add Range:=originalComment.Scope, Text:=originalComment.Range.Text Next i End Sub
这个逻辑里,原有批注的索引不会因为新增副本而改变,Word不需要频繁刷新整个批注集合,就能稳定完成所有批注的复制。
内容的提问来源于stack exchange,提问作者Djoneeee
相关产品推荐
相关产品推荐

