我有一个很大的文档,要将其中的“会计分录”的格式进行统一化。我已经编制了一段宏代码,也运行成功,但运行的时间特别长(约半个小时)。这可能是因为我的代码的思路是逐段判断,由于段落较多,所以运行的时间较长。当文档很大、段落很多但需要替换的内容即并不多时,这个方法显然不科学,把很多时间浪费在遍历各个段落上了。现将文档及代码上传,请大神修改优化。 Sub 会计分录格式整理() ’****此代码已经测试通过 Dim FL%: FL = 0 '分录状态,0:处于非分录,1:“借:”之后“贷:”之前标志,2:“贷:”之后直到分录结束的标志 h =Time Application.DisplayAlerts = False '关闭提示 On Error Resume Next '忽略错误 Set Reg =CreateObject("vbscript.regexp") Reg.Global = True: Reg.ignorecase = False:Reg.MultiLine = True 'MsgBox "开始遍历段落,将章节●▲记入数组" h1 = Time For Each i In ActiveDocument.Paragraphs '在活动文档的段落集合中循环 DD = DD + 1 Debug.Print "【标题】正在处理段落:" & DD DoEvents '防假死 ActiveDocument.Paragraphs(DD).Range.Select '只有先有这个选择,后面才能判断是否处于表格中 If Selection.Information(wdWithInTable) = False Then '如果不是处于表格中【1】 Reg.Pattern = "^借:" If Reg.test(i.Range.Text) = True Then i.CharacterUnitFirstLineIndent = 2 '行首空2格 i.Range.Font.Color = 5287936 FL = 1 Else Reg.Pattern = "^贷:" If Reg.test(i.Range.Text) = True Then FL = 2 i.CharacterUnitFirstLineIndent = 4 '行首空4格 ElseIf FL = 1 Then i.CharacterUnitFirstLineIndent = 4 '行首空4格 ElseIf FL = 2 Then i.CharacterUnitFirstLineIndent = 6 '行首空6格 End If End If If FL <> 0 Then i.Range.Font.Color = 5287936 '分录的字体设置为墨绿色 Reg.Pattern = "♂$" '设定♂为分录的结尾标识 If Reg.test(i.Range.Text) = True Then FL = 0 End If Next MsgBox (Time - h) * 24 * 60 * 60 End Sub
我换了一个思路,先找到文档中的“借:”,然后再对这一个分录进行格式整理,我觉得这个思路可能会提高运行效率,但我目前的知识无法完成这项工作。这部分没有完成的代码我也上传,看大神们觉得此思路是否行得通。
Sub A123() ’********有部分代码没有完成 Selection.WholeStory '选择全部文档 Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting With Selection.Find .Text = "♀借:*^13" .Replacement.Text = "^&" .Forward = True .Wrap = wdFindContinue .Format = True .MatchCase = False .MatchWholeWord = False .MatchByte = False .MatchAllWordForms = False .MatchSoundsLike = False .MatchWildcards = True With .Replacement .ClearFormatting .Font.Bold = False End With .Execute Replace:=wdReplaceAll Do While .Execute '只能通过循环的方式修改段落格式 .Parent.ParagraphFormat.CharacterUnitFirstLineIndent = 4 '对于段落格式,需要用此方式才能设置成功,如果像字体".Replacement.font"那样设置是无效的 '************我希望在这个循环里,对每一组分录的格式进行调整 ’*************这一块是不我懂的地方。请大神指导 Loop End With End Sub
|