Поиск книг, содержащих макросы

Компания Ричарда, как и многие другие, довольно часто использует Excel. Фактически, у них есть тысячи и тысячи книг Excel, которые они собрали за долгие годы. Ричарду нужен способ узнать, в каких из этих книг есть макросы VBA, без необходимости открывать и проверять каждую книгу по отдельности. Он задается вопросом, есть ли простой способ сделать это.

Один довольно упрощенный способ найти все ваши книги, содержащие макросы, – это просто поискать любые файлы, которые используют расширения XLSM или XLSB. Книги, содержащие макросы, должны храниться в файлах с этими расширениями. Хотя это не на 100% надежно, это хорошее место для начала.

Вы также можете использовать возможности поиска Windows (вне Excel) и искать любой файл, содержащий текст «End Sub» или «Конечная функция». Это позволит быстро определить любые потенциальные книги-кандидаты, поскольку любая процедура VBA должна использовать в конце один из этих двух операторов.

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

В качестве примера вы можете создать макрос, который просматривает каждый из файлов в каталоге и определяет, является ли файл книгой Excel. Затем он может открыть файл и проверить, есть ли в нем проект VBA.

Sub FindMacros () Dim sPath As String Dim sFile As String Dim sFoundFiles As String ‘укажите каталог для использования — должен заканчиваться на «» sPath = «C: MyData Excel Data » sFile = Dir (sPath) Do While sFile «» Если InStr (sFile, «.xls»)> 0, то Workbooks.Open (sPath & sFile) If Workbooks (sFile) .HasVBProject Then sFoundFiles = sFoundFiles & sFile & vbCrLf End If Workbooks (sFile) .Close (False) End If sFile = Dir ‘Получить следующее имя файла Loop If Len (sFoundFiles) = 0 Then MsgBox «No workbooks обнаружено, что содержат макросы «Else sFoundFiles =» Следующие книги содержат макросы: «& _ vbCrLf & vbCrLf & sFoundFiles MsgBox sFoundFiles End IfEnd Sub

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

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

Бытовой вопрос