Макрос для удаления другого макросаИсточник: wordexpert Антон Кокин
В файле Стандартный.doc с образцом текста есть макрос AutoOpen, предлагающий сохранить файл с другим именем. Существует ли возможность автоматического программного удаления макроса при сохранении файла с другим именем? Версия - Word XP.
Вот конкретный макрос, который удалит ваш макрос AutoOpen из конкретного модуля Module1 конкретного проекта Normal (конкретность необходима, чтобы точно указать удаляемый макрос): Sub removeModule() 'Удаление конкретного макроса при сохранении документа под другим именем Dim aMdl As Variant Dim aPrj As Variant Dim lLin As Long Dim lLin2Del As Long Dim strSub2Del As String Dim oDlg As Dialog Set oDlg = Dialogs(wdDialogFileSaveAs) On Error Resume Next 'Открываем окно "Сохранить как" oDlg.Show 'Вводим имя макроса strSub2Del = "AutoOpen" 'Присваиваем переменной имя конкретного проекта (в данном случае это проект "Normal") Set aPrj = Application.VBE.VBProjects("Normal") 'Присваиваем переменной имя конкретного модуля, содержащего удаляемый макрос (например, "Module1") Set aMdl = aPrj.VBComponents("Module1") 'Процедура удаления макроса из кода модуля With aMdl.CodeModule 'метод ProcBodyLine возвращает первую строку конкретной процедуры как номер строки (число) _ (например, строка Sub может находиться на 3-й строке в модуле, значит возвращено будет 3) iLin = .ProcBodyLine(strSub2Del, vbext_pk_Proc) 'метод ProcCountLines возвращает количество строк в конкретной процедуре iLin2Del = .ProcCountLines(strSub2Del, vbext_pk_Proc) 'собственно удаление строк кода макроса .DeleteLines iLin, iLin2Del - 1 End With End Sub |