Saltar al contenido
PROGRAMAR EN VBA MACROS DE EXCEL

Como agregar pestaña personalizada al Menu o Ribbon de Excel #356

Este es el primer de catorce vídeos que muestran como modificar la barra de menú o ribbon, en este ejemplo, se agregará una pestaña y dos grupos de menú con dos iconos cada uno a los que se le asignará una macro, todo en forma manual podría decirse, ya que se agregan pestañas e iconos modificando la cinta de opciones de Excel, desde el menú archivo, opciones, personalizar cinta de opciones, agregar pestañas.

En los post posteriores se mostrará como modificar la barra de menú o ribbon modificando el archivo XML, que es lo que permite realizar estás modificaciones en la ribbon, veremos como agregar pestañas, iconos, inhabilitar menú, eliminar menú, etc.; la forma manual en la que se agrega una pestaña a diferencia con la modificación del archivo XML de cada libro Excel, es que está disponible y aparecerá en todos los libros de Excel que se abran, modificando el archivo XML del libro solo se verá la pestaña agregada o modificación del ribbon en el libro al cual se le modificó en XML.

Antes de seguir recomiendo leer un excelente libro sobre Excel que te ayudará operar las planillas u hojas de cálculo, haz click acá, si quieres aprender sobre Excel, en inglés, entonces debes hacer click here. Si lo que necesitas es aprender o profundizar sobre la programación de macros con VBA este es unos de los mejores cursos on line que he visto en internet.

  
Para agregar una pestaña nueva se debe ir al menú archivo, luego a opciones, posteriormente personalizar cinta de opciones, luego se puede agregar pestañas, tal cual se muestra en la imagen siguiente:

En en ejemplo se inserta una pestaña denominada My Tab, dentro de esta pestaña, se agregaron dos grupos de macros, uno denominado «Imagen» y otro llamado «Copiar Imagen», posteriormente se debe seleccionar de «comandos disponibles» el item «Macros», entonces aparecerán todas la macros del libro, posteriormente se debe seleccionar la macro y luego agregar, por cierto hay que estar posicionado en la pestaña o grupo de macros.

En este caso se debe posicionar con el mouse en el grupo de macros que hemos creado «Imagen» y luego se selecciona la macro «CrearID», presionamos agregar, veremos como se agrega el nombre de la macro en el grupo seleccionado, lo mismo se hace con la macro «QuitarID». Podemos cambiar el ícono, seleccionando el que se desee, ello se realiza presionando el botón cambiar nombre y luego cambiar el ícono.

Posteriormente se selecciona el grupo de macros que hemos denominado «Copiar Imagen», agregando las macros «CopiaImagenWord» y «CopiaGraficoWord», realizado este procedimientos veremos como se agrega en el menú o ribbon una pestaña con los grupos de macros y las macros que hemos seleccionado. El resultado final es el que se observa en la imagen siguiente:

Observen que se agregó una nueva pestaña denominada «My Tab», dentro de esta pestaña existen dos grupos de macros uno denominado «Imagen» y otro llamado «Copiar Imagen»; dentro de cada grupo respectivamente existe la macro «CrearID», «QuitarID» «CopiaImagenWord» y «CopiaGraficoWord».

Esta pestaña como ya se dijo a diferencia de las que se crean modificando el archivo «XML», están disponibles en todos los libros de Excel, es por ello que se verá que al cerrar el libro y abrir un libro distinto lo mismo sigue conservando la pestaña y las macros.

Recuerden que en las próximas entregas, se mostrará como modificar la barra de menú o ribbon pero modificando el archivo XML, a diferencia de lo mostrado acá las modificaciones que se hagan serán visibles en ese archivo especifico; se podrá agregar pestañas, agregar íconos, grupos de macros, inhabilitar comandos, etc.

Las macros que se incorporan tiene pleno funcionamiento, una permite renombrar todas las imágenes y la otra macro quitar el nombre de todas la imágenes; como así también copiar la imagen a Word y gráficos a Word, los códigos son los que se muestran al final, no obstante ello el fin del ejemplo es mostrar como se puede modificar la barra de menú o ribbon, no en si el funcionamiento de las macros, pero se puede aprender como renombrar imágenes o fotos, pasar imágenes de Excel a Word, como pasar gráficos de Excel a Word.

El vídeo que sigue muestra una explicación más detallada y gráfica de la macro presentada, recomiendo observar para una más fácil comprensión de la macro; suscribe a nuestra web desde la parte superior derecha de la página ingresando tu mail y a nuestro canal de You Tube para recibir en tu correo vídeos explicativos sobre macros interesantes, como  por ejemplo Recorre fila buscando y comparando datos de dos columnas en hojas distintasbuscar en listbox mientras escribes en textbox, como crear una factura o sale invoice y grabar guardar PDF XLS y enviar por mailconectar Excel con Access y muchos ejemplos más.

Código que se inserta en un módulo
Sub CopiaGraficoAWord()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Dim objWord As Word.Application, wdDoc As Word.Document, myfile
On Error Resume Next
Set a = Sheets(ActiveSheet.Name)
myfile = Application.GetOpenFilename(«Archivos Word (*.Doc*), *.Doc*»)
FullName = Split(myfile, Application.PathSeparator)
a = FullName(UBound(FullName))
pto = InStr(a, «.»)
nomarch = Left(a, pto – 1)
If VarType(myfile) = vbBoolean Then
MsgBox («Operación cancelada»), vbCritical, «AVISO»
Exit Sub
End If

Set objWord = CreateObject(«Word.Application»)
objWord.DisplayAlerts = wdAlertsNone
objWord.Visible = True
Set wdDoc = objWord.Documents.Open(myfile)
nomfic = nomarch & » » & Format(Date, «dd-mm-yyyy»)
rutainf = ThisWorkbook.Path & «» & nomfic & «.docx»

For x = 1 To ActiveSheet.ChartObjects.Count
ActiveSheet.ChartObjects(x).CopyPicture
xx = Selection.Name

ts = «[PID» & x & «]»
objWord.Selection.Move 6, -1
objWord.Selection.Find.Execute FindText:=ts
While objWord.Selection.Find.Found = True
objWord.Selection.Paste ‘ False, True, False
objWord.Selection.Move 6, -1
objWord.Selection.Find.Execute FindText:=ts
cant = cant + 1
Wend
Next x

wdDoc.SaveAs Filename:=rutainf, FileFormat:=wdFormatXMLDocument
‘wdDoc.Close
MsgBox («Se copiaron » & cant & » gráficos de Excel a Word»), vbInformation, «AVISO»
‘wdDoc.Quit
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub

Sub CopiaImagenWord()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Dim objWord As Word.Application, wdDoc As Word.Document, myfile
On Error Resume Next
Set a = Sheets(ActiveSheet.Name)
myfile = Application.GetOpenFilename(«Archivos Word (*.Doc*), *.Doc*»)
FullName = Split(myfile, Application.PathSeparator)
a = FullName(UBound(FullName))
pto = InStr(a, «.»)
nomarch = Left(a, pto – 1)
If VarType(myfile) = vbBoolean Then
MsgBox («Operación cancelada»), vbCritical, «AVISO»
Exit Sub
End If

Set objWord = CreateObject(«Word.Application»)
objWord.DisplayAlerts = wdAlertsNone
objWord.Visible = True
Set wdDoc = objWord.Documents.Open(myfile)
nomfic = nomarch & » » & Format(Date, «dd-mm-yyyy»)
rutainf = ThisWorkbook.Path & «» & nomfic & «.docx»

For x = 1 To ActiveSheet.Shapes.Count
ActiveSheet.Shapes(x).CopyPicture
xx = Selection.Name

ts = «[PID» & x & «]»
objWord.Selection.Move 6, -1
objWord.Selection.Find.Execute FindText:=ts
While objWord.Selection.Find.Found = True
objWord.Selection.Paste ‘ False, True, False
objWord.Selection.Move 6, -1
objWord.Selection.Find.Execute FindText:=ts
cant = cant + 1
Wend
Next x

wdDoc.SaveAs Filename:=rutainf, FileFormat:=wdFormatXMLDocument
‘wdDoc.Close
MsgBox («Se copiaron » & cant & » imagenes / gráficos de Excel a Word»), vbInformation, «AVISO»
‘wdDoc.Quit
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub

Sub CrearID()
On Error Resume Next
For x = 1 To ActiveSheet.ChartObjects.Count
ActiveSheet.ChartObjects(x).Name = «[GID» & x & «]»
ActiveSheet.ChartObjects(x).Activate
tit = ActiveChart.ChartTitle.Text
If Mid(tit, 1, 4) = «[GID» Then GoTo salta:
If tit = Empty Then ActiveChart.SetElement (msoElementChartTitleAboveChart)
ActiveChart.ChartTitle.Text = «[GID» & x & «] » & tit
tit = Empty
salta:
Next x
Cells(1, «E»).Select
End Sub

Sub QuitaID()
On Error Resume Next
For x = 1 To ActiveSheet.ChartObjects.Count
ActiveSheet.ChartObjects(x).Name = «ID» & x
ActiveSheet.ChartObjects(x).Activate
tit = ActiveChart.ChartTitle.Text

If Mid(tit, 1, 4) = «[GID» Then
lug = InStr(tit, » «)
tit = Mid(tit, lug + 1)
ActiveChart.ChartTitle.Text = tit
tit = Empty
End If
Next x
Cells(1, «E»).Select
End Sub
Sub mostrarID()
nom = Application.Caller
MsgBox («El nombre de la imagen es: » & nom)
End Sub

Sub CrearIDImagen()
On Error Resume Next
a = ActiveSheet.Shapes.Count
For x = 1 To ActiveSheet.Shapes.Count
ActiveSheet.Shapes(x).Name = «[PID» & x & «] »
ActiveSheet.Shapes(x).Select
Selection.OnAction = «mostrarID»
Next x
MsgBox («La ID de cada imagen fue creada con éxito, para saber su nombre click en imagen»), vbInformation, «AVISO»
End Sub

Si te fue de utilidad puedes INVITARME UN CAFÉ y de esta manera ayudar a seguir manteniendo la página, CLICK para descargar en ejemplo en forma gratuita.


.

If this post was helpful INVITE ME A COFFEE and so help keep up the page, CLICK to download free example.

Si te gustó por favor compártelo con tus amigos
If you liked please share it with your friends