#1
|
|||
|
|||
Macro for all docx in subdirectories
Hi. I'm not the best with macros and VBA but I have a macro that I use to style documents that I want to apply to all files spread throughout a series of subdirectories. I've been trying a few things that I've seen suggested here and there but I haven't figured out anything that works. The macro I want to apply is as follows:
Sub QuickFormat() ' ' QuickFormat Macro ' Quick Format for Books ' Selection.WholeStory With Selection.ParagraphFormat .SpaceBefore = 0 .SpaceBeforeAuto = False .SpaceAfter = 0 .SpaceAfterAuto = False .LineSpacingRule = wdLineSpaceSingle .LineUnitBefore = 0 .LineUnitAfter = 0 End With Selection.Find.Execute Replace:=wdReplaceAll ActiveWindow.ActivePane.LargeScroll Down:=3 Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting With Selection.Find .Text = "^l" .Replacement.Text = "^p" .Forward = True .Wrap = wdFindContinue .Format = False .MatchCase = False .MatchWholeWord = False .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False End With Selection.Find.Execute Replace:=wdReplaceAll ActiveWindow.ActivePane.LargeScroll Down:=3 Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting With Selection.Find .Text = "^p" .Replacement.Text = "^p^p" .Forward = True .Wrap = wdFindContinue .Format = False .MatchCase = False .MatchWholeWord = False .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False End With Selection.Find.Execute Replace:=wdReplaceAll ActiveWindow.ActivePane.LargeScroll Down:=3 Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting With Selection.Find .Text = "^p " .Replacement.Text = "^p" .Forward = True .Wrap = wdFindContinue .Format = False .MatchCase = False .MatchWholeWord = False .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False End With Selection.Find.Execute Replace:=wdReplaceAll ActiveWindow.ActivePane.LargeScroll Down:=3 Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting With Selection.Find .Text = "^p " .Replacement.Text = "^p" .Forward = True .Wrap = wdFindContinue .Format = False .MatchCase = False .MatchWholeWord = False .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False End With Selection.Find.Execute Replace:=wdReplaceAll Selection.WholeStory With Selection.ParagraphFormat .SpaceBefore = 0 .SpaceBeforeAuto = False .SpaceAfter = 0 .SpaceAfterAuto = False .LineSpacingRule = wdLineSpaceSingle .CharacterUnitFirstLineIndent = 0 .LineUnitBefore = 0 .LineUnitAfter = 0 End With Selection.MoveLeft Unit:=wdCharacter, Count:=1 Selection.WholeStory Selection.LanguageID = wdEnglishAUS Application.CheckLanguage = False Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting With Selection.Find .Text = "^p^p^p^p" .Replacement.Text = "^p^p" .Forward = True .Wrap = wdFindContinue .Format = False .MatchCase = False .MatchWholeWord = False .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False End With Selection.Find.Execute Replace:=wdReplaceAll End Sub Any help would be greatly appreciated. |
#2
|
||||
|
||||
See https://www.gmayor.com/document_batch_processes.htm which will handle the files and folders.
See https://www.gmayor.com/replace_using_wildcards.htm for how to replace extra empty paragraphs.
__________________
Graham Mayor - MS MVP (Word) (2002-2019) Visit my web site for more programming tips and ready made processes www.gmayor.com |
#3
|
|||
|
|||
Thanks Graham. That's a great solution for the find/replace things I needed to do. I still need a way to change the language and change the spacing before and after paragraphs though. Any ideas?
|
#4
|
||||
|
||||
You can create a custom process to do that, using the format described both on the web page and in the program's help files.
__________________
Graham Mayor - MS MVP (Word) (2002-2019) Visit my web site for more programming tips and ready made processes www.gmayor.com |
#5
|
|||
|
|||
I've spent the last few days trying to figure out how to make this work. Do I have to re-write the whole macro using Boolean or will it work without? To be honest Boolean makes practically zero sense to me. I apologise if that's an extremely ignorant question.
|
#6
|
||||
|
||||
You have to create the macro as shown on the web site and in the Help file. The Boolean options are there to provide the logging and error reporting. Based on your original macro it would need to be something like
Code:
Function QuickFormat(oDoc As Document) As Boolean Dim orng As Range Set orng = ActiveDocument.Range On Error GoTo err_Handler With orng.ParagraphFormat .SpaceBefore = 0 .SpaceBeforeAuto = False .SpaceAfter = 0 .SpaceAfterAuto = False .LineSpacingRule = wdLineSpaceSingle .CharacterUnitFirstLineIndent = 0 .LineUnitBefore = 0 .LineUnitAfter = 0 End With orng.LanguageID = wdEnglishAUS QuickFormat = True lbl_Exit: Exit Function err_Handler: QuickFormat = False Resume lbl_Exit End Function
__________________
Graham Mayor - MS MVP (Word) (2002-2019) Visit my web site for more programming tips and ready made processes www.gmayor.com |
Tags |
docx, subdirectories, vba |
Thread Tools | |
Display Modes | |
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
Run a macro on multiple docx. files | Peter Carter | Word VBA | 27 | 12-15-2022 04:10 PM |
Run a macro on multiple docx. files | terenceyip | Word VBA | 4 | 03-20-2019 05:56 PM |
How to go through subdirectories in the following macro | Kazona | Word VBA | 0 | 09-09-2013 06:59 AM |
Getting Macro To Work in .docx file on Website | Mhangoy | Word | 6 | 09-06-2013 06:57 AM |
Help! Can't Get Macro To Work In .docx Opened Off A Website | Mhangoy | Word VBA | 0 | 08-29-2013 03:02 AM |