![]() |
#1
|
|||
|
|||
![]()
Upgraded to Word 2013 from Word 2010 and the time to execute this macro went form 8 seconds to 208 seconds. When I run the code with not using
Code:
Application.ScreenUpdating = False I am a beginner in VBA and I got this code from online Code:
Dim StartTime As Double Dim SecondsElapsed As Double StartTime = Timer Application.ScreenUpdating = False Dim oPara As Paragraph For Each oPara In ActiveDocument.Paragraphs If InStr(1, oPara.Range.Text, "!Z! !") = 0 Then oPara.Range.Delete End If Next With ActiveDocument.Range.Find .Replacement.ClearFormatting .Text = "!" .Replacement.Text = "|" .MatchWildcards = False .Execute Replace:=wdReplaceAll, Forward:=True, Wrap:=wdFindContinue End With Application.ScreenUpdating = True SecondsElapsed = Round(Timer - StartTime, 2) MsgBox "This code ran successfully in " & SecondsElapsed & " seconds", vbInformation Last edited by Tye30; 06-21-2017 at 06:25 AM. Reason: Add attachment |
#2
|
||||
|
||||
![]()
It's all relative and impossible to check without the document you are processing. On my PC (lots of memory and SSD drive) with a 20 page document it ran in just over a second, according to your timer, but it is also true to say that VBA processing in Word 2013/2016 is generally slower than it is in Word 2010
__________________
Graham Mayor - MS MVP (Word) (2002-2019) Visit my web site for more programming tips and ready made processes www.gmayor.com |
#3
|
|||
|
|||
![]()
Thank you for replying Graham, and I have added an attachment of a modified version of the docs I use. I appreciate any help you may be able to give me!
I view these docs in Web Layout View Last edited by Tye30; 06-21-2017 at 06:28 AM. Reason: Important Note |
#4
|
||||
|
||||
![]()
Using your test document, which is far more complex than I had anticipated, the process is indeed much slower than in Word 2010 and even in 2010, your test document took rather longer than 8 seconds, however while my PC may have a lot of memory and a very fast drive, it does not have a particularly fast processor.
As you are processing a lot of paragraphs sequentially, there is not a lot you can do to speed that process. If you can eliminate many (or all) of the unwanted paragraphs using the replace function then the process would have less to do and thus be faster. 'Replace' is infinitely faster than the paragraph looping. e.g. a wildcard search for \! \! \!*^13 replace with nothing will remove a lot of unwanted paragraphs very quickly and the processing time of your macro was then reduced to a third. You should be able to remove many of the others similarly, but as the document is a mock up without real values, it is difficult to suggest the wildcard strings required, however see http://www.gmayor.com/replace_using_wildcards.htm
__________________
Graham Mayor - MS MVP (Word) (2002-2019) Visit my web site for more programming tips and ready made processes www.gmayor.com |
![]() |
|
![]() |
||||
Thread | Thread Starter | Forum | Replies | Last Post |
Excel 2013 two laptops near identical spec performing differently | mobile | Excel | 6 | 04-04-2016 03:39 AM |
![]() |
saclucas | Word VBA | 1 | 02-18-2016 09:19 PM |
![]() |
arjfca | Word | 2 | 12-04-2014 12:53 AM |
![]() |
tandchas | Excel Programming | 7 | 06-27-2014 05:42 AM |
![]() |
tombags | Word | 1 | 06-25-2014 04:56 PM |