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

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

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

Для изменения кодов программно необходимо, чтобы было проставлено доверие к объектной модели проекта 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 li = li + lProcLineCount 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 и ранее и хочет удалить коды и макросы вручную – придется удалять каждый модуль из проекта и каждый код из модулей листов и книг поочередно, руками.

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

Источник: www.excel-vba.ru

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

Читайте также:  Макросы эксель для чайников
10.07.2014, 21:10

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

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

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

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

10.07.2014, 21:22 2

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

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

10.07.2014, 21:51 [ТС] 3 10.07.2014, 22:34 4

Решение

10.07.2014, 23:16 [ТС] 5 07.07.2015, 16:40 6

Решение

1. На вкладке Вид в группе Окно нажмите кнопку Отобразить окно.

2. В разделе Показать скрытое окно книги выберите пункт ЛИЧНОЕ, а затем нажмите кнопку ОК.

3. В списке Находится в выберите рабочую книгу с макросом, который требуется удалить. Например, выберите вариант Эта книга.

4. В поле Имя макроса выберите имя макроса, который нужно удалить.

5. Выберите команду Удалить.

14.03.2016, 23:40 7 12.05.2016, 10:48 8 20.03.2018, 17:38 9

Кстати, нет никакой необходимости пользоваться “Персональной Книгой Макросов”.

Можно любой документ с расширением XlsM сохранить в папку
c:UsersUserAppDataRoamingMicrosoftExcelXLSTART
И музыка будет играть

16.05.2019, 09:34 10 16.05.2019, 09:41 11
16.05.2019, 09:41
16.05.2019, 09:41

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

Автосохранение книги в созданую папку без макросов
Добрый день. Вопрос – есть код VBA Sub Auto_open() Dim x As String strPath = “” .

Остановка работы всех макросов перед закрытием книги.
Pered zakrytiem knigi nado ostanovitj rabotu vseh makrosov. Kak eto mozno sdelatj, 4erez kakie.

Запуск макроса из закрытой книги
Здравствуйте Гуру VBA! Может эта тема уже и поднималась. Я по крайней мере не нашел ответа.

Запуск макроса без книги
Дело такое: для производственных нужд сделал макрос который приводит данные в ячейках к.

Источник: www.cyberforum.ru

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

Если Вы задались вопросом «Как запустить макрорекордер и записать макрос в Excel?» то эта статья для Вас. Рассмотрим процесс запуска макрорекордера и записи макроса в разных версиях Excel. Для большей определенности запишем макрос, выделяющий столбец «А» электронной таблицы.

Microsoft Excel 2003

Запускаем приложение, заходим в главное меню Сервис/Макрос и выбираем пункт «Начать запись…»

После выбора пункта меню «Начать запись» появляется окно, в котором присваиваем нашему макросу имя «Макрос1», сочетание горячих клавиш присваивать не будем, для сохранения выберем личную книгу макросов, описание оставим то, которое есть по умолчанию. Жмем ОК.

С этого момента все наши действия записываются макрорекордером, автоматически переводятся на язык программирования Visual Basic for Application и записываются в модуль личной книги макросов.

В самом начале статьи мы условились, что нашим действием будет выделение столбца «А», поэтому выделяем столбец и останавливаем запись выбором меню «Остановить запись», которая находится также в меню Сервис/Макрос.

Вот собственно и все, макрос записан.

Посмотрим теперь, как работает записанный нами макрос. Для этого снимем выделение со столбца, зайдем в меню Сервис/Макрос/Макросы либо нажмем сочетание клавиш Alt+F8, выберем из списка макрос с нашим названием «Макрос1» и нажмем кнопку «Выполнить». Обратите внимание, что с помощью этого окна можно не только запустить макрос, можно также внести изменения в его программный код, а также удалить макрос.

Результатом выполнения макроса станет выделенный столбец «А», строго в соответствии с тем действием, которое мы записали. Если записанный Вами макрос не запустился, то Вам следует изменить параметры системы безопасности.

Для просмотра программного кода записанного макроса, запускаем редактор Visual Basic через меню Сервис/Макрос/Редактор Visual Basic, либо нажатием сочетания клавиш Alt+F11. В открывшемся окне редактора видим новый модуль Module1 в проекте VBAProject(PERSONAL.XLS), в котором сохранен программный код записанного нами макроса.

Microsoft Excel 2007

Запускаем приложение. Кнопка «Начать запись…» в Excel 2007 расположена сразу в нескольких местах, самое доступное из которых в левом нижнем углу окна приложения, в строке состояния.

Еще одно расположение откуда доступен запуск макрорекордера на вкладке «Вид», в группе «Макросы». Прежде чем продолжить, остановимся на том, что такое лента и что такое вкладка на этой ленте. Лента — это широкая полоса в верхней части окна программы, на которой размещены тематические наборы команд, собранные во вкладках и в группах. Вкладка в свою очередь, представляет собой часть ленты с командами, сгруппированными по задачам, которые обычно выполняются совместно. Группа — это еще более локализованный набор команд, сформированный по принципу наибольшей близости по типу выполняемой задачи. Непосредственно в группах уже находятся кнопки для выполнения команд.

И еще одно место где можно включить запись макроса макрорекордером — это вкладка «Разработчик», в том случае, если она предварительно была отображена на ленте. По умолчанию эта вкладка в Excel 2007 не отображается.

На вкладке «Разработчик» расположены все доступные инструменты для работы с макросами. О том как ее отобразить описано в статье «Работа с макросами VBA. Инструменты для работы с макросами.»

После нажатия, кнопка «Запись макроса» меняет свое название на «Остановить запись». Выполнение и просмотр кода макроса осуществляется точно также, как в Excel 2003.

Microsoft Excel 2010

В Excel 2010 расположение кнопок записи и остановки записи макроса абсолютно аналогичное версии Excel 2007. Это левый нижний угол окна приложения в строке состояния, вкладка «Вид» и вкладка «Разработчик». В этой версии Excel, редактор Visual Basic устанавливается как отдельный компонент пакета с наименованием «Общие средства Office» и называется «Visual Basic для приложений», поэтому если у Вас возникли проблемы с доступностью макрорекрордера или редактора Visual Basic, то Вам необходимо вернуться на этап установки пакета Microsoft Office и доустановить недостающий компонент. Кроме того, может возникнуть проблема при запуске самого макроса, связанная с настройками системы безопасности.

Другие материалы по теме:


Источник: officeassist.ru

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

Друзья!
Есть файл и в нем, в списке макросов, есть некий макрос (mod_011), который никак не удается удалить, а кнопка удаления на активна.
Откуда он взялся не понятно. Даже удалив все модули и листы с документа, макрос не пропал.

Есть ли способ по удалению такого макроса?

Друзья!
Есть файл и в нем, в списке макросов, есть некий макрос (mod_011), который никак не удается удалить, а кнопка удаления на активна.
Откуда он взялся не понятно. Даже удалив все модули и листы с документа, макрос не пропал.

Есть ли способ по удалению такого макроса?

Сообщение Друзья!
Есть файл и в нем, в списке макросов, есть некий макрос (mod_011), который никак не удается удалить, а кнопка удаления на активна.
Откуда он взялся не понятно. Даже удалив все модули и листы с документа, макрос не пропал.

Есть ли способ по удалению такого макроса?

Спасибо! Автор – blayd2007
Дата добавления – 05.05.2018 в 18:22

_Boroda_ Дата: Суббота, 05.05.2018, 18:36 | Сообщение № 2

Скажи мне, кудесник, любимец ба’гов.
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995

Ответить

blayd2007 Дата: Суббота, 05.05.2018, 19:00 | Сообщение № 3
blayd2007 Дата: Суббота, 05.05.2018, 19:18 | Сообщение № 4
_Boroda_ Дата: Суббота, 05.05.2018, 19:24 | Сообщение № 5

Скажи мне, кудесник, любимец ба’гов.
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995

Ответить

blayd2007 Дата: Суббота, 05.05.2018, 19:31 | Сообщение № 6
_Boroda_ Дата: Суббота, 05.05.2018, 19:46 | Сообщение № 7

Скажи мне, кудесник, любимец ба’гов.
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995

Ответить

blayd2007 Дата: Суббота, 05.05.2018, 20:17 | Сообщение № 8

Я понял, спасибо!

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

Наверное, теперь я пересмотрю свое мнение.

Спасибо большое за разъяснения!

Я понял, спасибо!

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

Наверное, теперь я пересмотрю свое мнение.

Спасибо большое за разъяснения! blayd2007

Сообщение Я понял, спасибо!

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

Наверное, теперь я пересмотрю свое мнение.

Спасибо большое за разъяснения! Автор – blayd2007
Дата добавления – 05.05.2018 в 20:17

Источник: www.excelworld.ru

data_client

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

Здравствуйте. Рад представить Вам пошаговую инструкцию по удалению скрытых имен в Экселе. Вы возможно сталкивались с ситуацией, когда при копировании листа в книге Excel возникала ошибка, которая сообщает что Имя уже существует и нужно либо выбрать новое, либо использовать тоже. Хорошо если таких ошибок 2 – 3, а если их несколько сотен или тысяч, тогда никакого терпения не хватит нажимать ОК. Используя рекомендации, представленные ниже, Вы избавитесь от ошибки навсегда! Итак, приступим:

1. Создание макроса DeleteHiddenNames.

Встроенной функции в Excel для решения этой проблемы я не нашел, зато есть замечательный макрос, с помощью которого мы от нее избавимся. Сначало надо зайти в редактор макросов, для этого запустите Excel, откройте файл с проблемой и нажмите ALT+F11. Откроется Microsoft Visual Basic for Applications, далее заходим в меню Insert и выбираем Module.

Открывается окно модуля. Туда Вы должны вставить следующий код макроса:

Sub DeleteHiddenNames()
Dim n As Name
Dim Count As Integer
On Error Resume Next
For Each n In ActiveWorkbook.Names
If Not n.Visible Then
n.Delete
Count = Count + 1
End If
Next n
MsgBox “Скрытые имена в количестве ” & Count & ” удалены”
End Sub

Выглядеть это должно в результате следующим образом:

Отлично. Макрос мы создали, теперь нам осталось его применить.

2. Использования макроса для удаления скрытых имен в Excel.

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

В открывшемся меню выбираем макрос DeleteHiddenNames и нажимаем кнопку выполнить.

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

Источник: www.excelguide.ru

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

Посмотрите, к примеру, здесь

Если не устроит, во вторник напишу подробнее.

Андрей, спасибо за ссылку. Я ее уже просматривал, но, к сожалению, не смог реализовать механизм, описанный там. По отдельности макросы отлично работают. Первый разрешает доступ к VBA проекту, а второй удаляет макросы. Однако вместе они не работают. Кроме того, не удается отключить доступ к проектам по окончанию удаления макросов. Буду признателен, если Вы сможете мне помочь.

M.S.D. [mdanshin] написано:
Seraser написано:

Спасибо, дельный совет. Однако в данном случае его невозможно использовать так как круг адресатов неограничен, а следоавтельно нет уверенности в том, что адресат сможет открыть файл. Может быть есть другие варианты?

SFX архивы в RAR ворят чудеса. Архив можно сопроводить информацией типа “для расшифровки используйте имя файла как пароль”, которая будет появлятся во время попытки распаковки. Да было бы желание.

К сожалению использование SFX архивов не всегда возможно т.к. некоторые почтовые серверы не позволяют передавать исполнимые файлы. Кроме того, приходится работать с адресатами в различных странах. Наличие у них установленного RAR предугадать невозможно. Думаю, что большинство из них даже не подозревает о том, что есть такая программа. В связи с тем, что работа по обмену информацией является оперативной, то использование дополнительных программ не является лучшим вариантом т.к. может привести к задержке и, следовательно, к материальным расходам, которые, в конечном итоге, будут повешены на IT. Необходимо учесть, что нашим клиентам приходится вести переписку не с постоянными партнерами, а с теми компаниями, которые оказываются партнерами по бизнесу на текущий момент. В связи с этим невозможно установить какое-то программное обеспечение, которое позволяло бы обрабатывать файлы, на стороне адресата. Более рациональным представляется удаление всех макросов после импорта данных в Excel либо Word. Поэтому хотелось бы получить компетентное мнение специалистов как это сделать легально и с минимальными затратами.

Источник: social.technet.microsoft.com

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

Adblock
detector