Я создаю 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 и отредактировать ее значение по умолчанию.