Here is a sure shot way to check if the file has a macro or not.
This method is not for checking if the workbook has any code or not. I am checking for «SUB» and «FUNCTION». Though by strict definition a macro doesn’t have a «FUNCTION». You can omit that.
Sub Sample()
Dim wb As Workbook
Dim HasMacro As Boolean
Dim StrCode As String'~~> Open the file to check if it has any MACRO
Set wb = Workbooks.Open("C:UsersSiddharth RoutDesktopbook2.xlsm")Select Case UCase(Split(wb.Name, ".")(UBound(Split(wb.Name, "."))))
'<~~ Excel files which can have a macro.
Case "XLS", "XLSM", "XLTM", "XLT", "XLA", "XLSB", "XLAM"
'~~> Taking this approach as there are very few extensions which support macros
With wb.VBProject
'~~> Components are like sheet1, thisworkbook, module etc.
If .VBComponents.Count > 0 Then
For i = 1 To .VBComponents.Count
'~~> get the entire code in the module
StrCode = .VBComponents.Item(i).CodeModule.Lines(1, .VBComponents.Item(i).CodeModule.CountOfLines)
StrCode = " " & Replace(StrCode, vbCrLf, " ") & " "
If InStr(StrCode, " Sub ") > 0 Or InStr(StrCode, " Function ") > 0 Then
HasMacro = True
Exit For
End If
Next
End If
End With
End Selectwb.Close SaveChanges:=False
If HasMacro Then
MsgBox "The workbook has macro"
Else
MsgBox "The workbook doesn't have a macro"
End If
End Sub
Sid (A good exercise for the Heart is to bend down and help another up) Please do not email me your questions. I do not answer questions by email unless I get paid for it If you want, create a thread in VB.Net/Excel forum and email me the link and I will
help you if I can.
Download Article
An easy-to-use guide to find and manage macros in your Excel workbook
Download Article
This wikiHow teaches you how to see a list of macros in your Excel workbook, as well as how to view each macro’s details in the Visual Basic Editor. Before you can work with macros, you’ll need to enable the Developer tab in Excel—fortunately, this is super easy to do.
Steps
-
1
Open a workbook in Excel. You can double-click the name of the workbook to open it in Excel. Alternatively, open Excel first from the Windows Start menu or your Mac’s Applications folder, click Open, and then double-click the file.
-
2
Enable the Developer tab. If the Developer tab is enabled, it’ll be in the menu bar at the top of Excel. If you don’t see it, here’s how to enable it:
-
Windows:
- Click the File menu and select Options.
- Click Customize Ribbon.
- Select Main Tabs from the «Customize the ribbon» drop-down menu.[1]
- Check the box next to Developer and click OK.
-
macOS:
- Click the Excel menu and select Preferences.[2]
- Select Main Tabs under «Customize the Ribbon.»
- Check the box next to Developer.
- Click Save.
- Click the Excel menu and select Preferences.[2]
Advertisement
-
Windows:
-
3
Click the Developer tab. It’s at the top of Excel.
-
4
Click Macros. It’s on the left side of the toolbar. This displays a list of macros in all open workbooks by default.
- To see macros in a particular workbook only, select that workbook’s name from the «Macros in» menu.
-
5
Select a macro and click Edit. This displays the macro in the Visual Basic Editor.
Advertisement
Ask a Question
200 characters left
Include your email address to get a message when this question is answered.
Submit
Advertisement
Thanks for submitting a tip for review!
References
About This Article
Article SummaryX
1. Open a workbook.
2. Click the Developer tab.
3. Click Macros.
4. Select a Macro.
5. Click Edit.
Did this summary help you?
Thanks to all authors for creating a page that has been read 41,480 times.
Is this article up to date?
Excel для Microsoft 365 Word для Microsoft 365 PowerPoint для Microsoft 365 Excel 2021 Word 2021 PowerPoint 2021 Excel 2019 Word 2019 PowerPoint 2019 Excel 2016 Word 2016 PowerPoint 2016 Excel 2013 Word 2013 PowerPoint 2013 Excel 2010 Word 2010 PowerPoint 2010 Еще…Меньше
Инспектор документов обнаружил в документе Office (Word, Excel или PowerPoint) один или несколько следующих элементов, которые могут содержать скрытые данные:
-
макросы (включая любые макросы WordBasic в документах Word или листы макросов Excel 4.0 (XLM) в книгах Excel);
-
модули VBA;
-
элементы COM или ActiveX;
-
формы пользователей (включая любые формы Excel 5.0 в книгах Excel);
-
пользовательские функции в книгах Excel.
Проблема
Инспектор документов не может удалить эти элементы, потому что в результате документ может перестать работать надлежащим образом.
Рекомендуемое решение
-
Закройте инспектор документов.
-
Вручную удалите все макросы, модули VBA, элементы COM или ActiveX, формы пользователей и пользовательские функции, которые могут содержать скрытые данные.
Чтобы найти макросы и модули VBA в документе, сделайте следующее:
-
В Word или Excel выберите Вид > Макрос > Макросы.
В PowerPoint выберите Вид > Макрос.
В окне Макрос выберите макрос, который хотите удалить, и нажмите кнопку Удалить.
-
Чтобы найти макросы в редакторе VBA, нажмите клавиши ALT+F11.
-
-
Чтобы убедиться, что проблема устранена, выберите Файл > Сведения > Поиск проблем > Инспектор документов.
Нужна дополнительная помощь?
Хитрости »
1 Май 2011 465157 просмотров
Что такое макрос и где его искать?
Скачать файл, используемый в видеоуроке:
Tips_Macro_Basic_Video.xls (63,5 KiB, 4 006 скачиваний)
Наверное, многие слышали это слово «макрос«, но не все имеют точное представление что это, если заглянули на эту страничку.
Макрос
— это макрокоманда(так звучит в правильном переводе с англ.языка), содержащая последовательность действий, записанных пользователем. Запись производится с помощью встроенного в пакет Microsoft Office языка программирования — Visual Basic for Application(VBA).
Зачем же нужны макросы? А нужны они для того, чтобы избавить Вас от рутинного выполнения одних и тех же действий. Например, Вам каждый день приходиться удалять из ежедневных отчетов по несколько столбцов и добавлять новые строки для шапки и т.п. Скучно и утомительно. Вы просто можете записать один раз все эти действия макрорекордером, а в дальнейшем только вызывать записанный макрос и он все сделает за Вас. Что немаловажно, для использования макрорекордера и записи макроса не надо обладать никакими навыками программирования.
В этой статье:
- Подготовка к записи макроса
- Запись макроса
- Параметры записи макроса
- Воспроизведение макроса
- В каких файлах можно хранить макросы?
Прежде чем начать работать с макросами необходимо разрешить их выполнение, т.к. по умолчанию они отключены. Для этого необходимо сделать следующее:
- Excel 2003:
Сервис-Безопасность-Уровень макросов «Низкий» - Excel 2007:
Кнопка Офис—Параметры Excel (Excel Options)—Центр управления безопасностью (Trust Centr)—Параметры центра управления безопасностью (Trust Centr Settings)—Параметры макросов (Macro Settings)—Разрешить все макросы (Enable All Macros) - Excel 2010:
Файл (File)—Параметры (Options)—Центр управления безопасностью (Trust Centr)—Параметры центра управления безопасностью (Trust Centr Settings)—Параметры макросов (Macro Settings)—Разрешить все макросы (Enable All Macros)
После изменения параметров безопасности макросов необходимо перезапустить приложение Excel: закрыть его полностью и открыть заново. Только после этого изменения вступят в силу.
Прежде чем начать записывать макрос необходимо помнить следующее:
- Макрорекордер записывает АБСОЛЮТНО ВСЕ ваши действия – ошибки, прокручивание экрана, переключение между листами, выделение ячеек и т.д. Поэтому перед записью своих действий необходимо сначала тщательно продумать все свои действия, чтобы в дальнейшем записать только то, что действительно необходимо записать и в дальнейшем воспроизвести. Это сократит как сам код, так и время его выполнения
- Макрорекордер записывает действия выполненные только в пределах Microsoft Excel. Если вы переключитесь в другое приложение – действия в этой программе записаны не будут. Если закроете Excel – запись прекратится
- Макрорекордер может записать только те действия, которые можно проделать вручную(те, которые доступны для выполнения из меню и с панелей)
- Если во время кода вы совершили ошибочное действие и нажали кнопку отмены(Ctrl+Z) – отмененное действие не будет записано в макрос, как будто вы его просто не делали
Для пользователей Excel 2003 запись макроса возможна через меню:
Сервис —Макрос —Начать Запись
Для пользователей Excel 2007-2010 и старше:
Перед записью можно задать имя записываемому макросу и назначить сочетание клавиш, при нажатии которых этот макрос будет запускаться. После нажатия кнопки для начала записи макроса появится окно:
Имя макроса
– не должно содержать пробелов, запятых, двоеточий и т.п. Допустимы символы кириллицы, латиницы, цифры и нижнее подчеркивание (я рекомендую давать макросам имена, содержащие только буквы латиницы). Имя макроса всегда должно начинаться с буквы и не должно совпадать со встроенным именем Excel или именем другого объекта в книге (например, не должно носить имя Workbook, Cells или ЭтаКнига). Лучше давать макросу сразу понятное имя, отражающее примерную суть того, что он делает.
Сочетание клавиш
– можно назначить вызов макроса сочетанием клавиш. Доступно назначение любой цифры или буквы в сочетании с Ctrl.
Сохранить в
– выбираете место хранения записываемого макроса. Доступны варианты:
- Эта книга (This Workbook) – макрос будет записан в той же книге, из которой была запущена запись. Записанный макрос будет доступен из приложения только если книга открыта
- Новая книга (New Workbook) – будет создана новая книга, в которой записан макроса. Записанный макрос будет доступен из приложения только если книга открыта
- Личная книга макросов (Personal Macro Workbook) – самый интересный вариант. Если его выбрать, то макрос будет сохранен в отдельной книге PERSONAL.XLS (для Excel 2007 и выше — PERSONAL.XLSB). Макросы, записанные в эту книгу доступны из всех открытых книг Excel и эта книга подключается автоматически при запуске самого Excel. Т.е. однажды записав где-то макрос в эту книгу – он теперь будет доступен из любой книги независимо от того, открыта ли книга, из которой был записан макрос или нет. Изначально эта книга отсутствует и создается в момент первого обращения к ней (т.е. как только вы первый раз выбрали Сохранить в личную книгу макросов)
После записи макроса запустить его можно разными способами:
- ПРИ ПОМОЩИ СОЧЕТАНИЯ КЛАВИШ: Alt+F8
Этот способ универсальный и его можно использовать из любой версии Excel. Достаточно нажать сочетание клавиш Alt+F8 и выбрать нужный макрос из списка:
- ВЫЗОВ ИЗ МЕНЮ:
Excel 2007-2010 и старше: вкладка Разработчик (Developer)→ Макросы (Macros)
Excel 2003: Сервис→ Макрос→ Макросы - НАЖАТИЕМ СОБСТВЕННОЙ КНОПКИ НА ЛИСТЕ:
Можно разместить на листе собственную кнопку, по нажатии которой будет запускаться записанный макрос. Подробно этот процесс я описал в статье: Как создать кнопку для вызова макроса на листе - ПРИ ПОМОЩИ НАЗНАЧЕННЫХ МАКРОСУ ГОРЯЧИХ КЛАВИШ:
Если вы перед записью назначили макросу сочетание клавиш, то вы также можете вызвать этот макрос и нажатием данного сочетания. Горячие клавиши макросу можно назначить и после записи: Alt+F8→ Выделяем нужный макрос→ Параметры (Options). - ПРИ НАСТУПЛЕНИИ ОПРЕДЕЛЕННОГО СОБЫТИЯ В ЛИСТЕ ИЛИ КНИГЕ:
Прежде чем пробовать использовать этот метод рекомендуется изучить статью Что такое модуль? Какие бывают модули?Для этого сначала необходимо вставить код макроса в тело событийной процедуры (подробнее про событийные процедуры). Например, если выбрать процедуру листа Change, то в лист автоматически будет вставлена пустая процедура:
Private Sub Worksheet_Change(ByVal Target As Range) End Sub
Если ранее вами был записан код выделения и удаления двух столбцов – Макрос1:
Sub Макрос1() ' ' Макрос1 Макрос ' макрос удаляет столбцы C и D из активного листа ' ' Сочетание клавиш: Ctrl+Shift+Q ' Columns("C:D").Select Selection.Delete Shift:=xlToLeft End Sub
То для выполнения это кода при наступлении события изменения на листе можно вставить вызов этого макроса:
Private Sub Worksheet_Change(ByVal Target As Range) Call Макрос1 End Sub
или вставить сам код (без Sub и End Sub) внутрь процедуры Worksheet_Change:
Private Sub Worksheet_Change(ByVal Target As Range) Columns("C:D").Select Selection.Delete Shift:=xlToLeft End Sub
Как ни странно, но начиная с версии 2007 Excel не все файлы могут хранить макросы. Это значит, что если макрос был записан в файле и потом файл был сохранен в формате, который хранение макросов не поддерживает — макросы пропадут. Как правило Excel в таком случае выдаст предупреждение о том, что проект VBA в файле этого формата не может быть сохранен и будет удален, если нажать Да:
Чтобы сохранить файл с поддержкой макросов необходимо будет нажать Нет и из списка форматов выбрать тот, который поддерживает хранение макросов.
Ниже приведены форматы файлов, применяемые в Excel с описанием того, можно ли в них хранить макросы(VBA коды):
- *.xls – формат книги Excel 97–2003 (поддержка VBA, макросов)
- *.xla – надстройка Excel 97–2003 (поддержка VBA, макросов)
- *.xlsx – формат книги Excel 2007 по умолчанию без поддержки макросов
- *.xlsm – книга Excel 2007 с поддержкой макросов
- *.xlsb – двоичный формат для больших объемов данных (с поддержкой VBA, макросов)
- *.xltx – шаблон книги Excel 2007 без поддержки макросов
- *.xltm – шаблон книги Excel 2007 с поддержкой макросов
- *.xlam – надстройка Excel 2007
Для смены формата файла его необходимо сохранить в другом формате:
- Excel 2007: Кнопка Офис —Сохранить как(SaveAs) -Выбрать необходимый формат файла
- Excel 2010: Файл(File) —Сохранить как(SaveAs) -Выбрать необходимый формат файла
Теперь несложно понять, что хранить макросы в версиях Excel 2007 и выше можно в форматах: xls, xla, xlsm, xlsb, xltm, xlsm.
Также см.:
Почему не работает макрос?
Как создать кнопку для вызова макроса на листе?
Select и Activate — зачем нужны и нужны ли?
Как ускорить и оптимизировать код VBA
Статья помогла? Поделись ссылкой с друзьями!
Видеоуроки
Поиск по меткам
Access
apple watch
Multex
Power Query и Power BI
VBA управление кодами
Бесплатные надстройки
Дата и время
Записки
ИП
Надстройки
Печать
Политика Конфиденциальности
Почта
Программы
Работа с приложениями
Разработка приложений
Росстат
Тренинги и вебинары
Финансовые
Форматирование
Функции Excel
акции MulTEx
ссылки
статистика
Как определить нахождение макроса который висит на панели БД |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
- ПЛЫ
- Начинающий
- Сообщения: 5
- Зарегистрирован: 18.02.2004 (Ср) 15:41
Как увидеть макрос в Excel
При загрузке файла Excel предупреждает о макросах.
В Сервис-Макрос-Макросы — пусто.
Как-нибудь можно на них посмотреть?
- Kostyan
- Постоялец
- Сообщения: 439
- Зарегистрирован: 20.09.2002 (Пт) 4:14
- Откуда: Россия, Уссурийск
-
- ICQ
Kostyan » 18.02.2004 (Ср) 16:12
Сервис—>Макрос—>Редактор VisualBasic
Нет ничего невозможного для человека с интеллектом.
- ПЛЫ
- Начинающий
- Сообщения: 5
- Зарегистрирован: 18.02.2004 (Ср) 15:41
ПЛЫ » 18.02.2004 (Ср) 16:42
Вижу девственно-серое поле.
Дальше-то куда нажать?
- Dave
- Обычный пользователь
- Сообщения: 56
- Зарегистрирован: 18.02.2004 (Ср) 11:02
- Откуда: Москва
-
- ICQ
Dave » 18.02.2004 (Ср) 17:33
Или у тебя в книги вообще нет макросов, или открой в Project папку Модулей и кликнув по любому ( если они конечно там будут ) выбери ViewCod. В принципе код может быть и на книги и на формах.
- Vitaly1
- Брехман
- Сообщения: 1578
- Зарегистрирован: 30.12.2002 (Пн) 16:35
- Откуда: Russia, Mosсow
Vitaly1 » 18.02.2004 (Ср) 18:44
1)Вполне возможно, что в проекте есть модули макросов, а макросов нет, или в модулях макросов или в других модулях есть пустые строки.
2)Может быть код VBA в модулях книги или листов.
Так ищи:
1) Войди в редактор VBA:Сервис—>Макрос—>Редактор VisualBasic
2) Открой дерево проекта VBA:Вид—>окно проекта
3)В окне проекта двумя кликами открой свой проект
4)Двумя кликами активизируй модули проекта
- ПЛЫ
- Начинающий
- Сообщения: 5
- Зарегистрирован: 18.02.2004 (Ср) 15:41
ПЛЫ » 19.02.2004 (Чт) 7:39
Похоже, что верно 1: в проекте есть модули макросов, а макросов нет.
Но мне сказали, что там макросы есть, но они скрыты. Видимо, на…ли.
Скорее всего, некорректное удаление макросов, которые использовались для заполнения таблицы.
- Vitaly1
- Брехман
- Сообщения: 1578
- Зарегистрирован: 30.12.2002 (Пн) 16:35
- Откуда: Russia, Mosсow
Vitaly1 » 19.02.2004 (Чт) 14:42
Так удали модуль макросов правой клавишей, если они тебе не нужны!
Вернуться в VBA
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1
Иногда я получаю файл xls, который содержит макрос, который я должен использовать. Если я не полностью доверяю отправителю, я хочу посмотреть на источник макроса, чтобы убедиться, что он действительно выполняет только то, что должен.
Однако в Excel 2010 кнопка «Изменить» в разделе «Просмотр макросов» отключена, если я сначала не включу макросы для листа — но если я сначала включу макросы, то я могу, в большинстве случаев, узнать о вредоносном коде только после того, как этот код будет завершен. Бег…
Как я могу просмотреть источник макроса, прежде чем включать макросы для документа?
Ответы:
Вы можете просмотреть все макросы в документе, используя вкладку Разработчик в Word, чтобы предоставить вам легкий доступ к подпрограммам Visual Basic, встроенным в документ.
Для начала вам необходимо убедиться, что вкладка «Разработчик» включена. Перейдите в Файл -> Параметры, затем:
На вкладке «Разработчик», которая должна появиться, теперь должна быть кнопка «Visual Basic», которую вы можете нажать, чтобы перейти в редактор Visual Basic.
Просматривая дерево документов слева от редактора, вы сможете увидеть весь код и модули, встроенные в документ, без необходимости сначала включать макросы.
Я склонен делать это с документами, которым я не доверяю.
Примечание. Я сделал это в Word, такая же функция доступна в Excel, и опция ее включения находится в том же месте.
Во всех версиях всех приложений Office с 2003 года и, возможно, ранее Alt+ F11будет открываться редактор VBA. Нет необходимости активировать вкладку «Разработчик» на ленте для Office 2007 и новее, чтобы это работало.
Хотя ответы от Mokubai и hBy2Py кажутся великолепными и действительно позволяют вам показать редактор VBA, кажется, что по крайней мере в Excel из Microsoft Office Professional Plus 2016 все еще не разрешается просматривать код.
Мне довелось владеть этой версией, и я был уверен, что получил вредоносный XLS и хотел проверить его. После его открытия в Excel он открылся в безопасном режиме, как обычно, и, конечно, я не собирался отказываться от этого режима. Когда я открыл VBA Editor, как указали другие респонденты, мне представили … пустой VBA Editor . Панель «Project Explorer» содержательно отображала «Нет открытых проектов», хотя я еще не закрыл файл XLS. Просто для тестирования я открыл второй документ (одна из моих работ), и он сразу же появился в VBA Editor и был (должным образом) полностью лишен VBA. Однако документ из Интернета не был указан в редакторе VBA .
Я потратил немного времени, пытаясь понять, почему это так, и не нашел причин. Кажется, что моя редакция Excel просто не отправляет модули VBA в редактор VBA, когда документ загружается в безопасном режиме. К сожалению, в редакторе VBA отсутствует некоторая функция «открыть VBA из документа Office», поэтому очевидно, что Excel — это мозг, и он должен сначала распаковать / декодировать / что угодно XLS.
Решение оказалось довольно простым.
- Нажмите
Ribbon
->Developer
->MacroSecurity
- альтернативно,
File
->Options
->SecurityCenter
(последняя группа опций) ->Settings
->Macros
) - Помните (или запишите), каковы текущие настройки
- Измените их на «Блокировать все макросы без уведомления»
- Подтвердите, закройте, снова откройте документ, снова откройте редактор VBA
- Восстановите исходные настройки, когда вы закончили играть с огнем
Последствия:
- уведомление не показывалось
- документ был полностью загружен
- макросы не были выполнены
- VBA Editor получил модули и представил весь код
Если вам любопытно: да, это действительно был злой, крошечный пример:
Function marcopoloko()
marcopoloko = Left("CM to inches converter", 2) + Right("fed.ex", 4) + "e " + "/c" + numneroop + amagilocard
End Function
'Sub Workbook_Open()
'If xlTickMarkOutside > 0 Then
'Shell marcopoloko + """", xlXmlExportSuccess
'End If
'End Sub
КСТАТИ. как вы можете видеть, я немедленно закомментировал точку входа и заново сохранил документ, на случай, если я позволю макросам запускаться в какой-то момент времени позже.