Как мне отредактировать (по умолчанию) или (стандартный) RegKey, используя VBA - PullRequest
2 голосов
/ 06 июня 2019

Я создаю Excel, который нужно всегда открывать в новом экземпляре.Для этого я решил изменить RegKey через VBA при его открытии.

Моя проблема состоит в том, чтобы отредактировать RegKey, у которого нет имени, (по умолчанию) или (стандарта).

Чтобы добавить обычный RegKey, у меня нет проблем:

RegKeyPath = "HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Excel\Options\DisableMergeInstance"

RegKey по умолчанию вообще не работает:

RegKeyPath = "HKEY_CLASSES_ROOT\Excel.Sheet.12\shell\Open\command\(Default)"

Мой код:

Private Sub RegKeyUpdate()

    Dim RegKeyPath As String
    Dim RegKeyValue As String
    Dim RegKeyType As String

    RegKeyPath = "HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Excel\Options\DisableMergeInstance"
    RegKeyValue = "1"
    RegKeyType = "REG_DWORD"

    RegKeySave RegKeyPath, RegKeyValue, RegKeyType

    RegKeyPath = "HKEY_CLASSES_ROOT\Excel.Sheet.12\shell\Open\command\(Default)"
    RegKeyValue = RegKeyRead(RegKeyPath) & " /x"
    RegKeyType = "REG_SZ"

    RegKeySave RegKeyPath, RegKeyValue, RegKeyType

End Sub
Function RegKeyRead(RegKeyPath As String) As String

    Dim objRegistryKey As Object

    On Error GoTo ErrorHandler

    Set objRegistryKey = CreateObject("WScript.Shell")

    RegKeyRead = objRegistryKey.RegRead(RegKeyPath)

    If 1 <> 1 Then
ErrorHandler:
        On Error GoTo 0
        On Error GoTo ErrorHandler
    End If

End Function
Public Sub RegKeySave(RegKeyPath As String, RegKeyValue As String, Optional RegKeyType As String)

    Dim objRegistryKey As Object

    On Error GoTo ErrorHandler

    Set objRegistryKey = CreateObject("WScript.Shell")

    objRegistryKey.RegWrite RegKeyPath, RegKeyValue, RegKeyType

    If 1 <> 1 Then
ErrorHandler:
        On Error GoTo 0
        On Error GoTo ErrorHandler
    End If

End Sub

Я ожидаю найти способ добавить не только новый RegKey, но и добавить новую «папку» RegKeys и отредактировать ее значение по умолчанию.

...