Excel

Удалить книгу макрос excel: Как удалить макросы из книги Excel (3 простых способа)

Содержание

Как удалить макросы в книге?

Хитрости »

6 Июнь 2011       Дмитрий       77873 просмотров

Основные понятия (26)
Сводные таблицы и анализ данных (10)
Графики и диаграммы (5)
Работа с VB проектом (12)
Power BI и Power Query (20)
Условное форматирование (5)
Списки и диапазоны (5)
Макросы(VBA процедуры) (68)
Разное (43)
Баги и глюки Excel (4)

Рано или поздно у разработчиков возникает вопрос: как удалить макросы, в том числе и из книги, в которой эти макросы расположены? Да еще так, чтобы об этом никто ничего не узнал?

Для изменения кодов программно необходимо, чтобы было проставлено доверие к объектной модели проекта VBA и изменяемый проект не должен быть защищен. Подробнее читайте в статье: Что необходимо для внесения изменений в проект VBA(макросы) программно
Без этого будет невозможно программное вмешательство в проект VBA.

  • Удалить все макросы из активной книги
  • Удалить отдельный модуль(Module), Форму(UserForm), Код листа или книги
  • Удалить отдельную процедуру из модуля
  • Удалить все макросы вручную


 
УДАЛИТЬ ВСЕ МАКРОСЫ ИЗ АКТИВНОЙ КНИГИ

Sub Delete_Macroses()
    Dim oVBComponent As Object, lCountLines As Long
    'Проверяем, защищен проект или нет
    If ActiveWorkbook.VBProject.Protection = 1 Then
        MsgBox "VBProject выбранной книги защищён." & vbCrLf & _
             "     Компоненты не будут удалены.", vbExclamation, "Отмена выполнения"
        Exit Sub
    End If
 
    For Each oVBComponent In ActiveWorkbook.VBProject.VBComponents
        On Error Resume Next
        With oVBComponent
            Select Case .Type
            Case 1    'Модули
                .Collection.Remove oVBComponent
            Case 2    'Модули Класса
                .Collection.Remove oVBComponent
            Case 3    'Формы
                .
Collection.Remove oVBComponent Case 100 'ЭтаКнига, Листы lCountLines = .CodeModule.CountOfLines .CodeModule.DeleteLines 1, lCountLines End Select End With Next Set oVBComponent = Nothing End Sub


 
Так же можно удалить макросы только из одного компонента(листа или книги или модуля).

УДАЛИТЬ ОТДЕЛЬНЫЙ МОДУЛЬ(Module), ФОРМУ(UserForm) КОД ЛИСТА ИЛИ КНИГИ
Удалить модуль/форму целиком достаточно просто:

ActiveWorkbook.VBProject.VBComponents("UserForm1").Collection.Remove ActiveWorkbook.VBProject.VBComponents("UserForm1")
ActiveWorkbook.VBProject.VBComponents("Module1").Collection.Remove ActiveWorkbook.VBProject.VBComponents("Module1")

С листами несколько сложнее — если удалить компонент полностью, то будут потеряны и все данные на листе, а не только макросы. Поэтому удалять необходимо только код внутри листа. В качестве примера возьмем Лист1:

Sub Delete_Macroses_In_One_Comp()
    Dim oVBComponent As Object, lCountLines As Long
    Set oVBComponent = ActiveWorkbook. VBProject.VBComponents("Лист1")
    With oVBComponent
        lCountLines = .CodeModule.CountOfLines
        .CodeModule.DeleteLines 1, lCountLines
    End With
    Set oVBComponent = Nothing
End Sub

Здесь тоже есть небольшая поправка: Лист1 — это кодовое(внутреннее имя) листа. На ярлычке имя листа может отображаться как угодно, а вот внутреннее…Его можно лучше подглядеть через редактор VBA:

Подробнее про кодовое имя листа можно прочитать в этой статье: Кодовое имя листа — что это и зачем нужно? Какие плюсы и минусы?

Чтобы удалить коды из модуля книги необходимо вместо Лист1 указать ЭтаКнига(для англ.версии — ThisWorkbook).


 
УДАЛИТЬ ОТДЕЛЬНУЮ ПРОЦЕДУРУ ИЗ МОДУЛЯ
Если же Вам необходимо удалить лишь определенную процедуру из модуля формы, стандартного модуля, модуля листа или книги, то сделать это чуть сложнее. Рассмотрим на примере удаления процедуры с именем "Code2", расположенной в стандартном модуле "Module2"

Sub Delete_Sub_From_Module()
    Dim lCountLines As Long, li As Long, lStartLine As Long, lProcLineCount As Long
    Dim sCodeName As String, sProcName As String
 
    With ActiveWorkbook. VBProject.VBComponents("Module2")
        'получаем кол-во строк кода в модуле
        lCountLines = .CodeModule.CountOfLines
        'получаем первую строку с кодом, исключая строки декларирования функции и опций модуля
        lStartLine = .CodeModule.CountOfDeclarationLines + 1
        'цикл по всем строкам кода внутри модуля
        For li = lStartLine To lCountLines
            'получаем имя процедуры/функции, внутри которой строка кода
            sProcName = .CodeModule.ProcOfLine(li, 0)
            'если имя процедуры совпадает с тем, которое нам нужно
            If sProcName = "Code2" Then
                'узнаем кол-во строк процедуры/функции
                lProcLineCount = .CodeModule.ProcCountLines(sProcName, 0)
                'удаляем процедуру/функцию
                .CodeModule.DeleteLines li, lProcLineCount - 1
                Exit For
            End If
        Next li
    End With
End Sub

Здесь стоит обратить внимание на один момент: данный поиск чувствителен к регистру.

Т.е. если требуется удалить процедуру "Code2", то и к сравнению надо вписывать имя именно так. Если записать "code2", то совпадения найдено не будет и процедура не будет удалена. Во избежание подобного можно приводить имена к одному регистру:
If LCase(sProcName) = LCase(«Code2») Then



 
УДАЛИТЬ ВСЕ МАКРОСЫ ВРУЧНУЮ
Еще хочу добавить, что если Вам надо не скрыто, а просто быстро удалить все макросы из книги и Вы счастливый обладатель Excel версии 2007 и выше, то Вам всего лишь необходимо книгу, из которой хотите удалить макросы, Сохранить как-обычная Книга Excel(МенюСохранить какКнига Excel).

Программно это можно сделать простым кодом:

Sub SaveBookWithoutMacro()
    ActiveWorkbook.SaveAs Filename:="C:\Книга1.xlsx", FileFormat:=51
End Sub

Для тех же, кто все еще использует офис 2003 и ранее и хочет удалить коды и макросы вручную — придется удалять каждый модуль из проекта и каждый код из модулей листов и книг поочередно, руками.

Также см.:
Копирование модулей и форм из одной книги в другую
Как программно снять пароль с VBA проекта?


Статья помогла? Поделись ссылкой с друзьями!

    Видеоуроки
Поиск по меткам

Accessapple watchMultexPower Query и Power BIVBA управление кодамиБесплатные надстройкиДата и времяЗапискиИПНадстройкиПечатьПолитика КонфиденциальностиПочтаПрограммыРабота с приложениямиРазработка приложенийРосстатТренинги и вебинарыФинансовыеФорматированиеФункции Excelакции MulTExссылкистатистика

Создание и удаление макросов

 

Ниже описывается создание и удаление макроса в Excel 2013 и 2016.

Запись макроса

При записи макроса все необходимые действия записываются средством записи макроса. Такими действиями может быть ввод текста или чисел, выбор ячеек или команд на ленте или в меню, форматирование, выделение ячеек, строк или столбцов, а также выделение ячеек путем перетаскивания указателя мыши.

Команды для записи, создания и удаления макросов доступны на вкладке ленты Разработчик.

    1. Если вкладка Разработчик недоступна, выполните следующие действия для ее отображения:
        1. Откройте вкладку Файл.
        2. Нажмите кнопку Параметры и выберите команду Настройка ленты.
        3. В категории Настройка ленты в списке Основные вкладки установите флажок Разработчик, а затем нажмите кнопку ОК.
      1. Чтобы разрешить все макросы, возможно, сначала потребуется установить уровень безопасности. Для этого выполните указанные ниже действия.
        1. На вкладке Разработчик в группе Код нажмите кнопку Безопасность макросов.
        2. В группе Параметры макросов выберите переключатель Включить все макросы (не рекомендуется, возможен запуск опасной программы), а затем дважды нажмите кнопку ОК.

          ВНИМАНИЕ : Для предотвращения запуска потенциально опасного кода по завершении работы с макросами рекомендуется вернуть параметры, отключающие все макросы.

      2. Нравится? Поделись с друзьями в социальных сетях, нажми поделиться


          1. На вкладке Разработчик в группе Код нажмите кнопку Запись макроса.
          2. В поле Имя введите имя макроса .

            ПРИМЕЧАНИЕ : Первым символом имени макроса должна быть буква. Последующие символы могут быть буквами, цифрами или знаками подчеркивания. В имени макроса не допускаются пробелы; в качестве разделителей слов следует использовать знаки подчеркивания. Если используется имя макроса, являющееся ссылкой на ячейку, может появиться сообщение об ошибке, указывающее на недопустимое имя макроса.

          3. Чтобы назначить сочетание клавиш с клавишей CTRL для запуска макроса, в поле Сочетание клавиш введите любую строчную или прописную букву. Выбранное сочетание клавиш заменяет все совпадающие стандартные сочетания клавиш Excel на то время, пока открыта книга, содержащая данный макрос.
          1. В поле Сохранить в выберите книгу, в которой нужно сохранить макрос.Если вам нужно, чтобы данный макрос был всегда доступен при работе в Excel, выберите вариант
            Личная книга макросов
            . При выборе этого варианта создается скрытая личная книга макросов (Personal.xlsb) (если она еще не существует), в которой сохраняется данный макрос. В Windows 7 и Windows Vista эта книга сохраняется в папке C:\Users\имя_пользователя\Application Data\Microsoft\Excel\XLStart. В Microsoft Windows XP эта книга сохраняется в папке C:\Documents and Settings\имя_пользователя\Application Data\Microsoft\Excel\XLStart, откуда она будет автоматически загружаться при каждом запуске приложения Excel. Если вы хотите автоматически выполнять макрос из личной книги в другой книге, следует также сохранить эту книгу в папке XLStart, чтобы при запуске Excel открывались обе книги.
          2. Введите описание макроса в поле Описание.
          3. Для начала записи макроса нажмите кнопку ОК.
          4. Выполните действия, которые нужно записать.
          5. На вкладке Разработчик в группе Код нажмите кнопку Остановить запись .

           

          Создание макроса с помощью VBA

          1. На вкладке Разработчик в группе Код нажмите кнопку Visual Basic.
          2. При необходимости в меню Insert выберите команду Module.

            ПРИМЕЧАНИЕ : Модули будут созданы автоматически для всех листов книги.

          3. В окне программы модуля введите или скопируйте нужный текст макроса.
          4. Для запуска макроса из окна модуля нажмите клавишу F5.
          5. Когда макрос будет создан, в меню File выберите команду Close and Return to Microsoft Excel.

          Нравится? Подпишись на рассылку полезных советов от prodma.

          ru

          [wysija_form id=»1″]

          Копирование части макроса для создания нового макроса

          1. Откройте книгу, содержащую макрос, который нужно скопировать.
          2. На вкладке Разработчик в группе Код нажмите кнопку Макросы.
          3. В поле Имя выберите имя макроса, который нужно скопировать.
          4. Нажмите кнопку Изменить.
          5. В окне редактора Visual Basic выделите строки макроса, которые нужно скопировать.

            СОВЕТ : Чтобы скопировать макрос целиком, включите в выделенную часть строки Sub и End Sub.

          6. Выберите в меню Правка команду Копировать.
          7. В поле Procedure окна кода выберите модуль, куда нужно поместить текст.
          8. Выберите в меню Правка команду Вставить.

          Личную книгу макросов (файл Personal. xls) редактировать нельзя, поскольку она является скрытой книгой, которая всегда открыта. Сначала ее следует отобразить с помощью команды Показать. Этот файл также можно открыть в редакторе Visual Basic, нажав клавиши ALT+F11.

          Назначение макроса объекту, графическому объекту и элементу управления

          1. Щелкните на листе правой кнопкой мыши объект, графический объект или элемент управления, которому нужно назначить существующий макрос, а затем в контекстном меню выберите команду Назначить макрос.
          2. В поле Имя выберите макрос, который нужно назначить.

           

          Удаление макроса

          1. Выполните одно из указанных ниже действий.
            • Откройте книгу, содержащую макрос, который нужно удалить.
            • Если макрос, который требуется удалить, хранится в личной книге макросов (Personal.xlsb) и эта книга скрыта, для ее отображения выполните указанные ниже действия.
              1. На вкладке Вид в группе Окно нажмите кнопку Отобразить окно.
              2. В разделе Показать скрытое окно книги выберите пункт PERSONAL и нажмите кнопку ОК.
          2. В списке Находится в выберите рабочую книгу с макросом, который требуется удалить. Например, выберите вариант Эта книга.
          3. В списке Имя выберите имя макроса, который требуется удалить.
          4. Нажмите кнопку Удалить.

          Как удалить макрос в excel

          Удаление макроса из персональной книги макросов

          Помощь в написании контрольных, курсовых и дипломных работ здесь.

          Запуск функций UDF из персональной книги макросов
          Добрый день! Помогите пожалуйста. Небольшая проблема. Я создал пользовательскую функцию UDF. Если.

          Очистка книги от макросов
          При сохранении книги использую такой код: Public Sub WorkbookDeleteVBA(oWorkbook As.

          Загрузка личной книги макросов
          Добрый день. Подскажите пожалуйста как мне загрузить personal.xls при помоши макроса. Проблема в.

          Программное сохранение книги с отработкой макросов
          Доброе время суток. Подскажите как программно сохранить книгу с выполнением макросов. Есть.

          Зачем его удолять ?, может быть проще не использовать в тех или иных случаях

          Добавлено через 4 минуты
          или вот как можно!, ручками.. средствами правки.. копировать-вырезать-вставить-удалить

          Сообщение было отмечено Аксима как решение

          Полезные советы на все случаи в жизни

          Электронный журнал полезных советов, советы без воды и по сути. Пишут и делятся советами простые и открытые люди которым есть чем безвозмездно поделиться

          Применяется к: Excel 2016 Excel 2013 Excel 2010 Excel 2007

          Ниже описывается создание и удаление макроса в Excel 2013 и 2016.

          Запись макроса

          При записи макроса все необходимые действия записываются средством записи макроса. Такими действиями может быть ввод текста или чисел, выбор ячеек или команд на ленте или в меню, форматирование, выделение ячеек, строк или столбцов, а также выделение ячеек путем перетаскивания указателя мыши. Команды для записи, создания и удаления макросов доступны на вкладке ленты Разработчик.

          1. Если вкладка Разработчик недоступна, выполните следующие действия для ее отображения:
          1. Откройте вкладку Файл.
          2. Нажмите кнопку Параметры и выберите команду Настройка ленты.
          3. В категории Настройка ленты в списке Основные вкладки установите флажок Разработчик, а затем нажмите кнопку ОК.

          ВНИМАНИЕ : Для предотвращения запуска потенциально опасного кода по завершении работы с макросами рекомендуется вернуть параметры, отключающие все макросы.

          Нравится? Поделись с друзьями в социальных сетях, нажми поделиться

          1. На вкладке Разработчик в группе Код нажмите кнопку Запись макроса.
          2. В поле Имя введите имя макроса .

          ПРИМЕЧАНИЕ : Первым символом имени макроса должна быть буква. Последующие символы могут быть буквами, цифрами или знаками подчеркивания. В имени макроса не допускаются пробелы; в качестве разделителей слов следует использовать знаки подчеркивания. Если используется имя макроса, являющееся ссылкой на ячейку, может появиться сообщение об ошибке, указывающее на недопустимое имя макроса.

          1. В поле Сохранить в выберите книгу, в которой нужно сохранить макрос.Если вам нужно, чтобы данный макрос был всегда доступен при работе в Excel, выберите вариант Личная книга макросов. При выборе этого варианта создается скрытая личная книга макросов (Personal.xlsb) (если она еще не существует), в которой сохраняется данный макрос. В Windows 7 и Windows Vista эта книга сохраняется в папке C:\Users\имя_пользователя\Application Data\Microsoft\Excel\XLStart. В Microsoft Windows XP эта книга сохраняется в папке C:\Documents and Settings\имя_пользователя\Application Data\Microsoft\Excel\XLStart, откуда она будет автоматически загружаться при каждом запуске приложения Excel. Если вы хотите автоматически выполнять макрос из личной книги в другой книге, следует также сохранить эту книгу в папке XLStart, чтобы при запуске Excel открывались обе книги.
          2. Введите описание макроса в поле Описание.
          3. Для начала записи макроса нажмите кнопку ОК.
          4. Выполните действия, которые нужно записать.
          5. На вкладке Разработчик в группе Код нажмите кнопку Остановить запись .

          Создание макроса с помощью VBA

          1. На вкладке Разработчик в группе Код нажмите кнопку Visual Basic.
          2. При необходимости в меню Insert выберите команду Module.

          ПРИМЕЧАНИЕ : Модули будут созданы автоматически для всех листов книги.

          Нравится? Подпишись на рассылку полезных советов от prodma.ru

          [wysija_form > Копирование части макроса для создания нового макроса

          1. Откройте книгу, содержащую макрос, который нужно скопировать.
          2. На вкладке Разработчик в группе Код нажмите кнопку Макросы.
          3. В поле Имя выберите имя макроса, который нужно скопировать.
          4. Нажмите кнопку Изменить.
          5. В окне редактора Visual Basic выделите строки макроса, которые нужно скопировать.

          СОВЕТ : Чтобы скопировать макрос целиком, включите в выделенную часть строки Sub и End Sub.

          Личную книгу макросов (файл Personal.xls) редактировать нельзя, поскольку она является скрытой книгой, которая всегда открыта. Сначала ее следует отобразить с помощью команды Показать. Этот файл также можно открыть в редакторе Visual Basic, нажав клавиши ALT+F11.

          Назначение макроса объекту, графическому объекту и элементу управления

          Как удалить макросы в книге?

          Рано или поздно у разработчиков возникает вопрос: как удалить макросы, в том числе и из книги, в которой эти макросы расположены? Да еще так, чтобы об этом никто ничего не узнал?

          Для изменения кодов программно необходимо, чтобы было проставлено доверие к объектной модели проекта VBA и изменяемый проект не должен быть защищен. Подробнее читайте в статье: Что необходимо для внесения изменений в проект VBA(макросы) программно
          Без этого будет невозможно программное вмешательство в проект VBA.

          УДАЛИТЬ ВСЕ МАКРОСЫ ИЗ АКТИВНОЙ КНИГИ

          Sub Delete_Macroses() Dim oVBComponent As Object, lCountLines As Long ‘Проверяем, защищен проект или нет If ActiveWorkbook.VBProject.Protection = 1 Then MsgBox «VBProject выбранной книги защищён.» & vbCrLf & _ » Компоненты не будут удалены.», vbExclamation, «Отмена выполнения» Exit Sub End If For Each oVBComponent In ActiveWorkbook.VBProject.VBComponents On Error Resume Next With oVBComponent Select Case .Type Case 1 ‘Модули .Collection.Remove oVBComponent Case 2 ‘Модули Класса .Collection.Remove oVBComponent Case 3 ‘Формы .Collection.Remove oVBComponent Case 100 ‘ЭтаКнига, Листы lCountLines = .CodeModule.CountOfLines .CodeModule.DeleteLines 1, lCountLines End Select End With Next Set oVBComponent = Nothing End Sub

          Так же можно удалить макросы только из одного компонента(листа или книги или модуля).

          УДАЛИТЬ ОТДЕЛЬНЫЙ МОДУЛЬ(Module), ФОРМУ(UserForm) КОД ЛИСТА ИЛИ КНИГИ
          Удалить модуль/форму целиком достаточно просто:

          ActiveWorkbook.VBProject.VBComponents(«UserForm1»).Collection.Remove ActiveWorkbook.VBProject.VBComponents(«UserForm1») ActiveWorkbook.VBProject.VBComponents(«Module1»).Collection.Remove ActiveWorkbook.VBProject.VBComponents(«Module1»)

          С листами несколько сложнее — если удалить компонент полностью, то будут потеряны и все данные на листе, а не только макросы. Поэтому удалять необходимо только код внутри листа. В качестве примера возьмем Лист1:

          Sub Delete_Macroses_In_One_Comp() Dim oVBComponent As Object, lCountLines As Long Set oVBComponent = ActiveWorkbook.VBProject.VBComponents(«Лист1») With oVBComponent lCountLines = .CodeModule.CountOfLines .CodeModule.DeleteLines 1, lCountLines End With Set oVBComponent = Nothing End Sub

          Здесь тоже есть небольшая поправка: Лист1 — это кодовое(внутреннее имя) листа. На ярлычке имя листа может отображаться как угодно, а вот внутреннее. Его можно лучше подглядеть через редактор VBA:

          Подробнее про кодовое имя листа можно прочитать в этой статье: Кодовое имя листа — что это и зачем нужно? Какие плюсы и минусы?
          Чтобы удалить коды из модуля книги необходимо вместо Лист1 указать ЭтаКнига(для англ.версии — ThisWorkbook).

          УДАЛИТЬ ОТДЕЛЬНУЮ ПРОЦЕДУРУ ИЗ МОДУЛЯ
          Если же Вам необходимо удалить лишь определенную процедуру из модуля формы, стандартного модуля, модуля листа или книги, то сделать это чуть сложнее. Рассмотрим на примере удаления процедуры с именем «Code2» , расположенной в стандартном модуле «Module2»

          Sub Delete_Sub_From_Module() Dim lCountLines As Long, li As Long, lStartLine As Long, lProcLineCount As Long Dim sCodeName As String, sProcName As String With ActiveWorkbook.VBProject.VBComponents(«Module2») ‘получаем кол-во строк кода в модуле lCountLines = .CodeModule.CountOfLines ‘получаем первую строку с кодом, исключая строки декларирования функции и опций модуля lStartLine = . CodeModule.CountOfDeclarationLines + 1 ‘цикл по всем строкам кода внутри модуля For li = lStartLine To lCountLines ‘получаем имя процедуры/функции, внутри которой строка кода sProcName = .CodeModule.ProcOfLine(li, 0) ‘если имя процедуры совпадает с тем, которое нам нужно If sProcName = «Code2» Then ‘узнаем кол-во строк процедуры/функции lProcLineCount = .CodeModule.ProcCountLines(sProcName, 0) ‘удаляем процедуру/функцию .CodeModule.DeleteLines li, lProcLineCount — 1 Exit For End If Next li End With End Sub

          Здесь стоит обратить внимание на один момент: данный поиск чувствителен к регистру. Т.е. если требуется удалить процедуру «Code2» , то и к сравнению надо вписывать имя именно так. Если записать «code2» , то совпадения найдено не будет и процедура не будет удалена. Во избежание подобного можно приводить имена к одному регистру:
          If LCase(sProcName) = LCase(«Code2») Then

          УДАЛИТЬ ВСЕ МАКРОСЫ ВРУЧНУЮ
          Еще хочу добавить, что если Вам надо не скрыто, а просто быстро удалить все макросы из книги и Вы счастливый обладатель Excel версии 2007 и выше, то Вам всего лишь необходимо книгу, из которой хотите удалить макросы, Сохранить как-обычная Книга Excel(МенюСохранить какКнига Excel).

          Программно это можно сделать простым кодом:

          Sub SaveBookWithoutMacro() ActiveWorkbook.SaveAs Filename:=»C:\Книга1.xlsx», FileFormat:=51 End Sub

          Для тех же, кто все еще использует офис 2003 и ранее и хочет удалить коды и макросы вручную — придется удалять каждый модуль из проекта и каждый код из модулей листов и книг поочередно, руками.

          Редактирование и удаление макросов в Excel

          Редактирование макроса

          Если вам нужно внести простые изменения в макрос, например вставить текст или удалить команду, например, определенный формат, примененный к ячейке, вы можете отредактировать макрос. Вы редактируете макрос в редакторе Visual Basic, как показано на рис. 2-6. Элементы редактора Visual Basic описаны в таблице ниже.

          При открытии редактора Visual Basic открывается окно Project Explorer, окно свойств и окно кода. Поскольку вам не понадобится окно свойств при выполнении простого редактирования, вы можете закрыть окно свойств, а затем развернуть проводник проекта, чтобы увидеть больше его окна.

          С каждой открытой книгой Excel связан проект в Project Explorer. Навигация в проводнике проекта похожа на навигацию в проводнике Windows, поскольку они оба имеют иерархическую структуру. Код макроса хранится в модуле, который является просто местом хранения кода, точно так же, как рабочий лист является местом хранения данных в ячейках. Двойной щелчок по модулю в Project Explorer отображает код модуля в окне кода. Редактирование кода Visual Basic похоже на редактирование текста в текстовом редакторе.

          Для получения более подробной информации об обучении макросам и VBA Excel в Лос-Анджелесе позвоните нам по телефону 888-815-0604. Наши занятия практические и под руководством инструктора. Также доступны классы Excel для начинающих, средних и продвинутых пользователей.

          Рисунок 2-6: Редактор Visual Basic

          Элемент Описание
          Проводник проекта Содержит проекты, в которых хранится код Visual Basic для каждой открытой книги. Каждый проект может содержать папки для объектов (например, рабочих листов в книге), форм, ссылок и модулей. Вы выбираете модуль, чтобы просмотреть его код, скопировать модули в другие открытые книги и удалить модули.
          Кодовое окно Отображает код Visual Basic для выбранного модуля в проекте.
          Окно свойств Отображает определенные характеристики объекта, такие как имя объекта или стандартная ширина столбцов.
          Стандартная (макро) панель инструментов Отображает основные инструменты, необходимые для использования редактора Visual Basic.
          Ящик для предметов Содержит раскрывающийся список, из которого можно выбрать нужный объект, код которого вы хотите просмотреть в окне кода. Если в поле «Объект» отображается «Общие», весь код макросов, связанных с выбранным модулем, отображается в окне «Код».
          Блок процедур Содержит раскрывающийся список, из которого можно выбрать макрос для отображения кода макроса в окне кода.
          Действия по редактированию макроса
          Чтобы отобразить редактор Visual Basic:
          1. В группе «Код» на вкладке «Разработчик» нажмите кнопку Visual Basic.
          Чтобы изменить макрос:
          1. Откройте редактор Visual Basic.
          2. В меню «Инструменты» выберите «Макросы».
          3. В диалоговом окне «Макросы» в раскрывающемся списке «Макросы в» выберите проект, содержащий макрос, который вы хотите изменить.
          4. В списке Имя макроса выберите нужный макрос.
          5. Выберите «Редактировать».
          6. В окне кода внесите необходимые изменения.
          7. Закройте диалоговое окно «Макросы».
          Чтобы закрыть редактор Visual Basic:
          1. В меню «Файл» выберите «Закрыть и вернуться в Microsoft Excel».

          Также посмотрите, как записать макрос.

          Удаление макроса

          Если макрос больше не нужен, его можно удалить. Удаление ненужных макросов упрощает просмотр макросов в окне «Код» в редакторе Visual Basic, а также просмотр макросов в диалоговом окне «Макрос».

          Макрос в открытой книге можно удалить с помощью диалогового окна «Макрос» или редактора Visual Basic. Если вы хотите удалить макрос в личной книге макросов с помощью диалогового окна «Макрос», вы должны сначала отобразить личную книгу макросов. Преимущество использования редактора Visual Basic заключается в том, что вы можете удалить любой макрос в любой открытой книге или личной книге макросов, не отображая ее.

          Действия по удалению макроса
          Метод диалогового окна макроса:
          1. Найдите группу «Код» на вкладке «Разработчик» на ленте
          2. В группе Код на вкладке Разработчик нажмите кнопку Макросы.
          3. В диалоговом окне «Макрос» в списке «Имя макроса» выберите макрос, который необходимо удалить.
          4. Выберите Удалить.
          5. В появившемся окне сообщения выберите Да.
          Метод редактора Visual Basic:
          1. Найдите группу «Код» на вкладке «Разработчик» на ленте.
          2. В группе Код на вкладке Разработчик нажмите кнопку Visual Basic.
          3. В меню «Инструменты» выберите «Макросы».
          4. В диалоговом окне «Макросы» в раскрывающемся списке «Макросы в» выберите проект, содержащий макрос, который вы хотите удалить.
          5. В списке Имя макроса выберите нужный макрос.
          6. Выберите Удалить.
          7. В меню «Файл» выберите «Закрыть и вернуться в Microsoft Excel».

          Как удалить макросы из Excel? 3 простых метода

          Стива

          Макросы обеспечивают отличный способ автоматизации повторяющихся задач. Таким образом, они помогают быстро выполнять задачи, но могут возникнуть ситуации, когда вы захотите удалить макросы из книги.

          Например, обычно рекомендуется удалять макросы, которые вам больше не нужны. Это делает ваш список макросов меньше. Таким образом, становится легче просматривать макросы, которые вам нужны.

          Кроме того, он сохраняет небольшой размер файла рабочей книги и оптимизирует скорость.

          В этом уроке мы рассмотрим 3 простых способа удаления макросов из книги Excel .

          Содержание

          Метод 1. Удаление всех макросов путем сохранения книги в формате XLSX

          Если вы опытный пользователь макросов, вы, возможно, знаете, что единственными файлами Excel, которые могут содержать макросы, являются файлы форматов XLSM и XLSB (или более старый формат XLS).

          Таким образом, если вы сохраните книгу Excel в формате XLSX или любом другом формате, ваши макросы будут удалены или потеряны.

          Простой способ удалить все макросы из книги формата XLSM или XLSB — сохранить ее как XLSX, а затем при необходимости удалить оригинал (или сохранить его в качестве резервной копии, если это необходимо).

          Самое замечательное в этом методе то, что вы все еще можете сохранить исходный документ, содержащий макросы, на случай, если вы решите, что они могут понадобиться вам позже.

          Чтобы сохранить книгу в формате XLSX, выполните следующие действия:

          1. Откройте файл XLSM или XLSB, содержащий макросы.
          2. Щелкните вкладку Файл .
          3. Выберите Сохранить как из параметров на левой боковой панели (если вы используете более старые версии Excel, выберите Сохранить как из меню Файл ).
          4. Выберите папку, в которой вы хотите сохранить новый файл.
          5. Откроется диалоговое окно Сохранить как . В поле рядом с « Имя файла » введите имя, которое вы хотите дать новому файлу.
          6. В поле рядом с « Сохранить как тип» щелкните стрелку раскрывающегося списка.
          7. В появившемся раскрывающемся меню выберите Книга Excel .
          8. Щелкните Сохранить .
          9. Теперь ваша рабочая книга будет сохранена под новым именем и в формате XLSX.
          10. Если теперь вы нажмете кнопку Макрос на вкладке Разработчик , вы найдете пустой список макросов в диалоговом окне Макросы . Это означает, что в этой новой книге больше нет макросов.
          11. Теперь вы можете либо удалить исходный файл, содержащий макросы, либо сохранить его в качестве резервной копии на случай, если он понадобится вам в будущем.

          Вышеуказанные шаги удалят все макросы из только что сохраненного файла.

          Этот метод не подходит, если вы хотите удалить только определенные макросы и сохранить остальные. Для этого используйте методы, показанные в следующем разделе.

          Примечание : Вы также можете назвать новый файл XLSX тем же именем, что и исходный. Это не вызовет никаких проблем, поскольку расширение нового файла будет отличаться от исходного.

          Способ 2. Удаление макросов с помощью диалогового окна макросов

          Диалоговое окно Excel Macro также предоставляет удобный интерфейс, помогающий выполнять различные задачи, связанные с макросами.

          Вы можете использовать его для создания, запуска, редактирования, отладки и удаления нескольких макросов непосредственно из окна рабочего листа.

          Чтобы удалить один или несколько макросов из книги, выполните следующие действия:

          1. На вкладке Просмотр нажмите кнопку Макросы (в группе Макросы ). Кроме того, вы можете щелкнуть вкладку Developer и выбрать кнопку Macros (в группе Code ).
          2. Откроется диалоговое окно Macro . Вы увидите список всех макросов в списке в левой части диалогового окна. Вы можете удалить один, все или несколько макросов из своей книги.
          3. Чтобы удалить один макрос , просто выберите макрос, который хотите удалить. Чтобы удалить несколько макросов , нажмите клавишу CTRL и выберите макросы, которые хотите удалить. Чтобы удалить все макросы , просто выберите первый макрос, нажмите клавишу SHIFT и выберите имя последнего макроса.
          4. Нажмите кнопку Удалить в правой части диалогового окна.
          5. Когда вас спросят, уверены ли вы, что хотите удалить выбранные макросы, нажмите кнопку Да .
          6. Все выбранные вами макросы должны быть удалены из списка.

          Примечание: Если вы не видите все макросы, которые хотите удалить, в диалоговом окне Макросы , возможно, они сохранены в какой-то другой книге. Выберите стрелку раскрывающегося списка в поле рядом с « Macros in». Выберите параметры Все открытые книги . Это должно отображать макросы во всех книгах, которые в данный момент открыты.

          Как насчет скрытых макросов в личной книге макросов?

          Если у вас есть макросы в личной книге макросов, вы обнаружите, что их невозможно удалить, поскольку по умолчанию они скрыты.

          Чтобы удалить макросы из вашей личной книги макросов, вам нужно сначала отобразить их, прежде чем пытаться их удалить.

          Чтобы отобразить и удалить макросы из личной книги макросов, выполните следующие действия:

          1. Выберите «Показать» на вкладке Просмотр в группе Окно .
          2. Откроется диалоговое окно Показать . Выберите личную книгу макросов из списка скрытых книг.
          3. Нажмите OK. Это отобразит вашу личную книгу макросов.
          4. Теперь вы можете удалить необходимые макросы, выполнив шаги с 1 по 6 метода 2.

          Способ 3: удаление макросов с помощью редактора Visual Basic

          Наконец, третий способ удаления макросов в Excel — через Visual Basic Редактор . Это область, где вы занимаетесь кодированием и разработкой макросов.

          Чтобы удалить макросы с помощью редактора Visual Basic , выполните следующие действия:

          1. На вкладке Разработчик выберите Visual Basic в группе Код . Это откроет редактор Visual Basic. Кроме того, вы можете открыть его напрямую, нажав клавиши ALT + F11 на клавиатуре.
          2. В окне редактора Visual Basic вы должны увидеть набор инструментов Project Explorer , содержащий список всех ваших проектов, модулей и макросов VBA. Если вы не видите эту панель инструментов, выберите Project Explorer из меню View в верхней части окна редактора Visual Basic.
          3. Выберите макрос, который вы хотите удалить, щелкните его правой кнопкой мыши и выберите Удалить в появившемся контекстном меню.
          4. Когда вас спросят, хотите ли вы экспортировать модуль перед его удалением, нажмите Нет .
          5. Повторите шаги 3 и 4 для всех других модулей, которые вы хотите удалить.
          6. После удаления всех необходимых модулей закройте редактор VBA.

          Таким образом, вы можете удалить макросы из любой книги.

          В этом уроке мы показали вам три простых способа удалить один, несколько или все макросы из ваших рабочих книг Excel.

          Мы надеемся, что вы нашли их полезными и простыми в применении.

          Другие учебники по Excel, которые могут вам понравиться:

          • Использование Application.EnableEvents в VBA в Excel (поясняется с примерами)
          • Как инвертировать текстовую строку в Excel (с использованием формулы и VBA)
          • Почему Excel открывается при запуске (и как это остановить)
          • Как удалить гиперссылки в Excel
          • Как удалить запятые в Excel (из чисел или текстовой строки)
          • Как сохранить выделение в Excel как PDF
          • Где находится личная книга Excel?

          Пошаговое руководство и 6 примеров.

          Это руководство по VBA сопровождается книгами Excel, содержащими данные и макросы, которые я использую в приведенных ниже примерах. Вы можете получите немедленный бесплатный доступ к этим примерам рабочих книг, подписавшись на информационный бюллетень Power Spreadsheets .

          Используйте следующее оглавление, чтобы перейти к интересующему вас разделу.

          Оглавление

          Связанные руководства по VBA и макросам

          Следующие руководства по VBA и макросам могут помочь вам лучше понять и реализовать приведенное ниже содержание:

          • Общие конструкции и структуры VBA:
            • Узнайте о часто используемых терминах VBA здесь.
            • Узнайте, как работать с редактором Visual Basic (VBE) здесь.
            • Узнайте здесь, как создавать процедуры VBA Sub и работать с ними.
            • Узнайте здесь, как работать с методами объекта.
            • Узнайте, как объявлять переменные и работать с ними здесь.
            • Узнайте, как работать с типами данных здесь.
            • Узнайте, как работать с массивами здесь.
          • Практические приложения VBA и примеры макросов:
            • Узнайте здесь о других операциях, которые можно выполнять при работе с листами Excel.

          Дополнительные руководства по VBA и макросам можно найти в архивах.

          #1: Удалить лист по положению

          Код VBA для удаления листа по положению

          Чтобы удалить лист по его положению с помощью VBA , используйте оператор со следующей структурой:

          Листы(SheetIndex).Удалить
           

          Процесс, сопровождаемый кодом VBA для удаления листа по позициям

          Объяснение заявления VBA

          1. Артикул: листов.
            • VBA Construct: Workbook.Sheets свойство.
            • Описание: Свойство Workbook.Sheets возвращает коллекцию Sheets, представляющую все листы рабочей книги, с которой вы работаете. Идентифицируйте один объект из этой коллекции Sheets, указав соответствующий номер индекса (SheetIndex).

              При удалении листа можно работать со свойством Workbook.Worksheets. Workbook.Worksheets представляет коллекцию Sheets, представляющую все рабочие листы в рабочей книге, с которой вы имеете дело.

              При удалении листа диаграммы можно работать со свойством Workbook.Charts. Workbook.Charts возвращает коллекцию Sheets, представляющую все листы диаграмм в рабочей книге, с которой вы имеете дело.

          2. Товар: SheetIndex.
            • VBA Construct: Индексный параметр/номер листа, который вы хотите удалить.
            • Описание: Параметр Index/номер листа позволяет идентифицировать один объект (рабочий лист или лист диаграммы) из коллекции Sheets, с которой вы работаете.

              Параметр/номер индекса представляет положение листа, рабочего листа или листа диаграммы на панели вкладок рабочей книги, с которой вы имеете дело, слева направо. Например, 1 — это первый (самый левый) лист/рабочий лист/лист диаграммы.

              При указании параметра/номера индекса учитывайте следующее:

              • Подсчет обычно также включает скрытые листы/рабочие листы/листы диаграмм.
              • Если вы работаете со свойством Workbook.Worksheets, подсчет включает рабочие листы, но не листы диаграмм.
              • Если вы работаете со свойством Workbook.Charts, подсчет включает листы диаграмм, но не рабочие листы.

              Если вы явно объявляете переменную для представления SheetIndex, используйте тип данных Long.

          3. Товар: Удалить.

          Пример макроса для удаления листа по положению

          Следующий макрос удаляет первый лист (Sheets(mySheetIndex)) в книге, в которой хранится макрос (ThisWorkbook). Макрос подавляет запрос, запрашивающий у пользователя подтверждение удаления листа (Application. DisplayAlerts = False).

          Подпрограмма удаления листа ()
          
              «Источник: https://powerspreadsheets.com/
              'Для получения дополнительной информации: https://powerspreadsheets.com/excel-vba-delete-sheet/
          
              'объявить переменную для хранения порядкового номера листа, который вы хотите удалить
              Dim mySheetIndex As Long
          
              'укажите порядковый номер листа, который вы хотите удалить
              мой ЛистИндекс = 1
          
              'подавить диалоговое окно, которое просит пользователя подтвердить удаление листа
              Application.DisplayAlerts = Ложь
          
              'идентифицируйте лист, который вы хотите удалить, и удалите его
              ThisWorkbook.Sheets(mySheetIndex).Удалить
          
              'повторно включить отображение предупреждений и сообщений
              Application.DisplayAlerts = Истина
          
          Конец сабвуфера
           

          Эффекты выполнения примера макроса для удаления листа по положению

          Следующий GIF иллюстрирует результаты выполнения примера макроса. Первый лист в книге (Лист1) удален.

          #2: Удалить активный лист

          Код VBA для удаления активного листа

          Чтобы удалить активный лист с помощью VBA , используйте оператор со следующей структурой:

          ActiveSheet. Удалить
           

          Процесс, за которым следует код VBA для удаления активного листа

          Заявление VBA Пояснение

          1. Элемент: ActiveSheet.
            • Конструкция VBA: Свойство Application.ActiveSheet.
            • Описание: Свойство Application.ActiveSheet возвращает объект, представляющий активный лист.
          2. Товар: Удалить.

          Пример макроса для удаления активного листа

          Следующий макрос удаляет активный лист (ActiveSheet). Макрос подавляет запрос, запрашивающий у пользователя подтверждение удаления листа (Application.DisplayAlerts = False).

          Подпрограмма удаленияActiveSheet()
          
              «Источник: https://powerspreadsheets.com/
              'Для получения дополнительной информации: https://powerspreadsheets.com/excel-vba-delete-sheet/
          
              'подавить диалоговое окно, которое просит пользователя подтвердить удаление листа
              Application. DisplayAlerts = Ложь
          
              'определить активный лист и удалить его
              ActiveSheet.Удалить
          
              'повторно включить отображение предупреждений и сообщений
              Application.DisplayAlerts = Истина
          
          Конец сабвуфера
           

          Эффекты выполнения примера макроса для удаления активного листа

          Следующий GIF иллюстрирует результаты выполнения примера макроса. Активный лист (Лист2) удаляется.

          #3: Удалить лист по имени

          Код VBA для удаления листа по имени

          Чтобы удалить лист по имени с помощью VBA , используйте оператор со следующей структурой:

          Листы(ИмяЛиста).Удалить
           

          Процесс, за которым следует код VBA для удаления листа по имени

          Заявление VBA Пояснение

          1. Артикул: листов.
            • VBA Construct: Workbook.Sheets свойство.
            • Описание: Свойство Workbook.Sheets возвращает коллекцию Sheets, представляющую все листы рабочей книги, с которой вы работаете. Определите один объект из этой коллекции Sheets, указав соответствующее имя (SheetName).

              При удалении листа можно работать со свойством Workbook.Worksheets. Workbook.Worksheets представляет коллекцию Sheets, представляющую все рабочие листы в рабочей книге, с которой вы имеете дело.

              При удалении листа диаграммы можно работать со свойством Workbook.Charts. Workbook.Charts возвращает коллекцию Sheets, представляющую все листы диаграмм в рабочей книге, с которой вы имеете дело.

          2. Элемент: имя листа.
          3. Товар: Удалить.

          Пример макроса для удаления листа по имени

          Следующий макрос удаляет лист с именем «удалить лист» (Sheets(mySheetName)) в рабочей книге, где хранится макрос (ThisWorkbook). Макрос подавляет запрос, запрашивающий у пользователя подтверждение удаления листа (Application.DisplayAlerts = False).

          Sub deleteSheetByName()
          
              «Источник: https://powerspreadsheets. com/
              'Для получения дополнительной информации: https://powerspreadsheets.com/excel-vba-delete-sheet/
          
              'объявить переменную для хранения имени листа, который вы хотите удалить
              Dim mySheetName как строка
          
              'укажите имя листа, который вы хотите удалить
              mySheetName = "удалить лист"
          
              'подавить диалоговое окно, которое просит пользователя подтвердить удаление листа
              Application.DisplayAlerts = Ложь
          
              'идентифицируйте лист, который вы хотите удалить, и удалите его
              ThisWorkbook.Sheets(mySheetName).Удалить
          
              'повторно включить отображение предупреждений и сообщений
              Application.DisplayAlerts = Истина
          
          Конец сабвуфера
           

          Эффекты выполнения примера макроса для удаления листа по имени

          Следующий GIF иллюстрирует результаты выполнения примера макроса. Лист с именем «удалить лист» будет удален.

          #4: Удалить лист без запроса или предупреждения

          Код VBA для удаления листа без запроса или предупреждения

          Чтобы удалить лист без Excel, отображающего обычное приглашение (предупреждение) с VBA , используйте макрос со следующим структура заявления:

          Application. DisplayAlerts = Ложь
          Листы(ИмяЛиста).Удалить
          Application.DisplayAlerts = Истина
           

          Процесс, сопровождаемый кодом VBA для удаления листа без подсказки или предупреждения

          Объяснение оператора VBA

          Строки №1 и №3: Application.DisplayAlerts = False | Application.DisplayAlerts = True
          1. Элемент: Application.DisplayAlerts.
          2. Предмет: Ложь.
            • Конструкция VBA: Новое значение свойства Application.DisplayAlerts.
            • Описание: При удалении листа можно скрыть диалоговое окно, предлагающее пользователю подтвердить удаление листа, установив для свойства Application.DisplayAlerts значение False.

              Если для параметра Application.DisplayAlerts задано значение False, а Excel требует ответа, Excel выбирает ответ по умолчанию. Когда вы удаляете лист, ответом по умолчанию на диалоговое окно, предлагающее пользователю подтвердить удаление листа, является «Удалить». Это приводит к тому, что Excel удаляет лист.

          3. Предмет: Правда.
            • Конструкция VBA: Новое значение свойства Application.DisplayAlerts.
            • Описание: Значение свойства Application.DisplayAlerts по умолчанию — True. Это приводит к тому, что Excel отображает предупреждения и сообщения во время выполнения макроса.

              Как правило, если для параметра Application.DisplayAlerts задано значение False, Excel снова устанавливает для этого свойства значение True после завершения выполнения макроса. Поскольку существуют исключения (например, выполнение межпроцессного кода), вы можете явно установить для Application.DisplayAlerts значение True после удаления листа.

          Строка #2: Листы(ИмяЛиста).Удалить
          1. Элемент: Листов.
            • VBA Construct: Workbook.Sheets свойство.
            • Описание: Свойство Workbook. Sheets возвращает коллекцию Sheets, представляющую все листы рабочей книги, с которой вы работаете. Определите один объект из этой коллекции Sheets, указав соответствующее имя (SheetName).

              При удалении листа можно работать со свойством Workbook.Worksheets. Workbook.Worksheets представляет коллекцию Sheets, представляющую все рабочие листы в рабочей книге, с которой вы имеете дело.

              При удалении листа диаграммы можно работать со свойством Workbook.Charts. Workbook.Charts возвращает коллекцию Sheets, представляющую все листы диаграмм в рабочей книге, с которой вы имеете дело.

          2. Элемент: имя листа.
          3. Товар: Удалить.
            • Конструкция VBA: Метод Worksheet.Delete или метод Chart.Delete.
            • Описание: Метод Delete удаляет объект (рабочий лист или лист диаграммы), который вы идентифицируете с помощью Sheets(SheetName).

          Пример макроса для удаления листа без запроса или предупреждения

          Следующий макрос удаляет лист с именем «удалить лист без запроса» (Sheets(mySheetName)) в рабочей книге, где хранится макрос (ThisWorkbook), без отображения запроса, который запрашивает пользователя для подтверждения удаления листа (Application. DisplayAlerts = False).

          Sub deleteSheetNoPrompt()
          
              «Источник: https://powerspreadsheets.com/
              'Для получения дополнительной информации: https://powerspreadsheets.com/excel-vba-delete-sheet/
          
              'объявить переменную для хранения имени листа, который вы хотите удалить
              Dim mySheetName как строка
          
              'укажите имя листа, который вы хотите удалить
              mySheetName = "удалить лист без запроса"
          
              'подавить диалоговое окно, которое просит пользователя подтвердить удаление листа
              Application.DisplayAlerts = Ложь
          
              'идентифицируйте лист, который вы хотите удалить, и удалите его
              ThisWorkbook.Sheets(mySheetName).Удалить
          
              'повторно включить отображение предупреждений и сообщений
              Application.DisplayAlerts = Истина
          
          Конец сабвуфера
           

          Эффекты выполнения примера макроса для удаления листа без запроса или предупреждения

          Следующий GIF иллюстрирует результаты выполнения примера макроса. Лист с именем «удалить лист без запроса» удаляется без запроса или предупреждения.

          #5: Удалить лист, если он существует

          Код VBA для удаления листа, если он существует

          Чтобы удалить лист, если он существует с помощью VBA , используйте макрос со следующей структурой оператора:

          При ошибке Возобновить Далее
          Листы(ИмяЛиста).Удалить
          При ошибке Перейти к 0
           

          Процесс, за которым следует код VBA для удаления листа, если он существует

          Заявление VBA Объяснение

          Строка № 1: При ошибке возобновить следующий
          1. Элемент: При ошибке возобновить следующий.
          Строка #2: Листы(ИмяЛиста).Удалить
          1. Элемент: Листов.
            • VBA Construct: Workbook.Sheets свойство.
            • Описание: Свойство Workbook.Sheets возвращает коллекцию Sheets, представляющую все листы рабочей книги, с которой вы работаете. Определите один объект из этой коллекции Sheets, указав соответствующее имя (SheetName).

              При удалении рабочего листа можно работать со свойством Workbook.Worksheets. Workbook.Worksheets представляет коллекцию Sheets, представляющую все рабочие листы в рабочей книге, с которой вы имеете дело.

              При удалении листа диаграммы можно работать со свойством Workbook.Charts. Workbook.Charts возвращает коллекцию Sheets, представляющую все листы диаграмм в рабочей книге, с которой вы имеете дело.

          2. Элемент: имя листа.
          3. Товар: Удалить.
          Строка № 3: При ошибке GoTo 0
          1. Элемент: При ошибке GoTo 0.
            • Конструкция VBA: При ошибке GoTo 0.
            • Описание: Оператор On Error GoTo 0 отключает обработку ошибок, заданную оператором On Error Resume Next. Если вы опустите оператор On Error GoTo 0, Excel обычно автоматически отключает обработчик ошибок при выходе из процедуры.

          Пример макроса для удаления листа, если он существует

          Следующий макрос удаляет лист с именем «удалить лист, если он существует» (Sheets(mySheetName)) в рабочей книге, где хранится макрос (ThisWorkbook), если такой лист существует. Если лист не существует, макрос обрабатывает ошибку. Макрос подавляет запрос, запрашивающий у пользователя подтверждение удаления листа (Application.DisplayAlerts = False).

          Sub deleteSheetIfExists()
          
              «Источник: https://powerspreadsheets.com/
              'Для получения дополнительной информации: https://powerspreadsheets.com/excel-vba-delete-sheet/
          
              'объявить переменную для хранения имени листа, который вы хотите удалить
              Dim mySheetName как строка
          
              'укажите имя листа, который вы хотите удалить
              mySheetName = "удалить лист, если он существует"
          
              'подавить диалоговое окно, которое просит пользователя подтвердить удаление листа
              Application.DisplayAlerts = Ложь
          
              'включить обработку ошибок, чтобы иметь дело с ошибкой, которая возникает, когда (если) вы пытаетесь удалить лист, который не существует
              При ошибке Возобновить Далее
          
              'идентифицируйте лист, который вы хотите удалить, и удалите его
              ThisWorkbook.Sheets(mySheetName). Удалить
          
              'отключить обработку ошибок
              При ошибке Перейти к 0
          
              'повторно включить отображение предупреждений и сообщений
              Application.DisplayAlerts = Истина
          
          Конец сабвуфера
           

          Эффекты выполнения примера макроса для удаления листа, если он существует

          Следующий GIF иллюстрирует результаты выполнения примера макроса. Лист с именем «удалить лист, если он существует» будет удален.

          #6: Удалить несколько листов

          Код VBA для удаления нескольких листов

          Чтобы удалить несколько листов с помощью VBA , используйте оператор со следующей структурой:

          Листы(Массив(СписокЛистов)).Удалить
           

          Процесс, за которым следует код VBA для удаления нескольких листов

          Заявление VBA Пояснение

          1. Артикул: листов.
            • VBA Construct: Workbook.Sheets свойство.
            • Описание: Свойство Workbook. Sheets возвращает коллекцию Sheets, представляющую все листы рабочей книги, с которой вы работаете. Определите один объект из этой коллекции Sheets, указав соответствующее имя (SheetName).

              При удалении листов можно работать со свойством Workbook.Worksheets. Workbook.Worksheets представляет коллекцию Sheets, представляющую все рабочие листы в рабочей книге, с которой вы имеете дело.

              При удалении листов диаграмм можно работать со свойством Workbook.Charts. Workbook.Charts возвращает коллекцию Sheets, представляющую все листы диаграмм в рабочей книге, с которой вы имеете дело.

          2. Элемент: Массив(…).
            • Конструкция VBA: Функция массива.
            • Описание: Функция Array возвращает Variant, содержащий массив.
          3. Артикул: Список листов.
          4. Артикул: Удалить.

          Пример макроса для удаления нескольких листов

          Следующий макрос удаляет (i) первые 2 листа и (ii) листы с именами «удалить несколько листов 1» и «удалить несколько листов 2» (Sheets(mySheetNames )), в книге, в которой хранится макрос (ThisWorkbook). Макрос подавляет запрос, запрашивающий у пользователя подтверждение удаления листа (Application.DisplayAlerts = False).

          Sub deleteMultipleSheets()
          
              «Источник: https://powerspreadsheets.com/
              'Для получения дополнительной информации: https://powerspreadsheets.com/excel-vba-delete-sheet/
          
              'объявить переменную для хранения Variant, содержащего массив, элементами которого являются порядковые номера или имена листов, которые вы хотите удалить
              Dim mySheetNames() как вариант
          
              'укажите (используя порядковые номера или имена) листы, которые вы хотите удалить
              mySheetNames = Array(1, 2, "удалить несколько листов 1", "удалить несколько листов 2")
          
              'подавить диалоговое окно, которое просит пользователя подтвердить удаление листа
              Application.DisplayAlerts = Ложь
          
              'определить листы, которые вы хотите удалить, и удалить их
              ThisWorkbook.Sheets(mySheetNames).Удалить
          
              'повторно включить отображение предупреждений и сообщений
              Application. DisplayAlerts = Истина
          
          Конец сабвуфера
           

          Эффекты выполнения примера макроса для удаления нескольких листов

          Следующий GIF иллюстрирует результаты выполнения примера макроса. (i) первые 2 листа (Лист6 и Лист7) и (ii) листы с именами «удалить несколько листов 1» и «удалить несколько листов 2» удаляются.

          Ссылки на конструкции VBA, используемые в этом руководстве по VBA

          Используйте следующие ссылки, чтобы посетить соответствующую веб-страницу в Microsoft Developer Network:

          1. Определите рабочую книгу, содержащую листы, рабочие листы или листы диаграмм для удаления:
            • Свойство Application.ThisWorkbook.
            • Свойство Application.ActiveWorkbook.
            • Свойство Application.Workbooks.
            • Объект рабочей книги.
          2. Идентификация листов, рабочих листов и листов диаграмм:
            • Свойство Workbook.Sheets.
            • Свойство Application.ActiveSheet.

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *