2009-04-17 10 views
5

Je dois stocker des métadonnées personnalisées dans un document Word. Les 'propriétés du document' sont limitées à 255 octets mais j'ai des données qui sont >> 10kStockage de métadonnées arbitraires dans un document Microsoft Word

Nous utilisons VBA pour écrire une extension de mot pour interagir avec notre application et voulons que nos données d'application soient stockées dans le document Word. L'idée est que l'utilisateur peut partager uniquement le document Word sans partager d'autres fichiers de données de notre application.

Est-ce que quelqu'un a des idées pour stocker efficacement des métadonnées arbitraires dans des documents Office 2003+?

Répondre

8

juste essayé ceci dans l'éditeur VBA fenêtre immédiate:

ActiveDocument.Variables.Add "foo", String(10000, ".") 

? Len(ActiveDocument.Variables("foo")) 
10000 

Les variables de document sont stockées avec le document. Ils semblent aller jusqu'à 65280 caractères Unicode, comme je viens de le découvrir (testé dans Word 2003; Mise à jour: Cette limite est la même dans Word 2007 et 2010).

Si vous craignez de vous rapprocher des 60k pour vos données, je vous recommande soit de le diviser sur plusieurs variables, soit de le compresser avant de le stocker. This post montre quelques options pour le faire dans VBA.

2

Il adapte pas exactement à vos besoins car il ne fonctionne pas avec Word 2003. Toutefois, il pourrait encore être intéressant de vous (sinon je vous recommande d'utiliser des variables de document comme suggéré par Tomalak):

Dans Word 2007 (et plus tard) vous pouvez incorporer des documents XML arbitraires dans un document Word comme Custom XML.

Un exemple est décrit dans cet article sur MSDN: How to: Add Custom XML Parts to Documents by Using VSTO Add-Ins