Чтение значений из реестра Windows на VBA

Чтение и запись в реестр Windows в произвольную ветку можно произвести при помощи функций объекта WScript.Shell:

RegRead и RegWrite

Первая функция возвращает значение, считанное из реестра, вторая - записывает заданное значение в реестр.

При попытке считать несуществующий параметр возникает ошибка,
обойти которую нам поможет директива On Error Resume Next 

 

Пара функций для примера:

(получаем настройки программы из реестра Windows)

Function DefaultMailAccount() As String
    ' читает из реестра настройки почтового ящика,
    ' установленного в TheBAT! как "ящик по-умолчанию"
    ' возвращает адрес почты, или пустую строку, если TheBAT! не настроен
    On Error Resume Next: Err.Clear
    key$ = "HKEY_CURRENT_USER\Software\RIT\The Bat!\Users depot\Default"
    DefaultMailAccount = CreateObject("WScript.Shell").RegRead(key$)
End Function
Function ПутьКФайлуПрограммыTheBAT() As String
    ' читает из реестра путь к исполняемому файлу программы TheBAT!
    ' возвращает путь к файлу, или пустую строку, если TheBAT! не установлен
    On Error Resume Next: Err.Clear
    key$ = "HKEY_CURRENT_USER\Software\RIT\The Bat!\EXE path"
    ПутьКФайлуПрограммыTheBAT = CreateObject("WScript.Shell").RegRead(key$)
End Function

Sub TheBAT_MailBoxes()
    ' макрос выводит список всех почтовых ящиков, настроенных в программе TheBAT!
    On Error Resume Next: Err.Clear
    With CreateObject("WScript.Shell")
        For i = 1 To 100
            key$ = "HKEY_CURRENT_USER\Software\RIT\The Bat!\Users depot\User #" & i
            Err.Clear: mailBox$ = .RegRead(key$)
            If Err = 0 Then Debug.Print mailBox$
        Next
    End With
End Sub

Комментарии

Отправить комментарий

Содержание этого поля является приватным и не предназначено к показу.
CAPTCHA
Подтвердите, пожалуйста, что вы - человек:
   __  __        __   ___    _____   _  _    __   __
/ _| \ \ / / ( _ ) |___ / | || | \ \ / /
| |_ \ \ /\ / / / _ \ |_ \ | || |_ \ V /
| _| \ V V / | (_) | ___) | |__ _| | |
|_| \_/\_/ \___/ |____/ |_| |_|
Введите код, изображенный в стиле ASCII-арт.

Не получается применить макрос? Не удаётся изменить код под свои нужды?

Оформите заказ у нас на сайте, не забыв прикрепить примеры файлов, и описать, что и как должно работать.