Officefull.es

Excel, word, powerpoint, android

Ribbon-Barras de Herramientas Excel Agosto 8, 2013

Mis Macros Favoritas

 

Cinta de Opciones (Cinta Ribbon) Excel 2007

Cinta Ribbon Excel

Barras de Herramientas Excel 97-2003

Barra de Herramientas Excel

Por Héctor Miguel Orozco Díaz

 

En este artículo os vamos a mostrar:

Cómo podéis crear una barra de herramientas que sea valida para todas las versiones de Office Excel desde la versión 97 hasta la versión nueva de office 2007. Paquete de macros:

1 Convertir [may/min]usculas- Frase u Oración, bien en una celda o en toda la hoja.

2 Convertir [may/min]usculas

 

  • Frase u Oración como en MS Word [shift + F3 ]
  • Listar nuestras hojas y navegar con ellas con un tan solo Click -Ordenar las hojas sin importar si son [may/min]o bien distinguiéndolas
  • Entorno
  • Botón Terminar

3 tres funciones incluidas en el archivo y una nueva manera de Registrarlas:

 

a) Function AF_Activo: Verdadero/Falso si la referencia tiene activados AutoFiltros.

b)Function Concatenado: Nos une celdas, filas, columnas…

c)Function ConcatenarSI : Nos une celdas, filas, columnas… segun condición.

 

Desarrollo Mis Macros Favoritas

¿Cómo podemos crear una barra de herramientas que sea valida para todas las versiones de Office Excel desde la versión 97 hasta la versión nueva de office 2007?

Como muchos de vosotros sabréis, la nueva interfaz de Office Excel 2007 está realizada con los nuevos formatos XML de código abierto. Como su nombre indica XML ( Xtensible Markup Languaje ) …traducido (lenguaje extensible de marcas) y que con este nuevo uso de XML en Office 2007 nos permitirá adaptar la nueva Interfaz agregando nuevas Etiquetas, grupo de botones, combobox y un largo etc…..

Para crear la barra de herramientas para las versiones 97-2007, hay que seguir los siguientes pasos:

1 Crear un archivo de Excel llamado: [ mis Macros Favoritas.xls ]

 

En el situaremos el código para crear la barra de herramientas compatible para versiones de Office 97 a la 2003.

2Crear un Complemento en Excel 2007 llamado: [ mis Macros en la Cinta.xlam ]

 

En el situaremos el código XML para crear la Cinta Ribbon en Excel 2007

3Guardar siempre JUNTOS los dos archivos en una misma carpeta que la podéis llamar como queráis.

 

OjO muy importante… se deben guardar ambos archivos JUNTOS en un mismo directorio ya que cada uno necesita del otro además de NO modificarlos códigos que en el archivo [ mis Macros Favoritas.xls ] aparecen, SOBRE TODO si no entendéis ni de XML ni de Programación VBA .

4Cuando necesitemos nuestras barras de herramientas tanto para una versión como para otra, simplemente desde cualquier archivo de Excel Abierto, le damos a abrir  [ mis Macros Favoritas. xls]

 

El código utilizado para crear nuestras barras de herramientasincluido en [ mis Macros Favoritas. xls]:

Option Private Module
Private Const Botones As String = "(May/min)usculas,Mayusculas,Minusculas,Nombre propio,Tipo frase,Como MS-Word {Alt}+{F3},Seleccionar hoja,Ordenar hojas,Ordenar hojas M,Entorno,Salir"
Private Const Macros As String = "'Capitaliza 0','Capitaliza 1','Capitaliza 2','Capitaliza 3','Capitaliza 4',CapitalizaComoWord,ListaHojas,OrdenaHojas,OrdenaHojasM,AveriguaMiEntorno,Terminar"
Private Const Imagenes As String = "401,403,404,476,289,42,304,312,461,487,644": Private Const Grupos As String = "0,0,0,0,0,0,1,1,0,1,1"
Public Const Office12 As String = "mis Macros en la Cinta.xlam": Public Const misMacros As String = "mis Macros Favoritas"
Public Cinta As Boolean, BarraInstalada As Boolean, Cerrando As Boolean
Sub Agrega_miBarra(): Elimina_miBarra: Dim Boton, Macro, Imagen, Grupo, n As Byte
  Boton = Split(Botones, ","): Macro = Split(Macros, ",")
  Imagen = Split(Imagenes, ","): Grupo = Split(Grupos, ",")
  With Application.CommandBars.Add(misMacros, msoBarFloating, False, True)
    For n = LBound(Boton) To UBound(Boton)
      With .Controls.Add(Type:=msoControlButton, Temporary:=True)
        .BeginGroup = Grupo(n): .Caption = Boton(n): .OnAction = Macro(n): .FaceId = Imagen(n)
      End With: Next: .Visible = True: End With: BarraInstalada = True: End Sub
Sub Elimina_miBarra(): On Error Resume Next: Application.CommandBars(misMacros).Delete: End Sub
Sub MisMacrosEnLaCinta(): If ThisWorkbook.Name = misMacros & ".xls" Then GoTo Cinta
  If MsgBox("Has cambiado el nombre de este archivo <\°|°/>" & vbCr & _
    "Las macros en la Cinta de Opciones NO FUNCIONARAN !!!" & vbCr & _
    "Si deseas que funcionen las macros desde Cinta de Opciones..." & vbCr & _
    "DEBERAS ""regresarle"" su nombre original de: " & misMacros & ".xls" & vbCr & vbCr & _
    "Deseas instalar una barra de herramientas en la ficha ""Complementos"" ?", _
    vbCritical + vbYesNo + vbDefaultButton2, "Instalando herramientas !!!") = _
    vbYes Then Agrega_miBarra: Exit Sub
Cinta:
  If Dir(ThisWorkbook.Path & "\" & Office12) <> "" _
    Then Workbooks.Open ThisWorkbook.Path & "\" & Office12: Exit Sub
  If MsgBox("Se requiere el archivo " & Office12 & vbCr & _
    "NO esta presente para instalar las macros en la Cinta de Opciones !!!" & vbCr & _
    "Deseas instalar una barra de herramientas en la ficha ""Complementos"" ?", _
    vbQuestion + vbYesNo + vbDefaultButton2, "Instalando: mis Macros Favoritas !!!") = _
    vbYes Then Agrega_miBarra
End Sub
Sub TerminaSesion(): On Error Resume Next: Workbooks(Office12).Close False: End Sub

Paquete de macros incluido en el archivo:

  • Convertir [may/min]usculas- Frase u Oración, bien en una celda o en toda la hoja.
  • Convertir [may/min]usculas-Frase u Oración como en MS Word [shift + F3 ]

ver artículo…

  • Listar nuestras hojas y navegar con ellas con un tan solo Click

Ver artículo…

  • Ordenar las hojas sin importar si son [may/min]o bien distinguiéndolas

Ver artículo…

Entorno

Muestra un MsgBox con la ubicación de algunas variables de entorno del usuario en turno:

Entorno en excel

Código Entorno

Option Private Module
Private Const keyLocal As String = "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\Local "

Sub AveriguaMiEntorno()
 Dim vista As Boolean, ClaveWin As String: With CreateObject("wscript.shell")
  vista = .RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\CurrentVersion")
  ClaveWin = IIf(Val(vista) < 6, "AppData", "Settings"): MsgBox _
       "Perfil en:" & vbCr & vbTab & Environ("UserProfile") & vbCr & _
      "Escritorio en:" & vbCr & vbTab & .SpecialFolders("Desktop") & vbCr & _
      "Mis documentos en:" & vbCr & vbTab & .SpecialFolders("MyDocuments") & vbCr & _
      "Configuracion local en:" & vbCr & vbTab & .RegRead(keyLocal & ClaveWin) & vbCr & _
      "Datos de programa en:" & vbCr & vbTab & .SpecialFolders("AppData") & vbCr & vbTab & .RegRead(keyLocal & "AppData") & vbCr & _
      "Temporales en:" & vbCr & vbTab & .RegRead(keyLocal & ClaveWin) & "\Temp", , "Entorno de trabajo del usuario actual ..."
  End With: End Sub

Tres funciones incluidas en el archivo y una nueva manera de Registrarlas:

  • Function AF_Activos: [ Shift + F3]

Nos muestra si nuestros filtros están activados. Se encuentra registradaen el grupo de Funciones Información, nos devuelve verdaderoo falsodependiendo de si nuestros filtros están activados o no lo están. El argumento [ REF] DEBE SER una referencia de celda. Otros Argumentos como sean requeridos. Tercera y cuarta líneas se muestran solo en el dialogo ” pegar Función“.

Function AF_Activo(ByVal Ref As Range) As Boolean If Not Ref.Parent.AutoFilterMode Then Exit Function Dim Filtro As Byte: Application.Volatile With Ref.Parent.AutoFilter If Intersect(Ref.Cells(1, 1), .Range) Is Nothing Then Exit Function Filtro = Ref.Column - .Range.Column + 1: AF_Activo = .Filters(Filtro).On End With: End Function

Function Concatenado
ver artículo

  • Function ConcatenarSI

Misma función que el articulo ver artículo… pero con un argumento adicional para Omitir Blancos →

Function AF_Activo(ByVal Ref As Range) As Boolean
  If Not Ref.Parent.AutoFilterMode Then Exit Function
  Dim Filtro As Byte: Application.Volatile
  With Ref.Parent.AutoFilter
    If Intersect(Ref.Cells(1, 1), .Range) Is Nothing Then Exit Function
    Filtro = Ref.Column - .Range.Column + 1: AF_Activo = .Filters(Filtro).On
  End With: End Function

Función que registra dichas funciones →

Sub RegistraFunciones(Registro As Boolean)
  With Application
    .MacroOptions Macro:="AF_Activo", Category:=9, Description:= _
      "Devuelve Verdadero/Falso si la referencia especificada tiene activados los AutoFiltros" & vbCr & _
      "El argumento ""Ref"" DEBE SER una referencia de celda." & vbCr & _
      "Otros argumentos como sean requeridos." & vbCr & _
      "Tercera y cuarta lineas se muestran (solo) en el dialogo ""Pegar funcion""."
    .MacroOptions Macro:="Concatenado", Category:=7, Description:= _
      "Devuelve la ""concatenacion"" de los datos en el rango (Datos) indicado." & vbCr & _
      "Si el rango es una fila de varias columnas, indica verdadero para ""xColumnas""." & vbCr & _
      "El argumento ""Separa"" es opcional y (creo que) suficientemente ""logico""."
    .MacroOptions Macro:="ConcatenarSI", Category:=7, Description:= _
      "Devuelve la ""concatenacion"" de los datos en el rango (Datos) indicado." & vbCr & _
      "Siempre y cuando el primer rango (Criterios) coincida con la ""Condicion""." & vbCr & _
      "Los demas argumentos son opcionales y (creo que) suficientemente ""logicos""."
  End With: End Sub

Anotaciones a tener en cuenta

Cuando ” el archivo” (mis Macros Favoritas.xls) se abre en la versión 2007, pueden ocurrir varias situaciones:

a)Si se ha modificado su nombre, te avisa que el Ribbon NOse podrá utilizar

b)Si NOencuentra “al segundo” (mis Macros en la Cinta.xlam) presenta un mensajesimilar al anterior

c)en ambos casos te da la opciónpor si quieres agregar botones(estilo 97/2003) en la ficha “Complementos”Office 2007.

d) TocTocDesdeLaCinta: este procedimiento SOLO se utiliza por y para la versión 2007 si se abre ” el segundo” (*.xlam)

 

Descarga del archivo

Favoritas.zip (31.9 kB)

Anotación Final:

Para quitar los iconos de la pestaña complementos en el caso de que deshabilitemos los complementos

    • Botón derecho a cada icono y click en Eliminar comando personalizado
    • Mediante un macro:
Sub EliminaBarras()
'Hector Miguel Orozco Diaz
DimBarra AsCommandBar
For Each Barra In Application.CommandBars: If Not Barra.BuiltIn Then Barra.Delete
Next
End Sub

 

Categorías: Excel

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *