Comment trouver des variables de document dans MS Word sans utiliser de macro

10

J'ai un document contenant des variables de document et j'essaie d'utiliser ces variables dans le document. Mais comme les variables sont définies par un système externe (qui n'est pas bien documenté), je joue à un jeu de devinettes. Je suppose qu'une variable avec la "date de la dernière révision" existe et je commence à deviner comment cette variable a pu être appelée.

Existe-t-il un moyen de répertorier toutes les variables de document dans un document MS Word et leurs valeurs afin que l'on puisse les rechercher lors de leur utilisation dans le document? (Je travaille sur MS Office 2010)

un utilisateur
la source

Réponses:

13

Word a un certain nombre de types différents de "variables", Il y a des choses connues comme "Variables de document", mais il y a d'autres choses que j'appellerai "propriétés" - J'essaierai d'énumérer les principaux types ci-dessous.

Il y a quelques endroits dans Word que vous pouvez rechercher pour trouver certains types de propriétés, mais pour les vraies "variables" et autres types de propriétés, si vous ne pouvez pas utiliser de macros ou autre code, vous devrez décompresser le fichier .docx et regardez les différents fichiers là-dedans.

Lieux que vous pouvez consulter dans Word 2010 (aucune variable de document n'est affichée ici) ...

une. Dans "Backstage" - regardez l'onglet Fichier, option Info, et vous devriez voir certaines propriétés répertoriées sur la droite. Cliquez sur "Afficher toutes les propriétés" en bas de la liste et vous pouvez en voir plus.

b. Dans l'onglet Insertion, groupe Texte, Pièces rapides-> Propriétés, vous devriez voir une liste de "Propriétés intégrées + certaines ou toutes les propriétés insérées par Sharepoint si c'est ce que vous utilisez.

c. Dans le "Document Information Panel" (DIP). Si vous ne voyez pas cela, allez dans le menu Fichier puis Options, puis (disons) Barre d'outils d'accès rapide. Sélectionnez "Choisir les commandes" sous "Toutes les commandes", puis recherchez "Propriétés", sélectionnez-le et cliquez sur le bouton Ajouter. Vous devriez alors voir une icône dans la barre d'outils d'accès rapide qui a un petit «i» blanc sur un fond bleu circulaire. Cliquez dessus, et vous devriez voir des propriétés intégrées (Auteur, Titre, etc.) ou des propriétés de type de contenu Sharepoint, si vous utilisez SharePoint. Vous pourrez peut-être basculer entre plusieurs vues. Si vous cliquez ensuite sur le menu déroulant en haut à gauche du DIP et choisissez "Propriétés avancées", vous verrez une boîte de dialogue multi-onglets qui affiche

  • quelques propriétés "intégrées"

  • Propriétés de document personnalisées «définies par l'utilisateur» à l'ancienne.

Pour tout le reste, vous devrez probablement chercher dans le XML dans le .docx. Pour ce faire, faites une copie de votre document. Disons que la copie s'appelle mydoc.docx. Renommez cela en mydoc.docx.zip, ouvrez le zip, puis recherchez un certain nombre de choses, comme suggéré ci-dessous ...

une. true Les variables de document sont stockées dans le dossier word, dans settings.xml, dans un élément appelé w: docVars. Vous devriez voir un nom et une valeur pour chaque variable. Vous pouvez insérer les valeurs des variables de document dans votre document à l'aide d'un champ {DOCVARIABLE variablename}.

b. Propriétés intégrées du document, y compris des éléments tels que l'auteur, le titre, etc. Dans la plupart des cas, les valeurs peuvent être insérées dans le document à l'aide de champs spécialisés tels que {AUTEUR} ou, dans certains cas, des champs {DOCPROPERTY}. Bien que ce soit un peu compliqué, il existe une liste standard de noms. Vous pouvez trouver la plupart des valeurs dans le dossier docProps dans les fichiers core.xml et app.xml. Cependant, certains (les "Propriétés de la page de garde") sont stockés, s'ils sont utilisés, dans l'un des fichiers "item.xml" (par exemple "item1.xml" dans le dossier customXml.

c. des propriétés de document personnalisé "définies par l'utilisateur" à l'ancienne qui consistent principalement en des paires nom / valeur dont les valeurs peuvent être insérées dans le document à l'aide des champs {DOCPROPERTY}, par exemple {DOCPROPERTY mycustomproperty}. Ceux-ci sont affichés dans la boîte de dialogue Propriétés avancées ...., mais dans le .docx, ils se trouvent dans le fichier custom.xml du dossier docProps.

ré. propriétés personnalisées de nouveau style, également appelées «propriétés Sharepoint» ou «propriétés de type de contenu», car elles sont souvent créées et remplies à partir des colonnes d'une liste Sharepoint. Les valeurs sont stockées dans des "parties XML personnalisées" et peuvent être insérées à l'aide des contrôles de contenu qui ont été configurés pour pointer vers le bit XML approprié. (Word 2007 et versions ultérieures uniquement). Dans le .docx, vous trouverez un certain nombre de "schémas" pour ces variables, et les valeurs des variables dans le dossier customXML, dans les fichiers nommés "item1.xml", "item2.xml" etc.

e. enfin, tout développeur peut mettre ses propres parties XML personnalisées dans un document Word et connecter les contrôles de contenu aux éléments et attributs de ces parties XML personnalisées. Je n'essaierai pas d'entrer dans les détails de la façon dont cela est fait, mais vous trouverez les données dans les fichiers item1.xml, item2.xml etc. sous customXML. Cependant, pour trouver les contrôles de contenu eux-mêmes, leurs noms et ce à quoi ils sont également connectés, vous devez généralement rechercher dans le dossier word, par exemple document.xml, et peut-être un ou plusieurs des "en-tête" et "pied de page". fichiers xml.

Chris
la source
Très bonne réponse. Merci! Une note: "b. Dans l'onglet Insertion, groupe Texte, Quick Parts-> Propriétés, vous devriez voir une liste de" Propriétés intégrées + certaines ou toutes les propriétés insérées par Sharepoint si c'est ce que vous utilisez. "Dans ma configuration Quick Parts ne semble pas avoir de "Propriétés"
un utilisateur
Mon erreur - qui devrait être Quick Parts-> Propriété du document
Les propriétés et les DocVariables semblent assez similaires dans la façon dont vous pouvez les utiliser dans les champs de mots et VBA. Y a-t-il des compromis?
BenPen
5

J'avais un problème similaire. Une boîte à outils tierce plantait et j'avais besoin de définir une valeur variable.

C'est un peu grossier mais voici du code VBA que j'ai créé qui listera toutes les variables de la ActiveDocument.Variablescollection;

Public Sub ListAllVariables()
    Dim V As Variable, S As String
    For Each V In ActiveDocument.Variables
        S = S & V.Name & vbTab & V.Value & vbNewLine
    Next V
    MsgBox S
End Sub

Vous pouvez créer une nouvelle macro et la vider dedans, ce qui devrait vous donner les informations. Lorsque vous avez trouvé le nom de la variable qui vous intéresse, vous pouvez le définir avec

ActiveDocument.Variables("MyVariable") = "Value"
Steztric
la source
2
C'est plutôt cool, merci. Il est dommage que Microsoft n'ait pas fourni une sorte de fenêtre de sélection pré-emballée que vous lui donniez une collection et vous obtenez une fenêtre pop-up à deux colonnes qui vous permet de sélectionner un ou plusieurs éléments de la collection (ou ajouter une nouvelle valeur à la collection réelle), puis permet à votre code VBA d'accéder aux éléments sélectionnés dans la sous / fonction appelante.
BenPen