![]() |
|
![]() |
|
Thread Tools | Display Modes |
#1
|
|||
|
|||
![]() Hi guys! I'm trying to put together a macro that changes all the text to black in multiple docx files in a given folder. This is what I have.. but it's not working. Any suggestions? Code:
Sub UpdateDocuments() Application.ScreenUpdating = False Dim strFolder As String, strFile As String, wdDoc As Document strFolder = GetFolder If strFolder = "" Then Exit Sub strFile = Dir(strFolder & "\*.docx", vbNormal) While strFile <> "" Set wdDoc = Documents.Open(FileName:=strFolder & "\" & strFile, AddToRecentFiles:=False, Visible:=False) With wdDoc Selection.WholeStory Selection.Font.Color = -587137025 .Close SaveChanges:=True End With strFile = Dir() Wend Set wdDoc = Nothing Application.ScreenUpdating = True End Sub Function GetFolder() As String Dim oFolder As Object GetFolder = "" Set oFolder = CreateObject("Shell.Application").BrowseForFolder(0, "Choose a folder", 0) If (Not oFolder Is Nothing) Then GetFolder = oFolder.Items.Item.Path Set oFolder = Nothing End Function |
#2
|
||||
|
||||
![]()
Try:
Code:
Sub UpdateDocuments() Application.ScreenUpdating = False Dim strFolder As String, strFile As String, wdDoc As Document strFolder = GetFolder If strFolder = "" Then Exit Sub strFile = Dir(strFolder & "\*.docx", vbNormal) While strFile <> "" If ThisDocument.FullName <> strFolder & "\" & strFile Then Set wdDoc = Documents.Open(FileName:=strFolder & "\" & strFile, AddToRecentFiles:=False, Visible:=False) With wdDoc .Range.Font.ColorIndex = wdBlack .Close SaveChanges:=True End With End If strFile = Dir() Wend Set wdDoc = Nothing Application.ScreenUpdating = True End Sub Function GetFolder() As String Dim oFolder As Object GetFolder = "" Set oFolder = CreateObject("Shell.Application").BrowseForFolder(0, "Choose a folder", 0) If (Not oFolder Is Nothing) Then GetFolder = oFolder.Items.Item.Path Set oFolder = Nothing End Function
__________________
Cheers, Paul Edstein [Fmr MS MVP - Word] |
#3
|
||||
|
||||
![]()
It should work for the document body, but for more complex documents, use the following in place of
Selection.WholeStory Selection.Font.Color = -587137025 Code:
Dim oStory As Range For Each oStory In wdDoc.StoryRanges oStory.Font.ColorIndex = wdBlack If oStory.StoryType <> wdMainTextStory Then While Not (oStory.NextStoryRange Is Nothing) Set oStory = oStory.NextStoryRange oStory.Font.ColorIndex = wdBlack Wend End If Next oStory
__________________
Graham Mayor - MS MVP (Word) (2002-2019) Visit my web site for more programming tips and ready made processes www.gmayor.com |
#4
|
||||
|
||||
![]()
joewoods; Kindly don't post the same question multiple times. As you can see, all it does is waste peoples' time, having different people going over the same ground and risks causing confusion.
Threads merged.
__________________
Cheers, Paul Edstein [Fmr MS MVP - Word] |
#5
|
|||
|
|||
![]()
Thanks so much, Paul!! Sorry I posted it twice. I just tried it. It works, but not on the text in the header and footer. Is there a way to make it select that text as well?
|
#6
|
||||
|
||||
![]()
Try:
Code:
Sub UpdateDocuments() Application.ScreenUpdating = False Dim strFolder As String, strFile As String, wdDoc As Document, Rng As Range strFolder = GetFolder If strFolder = "" Then Exit Sub strFile = Dir(strFolder & "\*.docx", vbNormal) While strFile <> "" If ThisDocument.FullName <> strFolder & "\" & strFile Then Set wdDoc = Documents.Open(FileName:=strFolder & "\" & strFile, AddToRecentFiles:=False, Visible:=False) With wdDoc For Each Rng In .StoryRanges Rng.Font.ColorIndex = wdBlack Next .Close SaveChanges:=True End With End If strFile = Dir() Wend Set wdDoc = Nothing Application.ScreenUpdating = True End Sub Function GetFolder() As String Dim oFolder As Object GetFolder = "" Set oFolder = CreateObject("Shell.Application").BrowseForFolder(0, "Choose a folder", 0) If (Not oFolder Is Nothing) Then GetFolder = oFolder.Items.Item.Path Set oFolder = Nothing End Function
__________________
Cheers, Paul Edstein [Fmr MS MVP - Word] |
#7
|
|||
|
|||
![]()
Thanks Paul! It worked! You're a life saver!!
![]() Would you happen to know if it's possible to create a separate macro which would convert all my docx files to pdfs (or create new ones) using the built in microsoft 'save to pdf' plugin? I keep trying to do it by selecting all the files in explorer and then right clicking and using adobe but it keeps crashing. |
#8
|
||||
|
||||
![]()
Saving to PDF is a trivial exercise. For example:
Code:
Sub UpdateDocuments() Application.ScreenUpdating = False Dim strFolder As String, strFile As String, wdDoc As Document strFolder = GetFolder If strFolder = "" Then Exit Sub strFile = Dir(strFolder & "\*.docx", vbNormal) While strFile <> "" If ThisDocument.FullName <> strFolder & "\" & strFile Then Set wdDoc = Documents.Open(FileName:=strFolder & "\" & strFile, AddToRecentFiles:=False, Visible:=False) With wdDoc .SaveAs FileName:=Split(.FullName, ".doc")(0) & ".pdf", FileFormat:=wdFormatPDF, AddToRecentFiles:=False .Close SaveChanges:=False End With End If strFile = Dir() Wend Set wdDoc = Nothing Application.ScreenUpdating = True End Sub Function GetFolder() As String Dim oFolder As Object GetFolder = "" Set oFolder = CreateObject("Shell.Application").BrowseForFolder(0, "Choose a folder", 0) If (Not oFolder Is Nothing) Then GetFolder = oFolder.Items.Item.Path Set oFolder = Nothing End Function
__________________
Cheers, Paul Edstein [Fmr MS MVP - Word] |
#9
|
|||
|
|||
![]()
Thanks Pete! Yup, that worked!!
I just realized that the previous macro for the text color is only changing the font color in the header that is on the first page. Each page has a table withing the header (with different characters in it), and the macro doesn't seem to be getting the characters in the tables past the first page. Is there a way to fix this? |
#10
|
||||
|
||||
![]()
Umm, hello - I'm not Pete...
Quote:
Code:
Sub UpdateDocuments() Application.ScreenUpdating = False Dim strFolder As String, strFile As String, wdDoc As Document, Rng As Range, Sctn As Section, HdFt As HeaderFooter strFolder = GetFolder If strFolder = "" Then Exit Sub strFile = Dir(strFolder & "\*.docx", vbNormal) While strFile <> "" If ThisDocument.FullName <> strFolder & "\" & strFile Then Set wdDoc = Documents.Open(FileName:=strFolder & "\" & strFile, AddToRecentFiles:=False, Visible:=False) With wdDoc For Each Rng In .StoryRanges Rng.Font.ColorIndex = wdBlack Next For Each Sctn In .Sections For Each HdFt In Sctn.Headers With HdFt If .LinkToPrevious = False Then .Range.Font.ColorIndex = wdBlack End With Next For Each HdFt In Sctn.Footers With HdFt If .LinkToPrevious = False Then .Range.Font.ColorIndex = wdBlack End With Next Next .Close SaveChanges:=True End With End If strFile = Dir() Wend Set wdDoc = Nothing Application.ScreenUpdating = True End Sub Function GetFolder() As String Dim oFolder As Object GetFolder = "" Set oFolder = CreateObject("Shell.Application").BrowseForFolder(0, "Choose a folder", 0) If (Not oFolder Is Nothing) Then GetFolder = oFolder.Items.Item.Path Set oFolder = Nothing End Function
__________________
Cheers, Paul Edstein [Fmr MS MVP - Word] |
#11
|
|||
|
|||
![]()
So sorry Paul!! My office mate is Pete!! I am doing a million things at once. Please accept my apologies. Will try running the new code right now and let you know.
|
#12
|
|||
|
|||
![]()
Yup, works like a charm Paul!! You're the boss!! Thank you so much!!
![]() |
#13
|
|||
|
|||
![]()
Hey Paul,
I'm trying this code, but I'm finding that it's not able to capture the content in the header tables after a page/section break. Can you please help with this? |
#14
|
||||
|
||||
![]()
The macro processes all headers & footers, including tables in them. The only tables it might not process in a header/footer is one that's in a textbox; but then I'd have to ask why you'd have such a table.
__________________
Cheers, Paul Edstein [Fmr MS MVP - Word] |
![]() |
|
![]() |
||||
Thread | Thread Starter | Forum | Replies | Last Post |
![]() |
Peter Carter | Word VBA | 27 | 12-15-2022 04:10 PM |
I can't change red text to black | Nathan8752 | Word | 1 | 10-12-2015 08:26 AM |
![]() |
expert4knowledge | Word VBA | 5 | 07-10-2014 03:54 PM |
![]() |
patidallas22 | Word VBA | 2 | 03-09-2012 08:14 AM |
Change cell color everytime a value is selected in dropdown list | angelica_gloria | Excel | 4 | 01-27-2012 06:47 PM |