1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119
| Public Sub BatchPDF()
'Pour transformer tout un répertoire en PDF
'Demande à l'utilisateur quel est le répertoire Source et quel est le répertoire Destination
Application.ScreenUpdating = False
Dim myFile As String 'Mon fichier Word
Dim strDoc As String 'Mon nom de fichier PDF
Dim strRepertoireDoc As String 'Répertoire sélectionné par l'utilsateur pour l'endroit des Word
Dim strRepertoirePDF As String 'Répertoire sélectionné par l'utilsateur pour où sauvegarder PDF
Dim strAnswerA As String
Dim fDialog As FileDialog 'La Boîte de dialogue de répertoire
Set fDialog = Application.FileDialog(msoFileDialogFolderPicker)
'Error handler
On Error Resume Next
'Demande de sélectionner le répertoire où se trouvent les documents
strAnswerA = MsgBox( _
"TOUS les documents du répertoire que vous sélectionnerez seront convertis en PDF (sans écraser la version Word)." _
& vbCrLf & "ET" & vbCrLf & _
"Si des documents existent dans le répertoire destination et qu'ils portent le même nom, ils seront ÉCRASÉS." _
& vbCrLf & vbCrLf & "Voulez-vous continuer?", vbYesNo, _
"JoeBine ou Autre?")
If strAnswerA = vbYes Then
'Ouvre la boîte de dialogue pour choisir un répertoire avec par défaut Autre
With fDialog
.Title = "Sélectionnez le répertoire où se trouvent les documents Word (Source)"
.AllowMultiSelect = False
.InitialFileName = "c:\Autre"
.InitialView = msoFileDialogViewList
If .Show <> -1 Then 'Si l'utilisateur appuie sur "Annuler"
MsgBox "Annulé par l'utilisateur", , _
"Macro annulée"
Exit Sub
End If
strRepertoireDoc = fDialog.SelectedItems(1)
If Right(strRepertoireDoc, 1) <> "\" _
Then strRepertoireDoc = strRepertoireDoc + "\"
End With
Else: Exit Sub
End If
strAnswerA = 0
'Demande de sélectionner le répertoire où sauvegarder
strAnswerA = MsgBox("Voulez-vous sauvegarder directement dans les répertoire de JoeBine?", vbYesNoCancel, _
"JoeBine ou Autre?")
If strAnswerA = vbYes Then
'Ouvre la boîte de dialogue pour choisir un répertoire avec par défaut répertoire de JoeBine
With Application.FileDialog(msoFileDialogFolderPicker)
.Title = "Sélectionnez le répertoire où SAUVEGARDER les documents PDF (Destination)"
.AllowMultiSelect = False
.InitialFileName = "c:\temp\"
If .Show <> -1 Then 'Si l'utilisateur appuie sur "Annuler"
MsgBox "Annulé par l'utilisateur", , _
"Macro annulée"
Exit Sub
End If
strRepertoirePDF = .SelectedItems(1)
If Right(strRepertoirePDF, 1) <> "\" _
Then strRepertoirePDF = strRepertoirePDF + "\"
End With
Else
'Ouvre la boîte de dialogue pour choisir un répertoire avec par défaut Ailleur
With Application.FileDialog(msoFileDialogFolderPicker)
.InitialFileName = "c:\autre\"
.Title = "Sélectionnez le répertoire où SAUVEGARDER les documents PDF (Destination)"
.AllowMultiSelect = False
If .Show <> -1 Then 'Si l'utilisateur appuie sur "Annuler"
MsgBox "Annulé par l'utilisateur", , _
"Macro annulée"
Exit Sub
End If
strRepertoirePDF = .SelectedItems(1)
If Right(strRepertoirePDF, 1) <> "\" _
Then strRepertoirePDF = strRepertoirePDF + "\"
End With
End If
'Set the directory and type of file to batch process
myFile = Dir$(strRepertoireDoc & "*.doc*")
While myFile <> ""
WordBasic.DisableAutoMacros 1 'Disables auto macros
'Open document
Documents.Open (strRepertoireDoc & "\" & myFile)
'Détermine le nom à donner au fichier pdf
strDoc = Left(myFile, Len(myFile) - 4)
strDoc = strRepertoirePDF & strDoc & ".pdf"
'Envoie à "l'impression" PDF
ActiveDocument.ExportAsFixedFormat outputFileName:=strDoc _
, exportFormat:=wdExportFormatPDF, OpenAfterExport:=False, OptimizeFor:= _
wdExportOptimizeForPrint, Range:=wdExportAllDocument, From:=1, To:=1, _
Item:=wdExportDocumentContent, IncludeDocProps:=True, KeepIRM:=True, _
CreateBookmarks:=wdExportCreateNoBookmarks, DocStructureTags:=True, _
BitmapMissingFonts:=True, UseISO19005_1:=False
'Ferme le fichier Word sans sauvegarder
ActiveDocument.Close wdDoNotSaveChanges
'Next file in folder
myFile = Dir$()
Wend
WordBasic.DisableAutoMacros 0 'Enables auto macros
On Error GoTo 0 ' resume normal error handling
End Sub |
Partager