![]() |
|
|||||||
|
|
|
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] |
|
|
|
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 |
| I can't change red text to black | Nathan8752 | Word | 1 | 10-12-2015 08:26 AM |
macro to change name of files in a folder in order
|
expert4knowledge | Word VBA | 5 | 07-10-2014 03:54 PM |
Word Macro - change date in footer for all files in a folder
|
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 |