2010-03-02 10 views
7

Je dois utiliser l'espace de noms Microsoft.Office.Interop.Word pour extraire si un document Word contient des macros et lesquels. La documentation MSDN pour cet espace de noms ne donne pas beaucoup d'informations par rapport à la documentation sur d'autres classes .Net. Où puis-je obtenir plus d'informations sur ces espaces de noms (exemples, documentation complète, etc.). J'ai déjà cherché sur Google et SO mais je n'ai pas beaucoup d'informations.Documentation Microsoft.Office.Interop.Word

+0

Quelle version d'Office? –

+0

@ rold2007: je voulais juste vérifier pour voir si la réponse ci-dessous répond à votre question. –

+0

@Otaku: Les trois réponses à ce jour sont intéressantes, mais le développement de cette application n'a pas encore commencé alors je ne peux pas dire si ce que j'ai besoin de développer est faisable ou non. Je reviendrai ici quand mes tests seront terminés. – rold2007

Répondre

0

Microsoft.Vbe.Interop est l'espace de noms pour VBA. (VBE est Visual Basic pour Application Extensibility 5.3.) Les mots clés pour vous aider à rechercher sont VBProject, VBComponent et CodeModule. MSDN Search for VBProject vous aidera à démarrer. http://social.msdn.microsoft.com/Search/en-US?query=VBProject&ac=8.

L'article suivant est pour VBA, mais il est facilement converti. WD2000: Exemple de macro pour renvoyer la macro et les noms de procédure à http://support.microsoft.com/kb/262961.

+0

Attendez une exception "L'accès par programmation au projet Visual Basic n'est pas approuvé." quand vous essayez ceci. Google le message d'erreur pour plus d'informations. (Vous trouverez également des personnes qui essaient de faire la même chose que vous!) – MZB

+0

Vous pouvez modifier cela via la sécurité des macros dans l'onglet "Éditeurs approuvés". En outre, l'ajout d'un certificat au projet avec le paramètre de sécurité de macro approprié ignore ce message. – AMissico

-1

La majeure partie de la documentation se trouve dans le fichier d'aide VBA livré avec Microsoft Word - pour Microsoft Word 2003, recherchez un fichier VBAWD10.CHM. Vérifiez également la référence Microsoft Office Visual Basic (VBAOF11.CHM)

10 et 11 dans ce qui précède sont des numéros de version Word et Office - de sorte que votre kilométrage varie en fonction de la version de Word que vous avez installé. De plus, le nommage n'est pas cohérent dans toutes les versions de Word, donc une recherche de tout ce que VBA * .CHM va probablement faire apparaître la plupart de la documentation dont vous avez besoin.

Ceux-ci répondront à la plupart de vos questions sur l'API Word.

Impossible de trouver une façon évidente de trouver la liste des macros dans un document ouvert ou un modèle, cependant ... S'il vous plaît ajouter un commentaire à cette réponse si vous trouvez une méthode, que je serais intéressé de savoir .

(Notez que chaque appel peut déclencher une exception lors de l'utilisation de Word Interop .. Si Word a une boîte de dialogue modale ouverte, vous obtiendrez une exception, par exemple.

+0

@unknown - Si vous décidez de décliner quelque chose, il serait utile de savoir pourquoi la réponse n'était pas utile. (Ayant fait quelque chose de très similaire à @ rold2007 et recherché la même documentation, je serais intéressé de savoir s'il existe une meilleure source d'information). – MZB

+0

Comme le suggère @AMissico, la propriété Application.VBE peut être l'endroit à regarder. – MZB

+0

Seulement une supposition, car il n'y a qu'une seule réponse à cette question. J'imagine que le vote négatif est dû à votre référence aux références de modèles d'objets Office et Word et non aux références VBA/VBE. De plus, peut-être parce que vous faites référence à VBA au lieu d'un espace de noms .NET. – AMissico

3

Il n'y a pas de bonne documentation. Les seules ressources sont le MSDN (quiet bad) et certains blogs. Peut-être que vous pouvez trouver des informations ici: http://blogs.msdn.com/mshneer/

3

La bonne réponse est de vérifier la propriété Document.HasVBProject. Pour citer la section Remarques: "Cette propriété est très utile pour déterminer par programmation si un document doit être enregistré dans un format de fichier compatible avec les macros.S'il est enregistré dans un autre format, les macros et les projets de code contenus dans le document peuvent être perdu."