Word Macro - couleur + pdf
Bonjour à tous,
Je cherche à mettre en place une macro dans Word pour qu'elle traite tous les .docx d'un fichier pour :
- mettre la totalité du texte en noir
- enregistrer la modification
- enregistrer sous le document au format pdf dans le même dossier avec le même nom
Idéalement j'aimerais qu'aucun document ne s'ouvre. Mais je pense que ce n'est pas possible du fait de la première étape de changement de couleur.
Je débute en VBA, j'ai essayé de bricoler quelque chose mais ce n'est pas tout à fait concluant. Le fichier est bien ouvert, tout est sélectionné et pourtant j'ai un message d'erreur qui apparaît à la ligne de sélection me disant qu'un objet est requis.
Voici mon code :
Sub DisplaySheetsProtecClasseur()
Dim fichier As Object
'Dim FileName As String
'Dim NameDOCX As String
'Dim NamePDF As String
Dim chemin As String
'Dim WordDoc As String
'NameDOCX = Name & ".docx"
'NamePDF = Name & ".pdf"
chemin = ThisWorkbook.Path
'WordDoc = chemin & "\" & NameDOCX
'PDFDoc = chemin & "\" & NamePDF
Dim objWordApp As Object
Set objWordApp = CreateObject("Word.Application")
objWordApp.Application.ChangeFileOpenDirectory chemin
Dim dossier As Object
Set Fso = CreateObject("Scripting.FileSystemObject")
'identifier le dossier
Set dossier = Fso.getfolder(chemin)
Application.ScreenUpdating = False 'pour accélérer l'exécution de la macro, empêche la mise à jour de l'écran
For Each fichier In dossier.Files 'pour chaque fichier
If fichier.Path Like "*.docx" Then
With objWordApp
.Visible = True
.Documents.Open fichier.Name
End With
With objWordApp.ActiveDocument 'avec le fichier en cours, ouvert à l'instant
.Select.Range
.Selection.Wrd.Font.Color = wdColorBlack
.ExportAsFixedFormat OutputFileName:=fichier, ExportFormat:=wdExportFormatPDF
.Close
End With
End If
Next
Application.ScreenUpdating = True
MsgBox ("Tous les documents sont enregistrés en pdf.")
End Sub
L'erreur apparaît à la ligne :
.Select.Range
Pour la suite je ne sais pas encore si ça fonctionne...
Je vous remercie pour votre lecture et votre aide !
PS : J'ai fait un Edit à 17h16 parce que j'ai quand même bien avancé.
Bonjour à tous,
J'ai pu continuer à travailler sur mon projet.
J'ai construit une macro qui fonctionne lancée depuis Excel (il y a surement plus simple et plus propre). Mais ça fonctionne donc ça me convient !
Je glisse le code ici pour ceux que ça intéresse et je place le sujet en résolu.
A bientôt !
Sub WordenPDF()
Dim fichier As Object
Dim chemin As String
chemin = ThisWorkbook.Path
Dim nfichier As String, intpos As Byte
'pour ouvrir Word car lancée depuis classeur Excel
Dim objWordApp As Object
Set objWordApp = CreateObject("Word.Application")
objWordApp.Application.ChangeFileOpenDirectory chemin
Dim dossier As Object
Set Fso = CreateObject("Scripting.FileSystemObject")
'identifier le dossier
Set dossier = Fso.getfolder(chemin)
Application.ScreenUpdating = False 'pour accélérer l'exécution de la macro, empêche la mise à jour de l'écran
For Each fichier In dossier.Files 'pour chaque fichier
If fichier.Path Like "*.docx" Then
With objWordApp
.Visible = True
.Documents.Open fichier.Name
End With
If objWordApp.ActiveDocument.ProtectionType = wdAllowOnlyRevisions Then
objWordApp.ActiveDocument.Unprotect Password:="asp"
End If
'trouve la position de l'extension
intpos = InStrRev(fichier.Name, ".")
nfichier = Left(fichier.Name, intpos - 1)
With objWordApp.ActiveDocument
.Range.Select
.Range.Font.ColorIndex = wdColorBlack
.ExportAsFixedFormat OutputFileName:=nfichier, ExportFormat:=17, OpenAfterExport:=False '17 = PDF
'.Save
.Close
End With
End If
Next
Application.ScreenUpdating = True
MsgBox ("Tous les documents sont enregistrés en pdf.")
End Sub