Otra forma de hacerlo, a mi parecer un poco más sencilla, es por medio de un objeto WScript.Shell. Los métodos que soporta un objeto WScript.Shell para modificar el registro son:
Para este caso en específico, vamos a usar los métodos RegRead y RegWrite. Usamos RegRead para leer el valor de Options6 en la ruta especificada del registro y RegWrite para escribir el nuevo valor.
La macro modificará el valor de Options6 y luego reiniciará Excel para que se hagan efectivos los cambios. Por esto, cierre cualquier libro de Excel en el que esté trabajando, abra un libro nuevo y vaya al editor de VB, allí inserte un nuevo módulo, copie la macro y ejecútela.
También puede descargar este archivo con la macro lista para utilizar: Cambiar el color predeterminado de la selección.xls
Sub Cambiar_Color_Selec()
Dim Options6 As String
Dim Valor As Byte
Dim oShell As Object
Options6 = "HKEY_CURRENT_USER\Software\Microsoft\Office\" & Application.Version & "\Excel\Options\Options6"
Set oShell = CreateObject("WScript.Shell")
On Error Resume Next
Valor = oShell.RegRead(Options6)
On Error GoTo 0
Valor = VBA.IIf(Valor = 16, 0, 16)
oShell.RegWrite Options6, Valor, "REG_DWORD"
If MsgBox(prompt:="Se ha modificado exitosamente el registro." & vbLf & vbLf & _
"¿Desea reiniciar Excel para terminar el proceso?" & vbLf & vbLf & _
"Tenga en cuenta que se cerrarán todos los libros abiertos" & vbLf & _
"y no se guardará ningún cambio que haya realizado.", _
Buttons:=vbYesNo + vbQuestion, _
Title:="Registro modificado") = vbYes Then
With CreateObject("Excel.Application")
.Workbooks.Add
.Visible = True
End With
With Application
.DisplayAlerts = False
.Quit
End With
Else
MsgBox prompt:="Recuerde que el cambio se hará efectivo" & vbLf & _
"una vez reinicie Excel.", _
Buttons:=vbInformation, _
Title:="Registro modificado"
End If
Set oShell = Nothing
End Sub
¡IMPORTANTE! Antes de modificar el registro asegúrese de crear una copia. Modificar el registro de Windows puede crear graves problemas si no se sabe exactamente qué es lo que está haciendo. La macro la he probado con Excel 2000, 2003 y 2007, y no me ha presentado ningún problema y funciona correctamente, pero no por ello puedo responder por cualquier otro cambio que usted haga del registro o por un uso indebido de la macro. Modifique el registro bajo su propia responsabilidad.
0 comentarios:
Publicar un comentario en la entrada