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 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156
|
Sub TraiterTsDocsDuRepertoire()
'##################################################################
'Macro développée par Souriane grâce à l'aide inestimable de
'Développez.com et particulièrement Heureux-Oli depuis de très nombreuses années!
'Le code va passer à travers de tous les documents .doc* d'un répertoire donné
'Et exécuter la macro désirée sur chacun des documents.
'##################################################################
Dim monFichier As String
Dim PathToUse As String
Dim myDoc As Document
Dim Response As Long
'---------À adapter ici : -------------------------
''Indiquer ici le nom du répertoire où se trouvent les document à imprimer
PathToUse = "C:\temp\1234\"
''Gestion de l'erreur
On Error Resume Next
''Ferme tous les documents avant de commencer
Documents.Close savechanges:=wdPromptToSaveChanges
''Chacun leur tour, la variable monFichier sera attribuée aux fichiers du répertoire déterminé.
monFichier = Dir$(PathToUse & "*.doc*")
''Tant que la variable monFichier n'est pas vide, ce qui suit va se répéter en boucle
While monFichier <> ""
''Désactive les macros automatiques sur ouverture
WordBasic.DisableAutoMacros 1
''Ouvre le document
Set myDoc = Documents.Open(PathToUse & monFichier)
'---------À adapter ici : -------------------------
''Procédure à exécuter ici - il pourrait s'agir d'une autre macro que celle suggérée. En autant qu'elle referme le document à la fin.
InsereNomFichierSurLaPage
''Passe au fichier suivant dans le répertoire
monFichier = Dir$()
Wend
WordBasic.DisableAutoMacros 0
On Error GoTo 0
End Sub
Sub InsereNomFichierSurLaPage()
'##################################################################
'''Macro développée par Souriane grâce à l'aide inestimable de
'''Développez.com et particulièrement Heureux-Oli depuis de très nombreuses années!
'Le code insère le nom du fichier et son nom de répertoire dans une forme rectangulaire
'placée dans le coin inférieur droit à 1,5 cm de la marge inférieure du document.
'La forme semi-transparente cachera masquera légèrement le texte pouvant se trouver dans 'cette zone
'##################################################################
''Gèle la mise à jour de l'écran
Application.ScreenUpdating = False
''Enlève la protection sur le document s'il y a lieu
If ActiveDocument.ProtectionType <> wdNoProtection Then
ActiveDocument.Unprotect Password:=""
Else
End If
Dim MaForm As Shape 'La forme qui contiendra le chemin d'accès
'Insère une forme rectangulaire qui contiendra le nom du fichier
Set MaForm = ActiveDocument.Shapes.AddTextbox(msoTextOrientationHorizontal, CentimetersToPoints(0), CentimetersToPoints(0), CentimetersToPoints(18), CentimetersToPoints(2))
With MaForm
.Fill.Solid
.Fill.Transparency = 0.75 'Transparence de la forme
.Line.Weight = 0.75
.Line.DashStyle = msoLineSolid
.Line.Style = msoLineSingle
.Line.Transparency = 0#
.Line.Visible = msoFalse
.LockAspectRatio = msoFalse
.height = 60.9
.Width = 510.5
.RelativeHorizontalPosition = wdRelativeHorizontalPositionPage
.Left = wdShapeRight
.TextFrame.MarginLeft = 0#
.TextFrame.MarginRight = 20
.TextFrame.MarginTop = 0#
.TextFrame.MarginBottom = 0#
.LockAnchor = False
.LayoutInCell = False
.WrapFormat.AllowOverlap = False
.WrapFormat.Side = wdWrapBoth
.WrapFormat.DistanceTop = InchesToPoints(0)
.WrapFormat.DistanceBottom = InchesToPoints(0)
.WrapFormat.DistanceLeft = InchesToPoints(0.13)
.WrapFormat.DistanceRight = InchesToPoints(0.13)
.WrapFormat.Type = 3
.ZOrder 4
.TextFrame.AutoSize = False
.TextFrame.WordWrap = True
End With
MaForm.Select
''Appuie le texte à droite et s'assure du format 0 pt avant et après.
With Selection.ParagraphFormat
.Alignment = wdAlignParagraphRight
.LineUnitBefore = 0
.LineUnitAfter = 0
End With
''Mise en forme du nom du fichier
Selection.Font.name = "Arial"
Selection.Font.Bold = True
Selection.Font.Size = 14
'NOTE : je ne sais pas pourquoi mais sans l'insertion d'un retour, la macro ne fonctionne pas...
Selection.TypeParagraph
'Insère le nom du fichier
Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:= _
"FILENAME ", PreserveFormatting:=True
Selection.MoveUp Unit:=wdLine
Selection.HomeKey Unit:=wdLine
Selection.TypeBackspace
Selection.EndKey Unit:=wdLine
Selection.MoveDown Unit:=wdLine
Selection.TypeParagraph
''Insère le nom du fichier au long
Selection.Font.Size = 8
Selection.Font.Bold = False
Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:= _
"FILENAME \p ", PreserveFormatting:=True
Selection.TypeParagraph
MaForm.RelativeVerticalPosition = wdRelativeVerticalPositionPage
MaForm.Top = wdShapeBottom
''Si un erreur tel "marge trop proche", va ignorer l'erreur
On Error Resume Next ' ignore printing errors
''Lancement de l'impression
Application.PrintOut Background:=True, Range:=wdPrintAllDocument
''Ferme sans sauvegarder
ActiveDocument.Close wdDoNotSaveChanges
End Sub |
Partager