2009-09-21 18 views
3

J'ai un module qui crée un fichier Visio (VDX) en dehors de Visio. Selon le SDK, cela fait référence à du XML «non fiable». J'ai créé mon fichier xml en copiant les Masters à partir de mon stencil, puis je me suis référé à eux en utilisant un fichier XML sparse.Comment forcer visio à ré-évaluer des formules lorsqu'un document visio non approuvé est ouvert

Dans mon xml clairsemés-je remplacer l'emplacement de la forme et la taille de cette façon:

<Shape ID="154" Master="0"> 
     <Text>Text of the shape</Text> 
     <XForm> 
     <PinX>2.90625</PinX> 
     <PinY>3.895833333333333</PinY> 
     <Width F="No Formula">0.75</Width> 
     <Height F="No Formula">0.5</Height> 
     </XForm> 
</Shape> 

Ma forme est un groupe qui a des sous-formes.

Cela fonctionne, Visio est capable de l'ouvrir, mais les sous-formes a la largeur et la hauteur par défaut du maître. Les liens entre les formes ne sont pas routés correctement.

Si je copie/colle le même nouveau fichier, alors j'obtiens le résultat attendu.

J'ai essayé de forcer la largeur et la hauteur des sous-formes. J'ai le même problème.

J'ai essayé d'utiliser le code VBA à l'ouverture du document en appelant explicitement la méthode trigger() de la classe Cell et j'obtiens les résultats attendus. Cela fonctionne aussi, j'ouvre la feuille de forme. La valeur est là en noir, je viens d'appuyer sur Entrée sur la cellule, et j'obtiens aussi le résultat attendu.

Ma compréhension du problème, c'est que visio n'évalue pas les formules de mes sous-formes lorsque j'ouvre le document.

Malheureusement, je ne peux pas compter sur des macros pour forcer et mettre à jour les cellules. J'aimerais savoir s'il existe un moyen de réévaluer les formules de mes sous-formes lorsque j'ouvre mon document.

Merci d'avance.

Eric

Répondre

0

Basé sur http://blogs.office.com/2013/01/29/10-tips-for-developers-working-with-the-visio-vsdx-file-format/

utiliser le drapeau RecalcDocument dans la partie docPropscustom.xml. Cela entraînera un recalcul complet, similaire au comportement de chargement du VDX, mais ralentira également considérablement la charge. Une fois le fichier recalculé et chargé, la sauvegarde suivante supprime l'indicateur RecalcDocument du document. Cela limitera la performance atteinte à un seul chargement de fichier. Un exemple de la partie custom.xml avec l'indicateur RecalcDocument est illustré ci-dessous.

Questions connexes