DEJE QUE EXCEL HAGA EL TRABAJO SUCIO

Cambiar el registro por medio de VBA - Options6: Color de la selección

En Cambiar el color predeterminado de la selección en una hoja de Excel vimos como modificar el registro para cambiar el color de la selección en una hoja de Excel. Existen también algunas alternativas para modificar el registro por medio de VBA. La más usada es por medio de llamadas API, como se describe en el sitio de Chip Pearson: http://www.cpearson.com/excel/Registry.htm

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