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.

EXCELeINFO add-in Texto

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.

  1. Convertir texto a MAYÚSCULAS (función MAYUSC).
  2. Convertir texto a minúsculas (función MINUSC).
  3. Convertir texto a Tipo Título (función NOMPROPIO).
  4. Convertir texto a Tipo oración. (UDF personalizada).

Add-in para manipulación de texto en Excel

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.

Instalar complementos en Excel

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

Video tutorial # 2 – Instalar addins en Excel

Función UDF para convertir texto a Oración en Excel

You may also like...