Удалить макрос MS Word, используя VBScript - PullRequest
1 голос
/ 26 февраля 2010

Я хочу удалить все vba-модули из шаблона MS Word, используя 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

При запуске аналогичного кода в VBA-модуле в Word это работает, но когда я запускаю этот VBScript, я получаю эту ошибку: test.vbs(14, 2) Microsoft VBScript runtime error: Invalid procedure call or argument

1 Ответ

1 голос
/ 27 февраля 2010

Оказывается, невозможно удалить компонент VBComponent с именем «ThisDocument» (если щелкнуть его правой кнопкой мыши в среде IDE, параметр удаления не активен). Вы можете использовать что-то вроде:

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