2009-12-21 4 views
1

Dans Word (2003 ou 2007), existe-t-il un moyen d'utiliser un en-tête/pied de page Plusieurs documents?Un en-tête/pied de page central utilisé par plusieurs documents (Word 2003 ou 2007)

Je veux être en mesure de changer l'en-tête/pied de page en un seul endroit et qu'il affecte plusieurs documents.

C'est-à-dire que j'ai 50 documents et qu'ils ont tous le même en-tête/pied de page. Au lieu d'ouvrir les 50 documents pour effectuer le changement, existe-t-il un moyen de lier (OLE?) Les 50 documents à un document principal et de ne modifier que le document principal?

S'il n'y a pas de manière intégrée, est-ce que quelqu'un a fait cela en utilisant VBA?

Répondre

2

Je ne sais pas comment cela fonctionnera dans la pratique, mais vous pouvez insérer d'autres fichiers dans un document Word comme un lien.

Créez d'abord le document avec le contenu d'en-tête/pied de page, avec le contenu dans le corps du document. Sauvegarde le.

Ensuite, passez à l'un de vos 50 documents, allez dans l'en-tête/pied de page. Aller à INSERT | FICHIER. Recherchez le premier fichier, puis cliquez sur la petite flèche déroulante à côté du bouton OUVRIR dans la boîte de dialogue Insérer un fichier. Dans la liste déroulante, sélectionnez INSERT AS LINK. Le contenu devrait maintenant apparaître dans le document. Si vous cliquez dans le contenu, normalement il aura un fond gris, pour indiquer qu'il s'agit vraiment d'un champ Word. Maintenant, lorsque vous changez le premier document, vous pouvez ouvrir le deuxième document, mettre à jour le champ (cliquer n'importe où dessus et cliquer sur F9) et le nouveau contenu sera tiré. Vous pouvez également mettre à jour les champs facilement, ou sous OUTILS | OPTIONS | IMPRIMER, il y a une boîte pour mettre à jour automatiquement les champs à chaque fois que le document est imprimé.

+0

Merci beaucoup. Cela fonctionnera. Une note supplémentaire, dans Word 2007, l'insertion | L'emplacement du fichier a changé. Il se trouve maintenant dans l'onglet Insertion, dans le groupe Texte et s'appelle Objet. En cliquant dessus, vous ouvrez la boîte de dialogue Objet dans laquelle vous sélectionnez l'onglet "Créer à partir d'un fichier" et entrez le fichier .docx que vous souhaitez lier aussi. Il fonctionne très bien. Le prochain problème que je vois est que je veux partager ces documents, trois autres personnes et le lien a un chemin complet et je voudrais que ce soit un chemin relatif. –

+0

Je doute que vous puissiez faire quelque chose à ce sujet. Word aime stocker les chemins en utilisant UNC complet. –

1

AFAIK pour modifier un en-tête de documents (simplement) doit être fait en ayant le document ouvert. Cela dit, vous avez quelques options. Tout d'abord, si les documents sont enregistrés dans le format XML de bureau, vous pouvez ouvrir les fichiers à l'aide de la bibliothèque MSXML et modifier les données dans l'en-tête. (Ou l'une des dizaines d'autres façons de modifier ce qui est essentiellement un fichier texte.) Si le fichier (s) sont toujours au format binaire, vous avez vraiment seulement une des deux options. La première consiste à ouvrir le fichier via vba et à modifier l'en-tête via le modèle d'objet de document. La seconde consisterait à comprendre le format binaire (qui est documenté) et à le modifier en utilisant l'E/S binaire native VB6/VBA (très non trivial). À moins que je ne pensais pouvoir gagner plus de temps, j'allais perdre l'écriture du code pour modifier les documents directement. Je ferais probablement une boucle sur tout le fichier dans le dossier, les ouvrirais et les modifierais. Comme pour stocker l'en-tête quelque part ... Vous pouvez simplement mettre les données d'en-tête dans un fichier texte et l'insérer. Ou conserver un modèle de document quelque part.

Voici un exemple trivial:

Public Sub Example() 
    Dim asFiles() As String 
    Dim lFile As Long 
    Dim docCrnt As Word.Document 
    asFiles = GetFiles("C:\Test\", "*.doc") 
    For lFile = 0& To UBound(asFiles) 
     Set docCrnt = Word.Documents.Open(asFiles(lFile)) 
     docCrnt.Windows(1).View.SeekView = wdSeekCurrentPageHeader 
     Selection.Text = "I am the header." 
     docCrnt.Close True 
    Next 
End Sub 

Public Function GetFiles(_ 
    ByVal folderPath As String, _ 
    Optional ByVal pattern As String = vbNullString _ 
    ) As String() 

    Dim sFile As String 
    Dim sFolder As String 
    Dim asRtnVal() As String 
    Dim lIndx As Long 

    If Right$(folderPath, 1&) = "\" Then 
     sFolder = folderPath 
    Else 
     sFolder = folderPath & "\" 
    End If 
    sFile = Dir(sFolder & pattern) 
    Do While LenB(sFile) 
     ReDim Preserve asRtnVal(lIndx) As String 
     asRtnVal(lIndx) = sFolder & sFile 
     lIndx = lIndx + 1& 
     sFile = Dir 
    Loop 
    If lIndx = 0& Then 
     ReDim asRtnVal(-1& To -1&) As String 
    End If 
    GetFiles = asRtnVal 
    Erase asRtnVal 
End Function 
Questions connexes