Удаление макроса из макроса (Microsoft Excel)
Джин спросил, как удалить макрос из макроса. У него есть большой рабочий лист, в котором макросы используются для составления заказа покупки.
На последнем этапе макрос удаляет исходные данные, которые больше не нужны для готового заказа на поставку. Затем эта урезанная книга сохраняется под новым именем. Гену нужен макрос непосредственно перед сохранением, чтобы удалить макрос, который хранится в обработчике событий SelectionChange.
Есть несколько способов справиться с этим. Один из способов — избежать необходимости выполнять удаление сразу. Вместо этого пусть ваш макрос создаст новую книгу, а затем перенесет в эту книгу копию необходимых данных. Затем вы можете разрезать данные в новой книге и сохранить их как свой заказ на покупку. Макросы из существующей книги никогда не копируются в новую книгу во время процесса, поэтому вам не нужно беспокоиться об их удалении.
Копировать все листы из текущей книги в новую книгу очень просто. Следующий макрос показывает, как это делается:
Sub CopyThisWorkbook() Dim CopiedWB As String CopiedWB = "Copy of " & ActiveWorkbook.Name Sheets.Copy ActiveWorkbook.SaveAs Filename:=CopiedWB, _ FileFormat:=xlNormal End Sub
Метод Copy при применении к коллекции Sheets копирует все листы в активной книге в новую книгу и делает новую книгу активной. Последняя команда сохраняет новую книгу под новым именем.
Конечно, если вам нужно, чтобы некоторые из ваших макросов были в новой книге, но не все из них (например, обработчик событий SelectionChange), то вам, вероятно, лучше всего удалить то, что вам не нужно, и просто сохранить в новом название. В следующем примере макроса показано, как удалить обработчик событий SelectionChange из кода листа для Sheet1.
Sub DeleteProcedure() Dim VBCodeMod As CodeModule Dim StartLine As Long Dim HowManyLines As Long Set VBCodeMod = ThisWorkbook.VBProject.VBComponents("Sheet1").CodeModule With VBCodeMod StartLine = .ProcStartLine("Worksheet_SelectionChange", _ vbext_pk_Proc) HowManyLines = .ProcCountLines("Worksheet_SelectionChange", _ vbext_pk_Proc) .DeleteLines StartLine, HowManyLines End With End Sub
После завершения макроса книга может быть сохранена, и нужный макрос не будет в сохраненном файле. Этот макрос адаптирован из информации, представленной на веб-сайте Чипа Пирсона, на который вы должны ссылаться, если вам нужна дополнительная информация об этом методе:
http://www.cpearson.com/excel/vbe.aspx
_Примечание: _
Если вы хотите узнать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах ExcelTips), я подготовил специальную страницу, содержащую полезную информацию.
link: / excelribbon-ExcelTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера]
.
ExcelTips — ваш источник экономичного обучения Microsoft Excel.
Этот совет (3073) применим к Microsoft Excel 97, 2000, 2002 и 2003.