2010-02-26 8 views
1

Je souhaite supprimer tous les modules vba d'un modèle MS Word à l'aide de VBScript. J'ai écrit le script suivant.Supprimer une macro MS Word à l'aide de VBScript


const wdDoNotSaveChanges = 0 

WScript.Echo "starting Word..." 
Dim oApplication, doc 
Set oApplication = CreateObject("Word.Application") 

WScript.Echo "opening template..." 
oApplication.Documents.Open "path\to\test.dot" 
Set doc = oApplication.ActiveDocument 

Dim comp, components 
Set components = oApplication.ActiveDocument.VBProject.VBComponents 
For Each comp In components 
    components.Remove comp 
Next 

WScript.Echo "exiting..." 

doc.close wdDoNotSaveChanges 
oApplication.Quit wdDoNotSaveChanges 

Lors de l'exécution du code similaire dans un module VBA dans Word, qui fonctionne, mais quand je lance ce VBScript, je reçois cette erreur: test.vbs(14, 2) Microsoft VBScript runtime error: Invalid procedure call or argument

+1

Pourquoi ne pas le supprimer de VBA? –

+0

Avez-vous donné la permission d'accéder au projet VBA? Cela est effectué via une case à cocher ("Autoriser l'accès au modèle d'objet de projet VBA") dans les paramètres de sécurité de la macro. –

+0

@irwin: parce que je veux le faire depuis un script Ant – NetForce1

Répondre

1

Il se trouve qu'il est impossible de supprimer la VBComponent nommé "ThisDocument" (Si vous cliquez avec le bouton droit dans l'EDI, l'option de suppression n'est pas active). Vous pouvez utiliser quelque chose comme:

For Each comp In components 
    If comp.Name <> "ThisDocument" Then 
     components.Remove comp 
    End If 
Next 
+0

Oui, vous avez raison. Et je le savais même ...: X – NetForce1

Questions connexes