2012-04-13 2 views
8

Если Excel Workbook имеет много листов, а некоторые из них имеют макросы внутри, единственный способ я нашел, чтобы определить, какие листы имеют макрос, нажав каждый из них в Project Explorer (Ctrl + R в VBA).Как быстро определить, какие листы имеют макросы в книге Excel?

Есть ли другой способ сделать это?

ответ

3

Вы можете петлю над листами и использовать следующий синтаксис:

If ActiveWorkbook.VBProject.VBComponents(sheetName).CodeModule.CountOfLines <> 0 Then 

sheetName быть имя листа.

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

+0

Ummm, это не сработает :) См. Ссылку в моем сообщении –

+0

Ummm, я только что протестировал ее, и она работает для меня (печать 0, если нет кода и количества строк, если есть какой-то код). Я что-то пропустил? – assylias

+1

Да 2 вещи :) 1) Посмотрите мое последнее изменение в моем сообщении 2) Если у вас установлен флажок «Требовать переменную декларацию», тогда количество строк всегда будет больше 0, даже если кода нет, потому что он будет иметь «Option Explicit», наверху. Все это объясняется в моем сообщении в блоге. –

11

Я недавно ответил на вопрос MSDN и в конечном итоге написал сообщение в блоге.

Тема: Проверьте, если файл Excel имеет Macro

Ссылка: http://www.siddharthrout.com/2012/04/12/check-if-an-excel-file-has-a-macro/

Вы можете использовать .VBComponents.Item(i).Name с .VBComponents.Item(i).Type, чтобы проверить, какие "Листы" имеют "макросы" ,

EDIT

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

+0

+1 LOL, Да, я помню, что сообщение –

+0

+1 для непревзойденной точности;) – assylias

+0

+1 хороший ответ Sid – brettdj

Смежные вопросы