Add-in para manipulación de texto en Excel
En el complemento EXCELeINFO add-in contamos con una sección dedicada a la manipulación de textos, que se encuentra en la sección con el mismo nombre del Ribbon que se crear al momento de instalar el add-in.
Figura 1. Sección Texto dentro de EXCELeINFO add-in.
Estas herramientas son muy útiles sobretodo al momento de querer convertir texto a mayúsculas, minúsculas, tipo título y oración, pero no queremos pasar por el uso de fórmulas, sobretodo si nuestros datos no se encuentran en la misma fila o columna.
Fue por eso que creé un add-in exclusivo para manipulación de textos mediante un menú contextual que se lanza al dar click derecho sobre un rango de celdas elegidos.
Cómo lo instalo
Al final de este artículo podrán descargar el add-in en extensión .xla para que pueda ser usado en cualquier versión de Excel que tengan.
El menú contextual tendrá las siguientes opciones de texto.
-
Convertir texto a MAYÚSCULAS (función MAYUSC).
-
Convertir texto a minúsculas (función MINUSC).
-
Convertir texto a Tipo Título (función NOMPROPIO).
-
Convertir texto a Tipo oración. (UDF personalizada).
Figura 2. Los complementos instalados podremos activarlos y desactivarlos las veces que deseemos.
En Excel 2003 y anteriores podrán entrar al menú Herramientas > Complementos. Damos click en el botón Examinar y buscamos el complemento en donde lo hayan guardado.
En Excel 2007 y posteriores lo hacemos entrando Archivo > Opciones. Elegimos la sección Complementos y click en Ir. Por último damos click en Examinar para buscar el add-in.
Figura 3. Los complementos instalados podremos activarlos y desactivarlos las veces que deseemos.
Código de la macro
Dentro el objeto ThisWorkbook pondremos el código que creará el menú contextual al abrir o instalar el add-in, así como para quitarlo al cerrar o desinstalarlo.
Private Sub Workbook_Open() Call EXCELeINFOInitializeMenu End Sub ' Private Sub Workbook_BeforeClose(Cancel As Boolean) Call EXCELeINFODeleteContextMenu End Sub ' Private Sub Workbook_AddinInstall() Call EXCELeINFOInitializeMenu End Sub ' Private Sub Workbook_AddinUninstall() Call EXCELeINFODeleteContextMenu End Sub
En el módulo ModMenu tenemos el código que creará el menú contextual.
'Crear menú Sub EXCELeINFOInitializeMenu() Application.CommandBars("Cell").Reset With Application.CommandBars("Cell").Controls.Add(Type:=msoControlButton) .Caption = "Convertir texto a MAYÚSCULAS" .FaceId = 62 .BeginGroup = True .OnAction = "EXCELeINFOUCase" .Tag = "TagEXCELeINFOPegadoEspecial" .Style = msoButtonIconAndCaption End With ' With Application.CommandBars("Cell").Controls.Add(Type:=msoControlButton) .Caption = "Convertir texto a minúsculas" .FaceId = 63 .OnAction = "EXCELeINFOLCase" .Tag = "TagEXCELeINFOPegadoEspecial" .Style = msoButtonIconAndCaption End With ' With Application.CommandBars("Cell").Controls.Add(Type:=msoControlButton) .Caption = "Convertir texto a Tipo Título" .FaceId = 80 .OnAction = "EXCELeINFOPCase" .Tag = "TagEXCELeINFOPegadoEspecial" .Style = msoButtonIconAndCaption ' With Application.CommandBars("Cell").Controls.Add(Type:=msoControlButton) .Caption = "Convertir texto a Tipo oración." .FaceId = 309 .OnAction = "EXCELeINFOOracion" .Tag = "TagEXCELeINFOPegadoEspecial" .Style = msoButtonIconAndCaption End With End With End Sub ' 'Quitar menú Sub EXCELeINFODeleteContextMenu() Application.CommandBars("Cell").Reset End Sub
En el módulo ModProcs tendremos las macros para la manipulación de texto.
'minúsculas Sub EXCELeINFOLCase() If TypeName(Selection) <> "Range" Then Exit Sub On Error Resume Next stbar = "EXCELeINFO - Convirtiendo a minúsculas... " Set WorkRange = Application.Intersect(Selection, ActiveSheet.UsedRange) For Each Celda In WorkRange Celda.Value = LCase(Celda) Next Celda On Error GoTo 0 Application.StatusBar = False End Sub ' 'Tipo Título Sub EXCELeINFOPCase() If TypeName(Selection) <> "Range" Then Exit Sub On Error Resume Next stbar = "EXCELeINFO - Convirtiendo a nombre propio... " Set WorkRange = Application.Intersect(Selection, ActiveSheet.UsedRange) For Each Celda In WorkRange Celda.Value = WorksheetFunction.Proper(Celda) Next Celda On Error GoTo 0 Application.StatusBar = False End Sub ' 'MAYÚSCULAS Sub EXCELeINFOUCase() If TypeName(Selection) <> "Range" Then Exit Sub On Error Resume Next stbar = "EXCELeINFO - Convirtiendo a mayúsculas... " Set WorkRange = Application.Intersect(Selection, ActiveSheet.UsedRange) For Each Celda In WorkRange Celda.Value = UCase(Celda) Next Celda On Error GoTo 0 Application.StatusBar = False End Sub ' 'Tipo Oración Sub EXCELeINFOOracion() Dim Celda1 As Range Dim Celda As Range For Each Celda In Selection Celda.Value = TipoOracion(Celda.Value) Next Celda End Sub ' Function TipoOracion(Celda As String) Dim Largo As Integer Dim i As Integer Dim Valor As String Dim Valor1 As String Dim ValorAnt As String Dim ValorAnt2 As String Application.Volatile ' C = Application.WorksheetFunction.Trim(Replace(Celda, ".", ". ")) TipoOracion = C ' Largo = Len(C) ' On Error Resume Next For i = 1 To Largo Valor = LCase(Mid(C, i, 1)) ValorAnt = LCase(Mid(C, i - 1, 1)) ValorAnt2 = LCase(Mid(C, i - 2, 1)) If i = 1 Then Valor1 = Valor1 & UCase(Valor) ElseIf ValorAnt = " " And ValorAnt2 = "." Then Valor1 = Valor1 & UCase(Valor) Else Valor1 = Valor1 & LCase(Valor) End If Next i ' On Error GoTo 0 TipoOracion = Valor1 End Function
Anexos
Descarga los ejemplos en .xls y .xla.
Referencias
Crear menús en Excel 2003 y Ribbon en Excel 2007 y 2010