Lister les champs de fusion présent sur un document
fyl66
Messages postés4Date d'inscriptionlundi 1 juin 2009StatutMembreDernière intervention 1 juin 2009
-
1 août 2008 à 15:36
fyl66
Messages postés4Date d'inscriptionlundi 1 juin 2009StatutMembreDernière intervention 1 juin 2009
-
3 août 2008 à 17:16
Bonjour,
Je souhaite lister les champs de fusion présents dans un document word depuis une macro.
Je code l'instruction suivante:
ii = ActiveDocument.MailMerge.Fields.Count
for jj = 1 to ii
msgbox (ActiveDocument.MailMerge.Fields(ii).code)
next
Cela marche bien: j'arrive en effet à récupérer le nom des champs. Mais uniquement ceux présents dans le corps principal du document.
En effet, je ne récupère pas les champs éventuellement présents dans l'entête et pied de page ainsi que ceux confinés dans des zones de texte.
Quel code dois-je envisager afin de récupérer TOUS les champs de fusion du document?
Merci de vos aides.
A voir également:
Lister les champs de fusion présent sur un document
cs_loulou69
Messages postés672Date d'inscriptionmercredi 22 janvier 2003StatutMembreDernière intervention 2 juin 20161 1 août 2008 à 15:51
' Afficher le document en mode page pour pouvoir accéder aux entêtes et pieds de page
If ActiveWindow.ActivePane.View.Type <> wdPrintView Then
ActiveWindow.ActivePane.View.Type = wdPrintView
End If
fyl66
Messages postés4Date d'inscriptionlundi 1 juin 2009StatutMembreDernière intervention 1 juin 2009 3 août 2008 à 16:20
Bonjour,
Merci de votre réponse rapide.
Cependant, même en affichant le doc en mode page, mon instruction ne me renvoie toujours pas les champs dans l'entête, le pied ou des zones de texte.
Je suis embêté car j'ai besoin de lister TOUS les champs de fusion d'un doc avant de réaliser le processus de publipostage.
fyl66
Messages postés4Date d'inscriptionlundi 1 juin 2009StatutMembreDernière intervention 1 juin 2009 3 août 2008 à 17:16
Rebonjour,
Je viens de trouver une partie de la solution.
rem Champs du corps du document-------------------------
For Each aField In ActiveDocument.MailMerge.Fields
MsgBox ("Corps:" + Chr(13) + aField.Code)
Next aField
rem Champs du pied-----------------------------------------
Set myRange = ActiveDocument.Sections(1).Footers
(wdHeaderFooterPrimary).Range
For Each aField In myRange.Fields
MsgBox ("Pied:" + Chr(13) + aField.Code)
Next aField
rem Champs de l'entête -------------------------------------
Set myRange = ActiveDocument.Sections(1).Headers(wdHeaderFooterPrimary).Range
For Each aField In myRange.Fields
MsgBox ("EnTête:" + Chr(13) + aField.Code)
Next aField
rem Champs éventuellement présents dans des zones de textes
For Each s In ActiveDocument.Shapes
With s.TextFrame
If .HasText Then
s.Select
ii = Selection.Fields.Count
For jj = 1 To ii
MsgBox ("Zones Textes:" + Chr(13) + Selection.Fields(jj).Code)
Next
End If
End With
Next
Dernière question.
Comment annuler ma sélection à la fin du traitement? (le s.select sélectionne en effet une zone de texte et je voudrais annuler cette sélection)
Merci.