Макросы VBA Excel — Страница 12

Поиск подходящих строк в двумерном массиве

Данная функция ищет в массиве все строки, подходящие под заданные критерии, и возвращает список номеров подходящих строк (через запятую)

Function ArrAutofilter(ByRef arr, ParamArray args() As Variant) As String
    ' получает по ссылке массив ARR для фильтрации
    ' и список критериев фильтрации в формате "3=некий текст" (номер столбца, "=", искомое значение)
    ' возвращает текстовую строку - список номеров подходящих строк (через запятую)

Function ArrAutofilterEx(ByRef arr, ParamArray args() As Variant) As Variant
    ' получает по ссылке массив ARR для фильтрации
    ' и список критериев фильтрации в формате "3=некий текст" (номер столбца, "=", искомое значение)
    ' возвращает двумерный массив с подходящими строками

Макрос поиска видимых строк и заполненных ячеек на листе Excel

Если ваш макрос выдаёт ошибку при использовании метода SpecialCells - возможно, причина в установленной защите листа Excel.

Почему разработчики Microsoft отключили работу этой функции на защищённых листах - не совсем понятно, но мы попробуем обойти это ограничение.

 

Итак, нам надо получить все заполненные ячейки из некого диапазона листа Excel. 

Обычно для этого используется вызов метода SpecialCells - например,

msgbox Range("a2:d8").SpecialCells(xlCellTypeConstants).Address

Но на защищенном листе такой код выдаст ошибку 1004.

Чтобы избавиться от ошибки, мы используем функцию SpecialCells_TypeConstants - замену встроенному методу SpecialCells(xlCellTypeConstants)

 

Получение данных из закрытой книги Excel

Функция GetValue предназначена для получения данных из закрытой книги Excel

Использовать такой способ имеет смысл только в том случае, если из большого файла надо получить значения только нескольких ячеек (или одного диапазона ячеек), и при этом точно известно расположение на листе интересующих нас ячеек, и имена листов

Пример использования функции:

Sub ПримерИспользования_GetValue()
    p = "C:\Documents and Settings\Бухгалтерия" ' папка с файлом
    f = "расход.xls" ' имя файла
    s = "доходы" ' название листа
    a = "D145" ' интересующая нас ячейка
    
    ' выполняем загрузку данных из закрытой книги Excel
    ЗначениеЯчейки = GetValue(p, f, s, a)
 
    Debug.Print ЗначениеЯчейки ' выводим результат в окно Immediate
End Sub

Посмотрите также результат использования этой функции внутри цикла
для получения значений ячеек из списка найденных файлов

Загрузка картинок из интернета по ссылкам, и сохранение их в отдельные папки

Вид исходный таблицы со ссылками на картинки в интернете

Данный макрос перебирает все строки на листе, и для каждой строки скачивает из интернета картинки, ссылки на которые присутствуют в этой строке (начиная с 3 столбца)