Перейти к содержимому
Наше приложение «Дешевые авиабилеты» в AppGallery >>

VBA Excel. Список установленных приложений

    Вывод списка установленных на компьютере приложений (программ) на рабочий лист Excel с помощью кода VBA.

    Введение

    Список установленных приложений может быть полезен не только в информационном плане для ознакомления с ним, но и для сохранения, например, на флэшку или другой гаджет перед переустановкой операционной системы. После переустановки ОС можно сразу по списку установить необходимые для работы программы.

    Ниже размещен пример кода VBA Excel, который использует объекты WMI (Windows Management Instrumentation) для доступа к реестру Windows и получения списка установленных приложений (по данным разделов Uninstall) и вывода их на новый лист в текущей книге Excel.

    Код для вывода списка приложений

    Код процедуры VBA Excel, выводящей список установленных на компьютере приложений (программ) на рабочий лист:

    В этом коде я использую условие, которое исключает из списка установленных программ приложения от издателей «Microsoft Corporation» и «NVIDIA Corporation».

    Если вы хотите отобразить полный список установленных приложений, замените в 3 местах строки:


    на строку:


    Результат работы кода:

    Установленные на компьютере приложения
    Список установленных на компьютере приложений

    Как использовать эту процедуру

    1. Откройте любую книгу Excel с поддержкой макросов.
    2. Нажмите Alt + F11, чтобы открыть редактор VBA (Visual Basic for Applications).
    3. В окне «Project — VBAProject» (слева) найдите свою книгу.
    4. Щелкните правой кнопкой мыши по «VBAProject (ВашаКнига.xlsm)» -> Insert -> Module.
    5. Вставьте скопированный выше код в окно нового модуля.
    6. Нажмите Alt + Q или закройте редактор VBA.
    7. Вернитесь в Excel. Нажмите Alt + F8, чтобы открыть диалоговое окно «Макрос».
    8. Выберите макрос ListInstalledApps из списка и нажмите кнопку «Выполнить».

    Запустить процедуру можно после 5 шага непосредственно из модуля.

    Макрос создаст (или очистит, если уже существует) лист с именем «Установленные программы» и заполнит его названиями, версиями и издателями приложений, найденных в соответствующих разделах реестра Windows.

    Пояснения к выводу списка программ

    • Макрос обращается к реестру через WMI провайдер StdRegProv, который является стандартным способом взаимодействия с реестром из скриптов и программ без прямого использования Windows API.
    • Он сканирует два основных раздела реестра: HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall (для программ, установленных для всех пользователей) и HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Uninstall (для программ, установленных только для текущего пользователя).
    • На 64-битных системах также проверяется раздел HKEY_LOCAL_MACHINE\Software\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall, который содержит информацию о 32-битных приложениях.
    • Для каждой найденной записи в разделе Uninstall скрипт пытается прочитать значения DisplayName, DisplayVersion и Publisher.
    • При чтении отдельных значений используется оператор On Error Resume Next, так как не все записи в Uninstall имеют все эти значения.
    • На лист Excel выводится только информация о тех записях, у которых есть значение DisplayName (Название приложения), чтобы отфильтровать большинство системных обновлений и компонентов без какого-либо имени.
    • Перед заполнением лист очищается, чтобы при повторном запуске макроса не дублировались данные.

    Возможные ограничения

    • Список может содержать не только полноценные приложения, но и некоторые обновления Windows, компоненты, библиотеки и т.п., которые зарегистрированы в разделе Uninstall.
    • Некоторые очень старые или специфические программы могут не регистрироваться стандартным образом в этих разделах реестра.
    • Права доступа: для чтения HKLM могут потребоваться права администратора, хотя обычно разделы Uninstall доступны для чтения всем пользователям. Макрос выполняется в контексте текущего пользователя Excel.
    • Список может содержать дубликаты, если одна и та же программа зарегистрирована в нескольких разделах (например, и в HKLM, и в HKCU).

    Содержание рубрики VBA Excel по тематическим разделам со ссылками на все статьи.