J'ai une macro qui s'exécute pour transformer un document d'une seule page en un document de 5 pages (doubles NCR) pour tous les fichiers d'un dossier.

J'utilise un ensemble de champs IF imbriqués dans mon pied de page, ce qui modifie le pied de page en fonction du numéro de page. Le terrain ressemble à ça

Text here {If{PAGE}="1""Original"{If{PAGE}="2""Copy 1"
{If{PAGE}="3""Copy 2"{If{PAGE}="4""Copy 3"{If{PAGE}="5""Copy 4"}}}}} 
Other Text

J'essaie de comprendre comment ajouter ce pied de page à tous les documents d'un dossier. Il n'a pas besoin d'utiliser le champ, s'il existe un moyen basé simplement sur le numéro de page.

Je me suis cogné la tête contre le mur, j'ai cherché comme un fou, et maintenant je viens chapeau à la main.

La macro pour faire les duplicatas est :

Sub Make5CopiesNCR()

  vDirectory = BrowseForFolder

 vFile = Dir(vDirectory & "\" & "*.*")

Do While vFile <> ""

Documents.Open FileName:=vDirectory & "\" & vFile

MakeCopies

vFile = Dir
Loop

End Sub

End Sub

Private Sub MakeCopies()
Dim i As Integer
Selection.WholeStory
Selection.Copy
For i = 1 To 6
Selection.PasteAndFormat wdFormatOriginalFormatting
Next
With ActiveDocument
.GoTo What:=wdGoToPage, Which:=wdGoToAbsolute, Name:=6 'Page number
.Bookmarks("\Page").Select
With Selection
  .Delete
ActiveDocument.Close SaveChanges:=wdSaveChanges, OriginalFormat:=wdWordDocument
  End With
End With
End Sub
-2
Peter Koonz 5 févr. 2020 à 20:52

1 réponse

Meilleure réponse

Le problème avec l'utilisation d'un publipostage avec la construction de votre champ est qu'il est converti en résultat. Essayez un champ codé comme :

{={PAGE}-1 \# "'Copier {={PAGE}-1}';;'Original'"}

Maintenant, si vous créez les 5 pages requises dans votre document principal de publipostage, toutes les sorties seront également en multiples de 5 pages, avec la numérotation correcte des pages.

Même si vous utilisez un document principal de publipostage avec une seule page, les sorties auront le codage de champ requis pour produire la numérotation correcte pour le nombre de pages supplémentaires que vous souhaitez ajouter aux sorties.

Quant à la répliquer dans vos fichiers existants, créez simplement un document avec le contenu de pied de page requis, puis utilisez une macro comme :

Sub ReplicateFooter()
Application.ScreenUpdating = False
Dim DocSrc As Document, DocTgt As Document, Rng As Range
Dim StrPth As String, StrNm As String, StrSrc As String
Set DocSrc = ActiveDocument
Set Rng = DocSrc.Sections.First.Footers(wdHeaderFooterPrimary).Range
StrPth = DocSrc.Path & "\": StrSrc = DocSrc.FullName
StrNm = Dir(StrPth & "*.doc", vbNormal)
While StrNm <> ""
  If StrPth & StrNm <> StrSrc Then
    Set DocTgt = Documents.Open(FileName:=StrPth & StrNm, AddToRecentFiles:=False, Visible:=False)
    With DocTgt
      With .Sections.First.Footers(wdHeaderFooterPrimary).Range
        .FormattedText = Rng.FormattedText
        .Characters.Last.Text = vbNullString
      End With
      .Close True
    End With
  End If
  StrNm = Dir()
Wend
Set Rng = Nothing: Set DocTgt = Nothing: Set DocSrc = Nothing
Application.ScreenUpdating = True
End Sub
0
macropod 5 févr. 2020 à 22:22