Поиск книг, содержащих макросы (Microsoft Excel)
Компания Ричарда, как и многие другие, довольно часто использует Excel. Фактически, у них есть тысячи и тысячи книг Excel, которые они собрали за долгие годы. Ричарду нужен способ узнать, в каких из этих книг есть макросы VBA, без необходимости открывать и проверять каждую книгу по отдельности. Он задается вопросом, есть ли простой способ сделать это.
Один довольно упрощенный способ найти все ваши книги, содержащие макросы, — просто поискать любые файлы, которые используют расширения XLSM или XLSB.
Книги, содержащие макросы, должны храниться в файлах с этими расширениями. Хотя это не стопроцентная защита от ошибок, это хорошее место для начала.
Вы также можете использовать возможности поиска Windows (за пределами Excel)
и найдите любой файл, содержащий текст «End Sub» или «End Function». Это позволит быстро определить любые потенциальные рабочие книги-кандидаты, поскольку любая процедура VBA должна использовать в конце один из этих двух операторов.
Если вы используете устаревшие книги (разработанные с использованием файлового формата Excel 2003), вам действительно нужно заглянуть внутрь каждой книги. Это можно сделать программно, то есть у вас может быть макрос, который открывает каждую книгу в папке и проверяет ее на предмет наличия в ней каких-либо макросов.
В качестве примера вы можете создать макрос, который проходит по каждому из файлов в каталоге и определяет, является ли файл книгой Excel. Затем он может открыть файл и проверить, есть ли в нем проект VBA.
Sub FindMacros() Dim sPath As String Dim sFile As String Dim sFoundFiles As String 'specify directory to use - must end in "\" sPath = "C:\MyData\Excel Data\" sFile = Dir(sPath) Do While sFile <> "" If InStr(sFile, ".xls") > 0 Then Workbooks.Open (sPath & sFile) If Workbooks(sFile).HasVBProject Then sFoundFiles = sFoundFiles & sFile & vbCrLf End If Workbooks(sFile).Close (False) End If sFile = Dir ' Get next filename Loop If Len(sFoundFiles) = 0 Then MsgBox "No workbooks found that contain macros" Else sFoundFiles = "The following workbooks contain macros:" & _ vbCrLf & vbCrLf & sFoundFiles MsgBox sFoundFiles End If End Sub
В этом примере используется свойство HasVBProject (представленное в объектной модели Excel в Excel 2007), чтобы определить, есть ли в файле какие-либо макросы или нет. По завершении макрос отображает окно сообщения, в котором перечислены те рабочие листы, которые содержат макросы.
_Примечание: _
Если вы хотите узнать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах ExcelTips), я подготовил специальную страницу, содержащую полезную информацию.
link: / excelribbon-ExcelTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера]
.
ExcelTips — ваш источник экономичного обучения Microsoft Excel.
Этот совет (12466) применим к Microsoft Excel 2007, 2010, 2013 и 2016.
Вы можете найти версию этого совета для старого интерфейса меню Excel здесь:
link: / excel-Finding_Workbooks_Contain_Macros [Поиск книг, содержащих макросы]
.