Как проверить / просмотреть макрос Excel перед «включением макросов» для листа?

13

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

Однако в Excel 2010 кнопка «Изменить» в разделе «Просмотр макросов» отключена, если я сначала не включу макросы для листа - но если я сначала включу макросы, то я могу, в большинстве случаев, узнать о вредоносном коде только после того, как этот код будет завершен. Бег...

Как я могу просмотреть источник макроса, прежде чем включать макросы для документа?

ГДж.
источник

Ответы:

13

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

Для начала вам необходимо убедиться, что вкладка «Разработчик» включена. Перейдите в Файл -> Параметры, затем:

вкладка разработчика

На вкладке «Разработчик», которая должна появиться, теперь должна быть кнопка «Visual Basic», которую вы можете нажать, чтобы перейти в редактор Visual Basic.

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

Я склонен делать это с документами, которым я не доверяю.

Примечание. Я сделал это в Word, такая же функция доступна в Excel, и опция ее включения находится в том же месте.

Мокубай
источник
9

Во всех версиях всех приложений Office с 2003 года и, возможно, ранее Alt+ F11будет открываться редактор VBA. Нет необходимости активировать вкладку «Разработчик» на ленте для Office 2007 и новее, чтобы это работало.

hBy2Py
источник
2
Стоит отметить, что во многих версиях (по крайней мере, в Excel) Altзнак + F11может привести ! SECURITY WARNING ... Enable Contentк исчезновению баннера " ", что означает, что теперь выполнение кода включено. Это вводит в заблуждение. Вы можете продемонстрировать это, создав документ с on_open()модулем. Вы сможете Alt+ войти F11и проверить код без запуска события.
Питер
0

Хотя ответы от 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.

Решение оказалось довольно простым.

  1. Нажмите Ribbon-> Developer->MacroSecurity
  2. альтернативно, File-> Options-> SecurityCenter(последняя группа опций) -> Settings-> Macros)
  3. Помните (или запишите), каковы текущие настройки
  4. Измените их на «Блокировать все макросы без уведомления»
  5. Подтвердите, закройте, снова откройте документ, снова откройте редактор VBA
  6. Восстановите исходные настройки, когда вы закончили играть с огнем

Последствия:

  • уведомление не показывалось
  • документ был полностью загружен
  • макросы не были выполнены
  • 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

КСТАТИ. как вы можете видеть, я немедленно закомментировал точку входа и заново сохранил документ, на случай, если я позволю макросам запускаться в какой-то момент времени позже.

Кецалькоатль
источник