Macro en VBA Excel para Reducción de frase, contenido en celda G4 a solo iniciales

En una macro tuya tengo línea para nombre de archivo

 With ThisWorkbook.Sheets(1)
    nombre = .Range("G4") & "_" & h1.Name & " " & .Range("C13") & " " & "-" & .Range("H13") & " " & .Range("D11").Value

.Range("G4") es el nombre de la persona o empresa. El nombre en G4 puede ser Fundicion del Centro CA. O otro, varia según el nombre que requiera. Solo quisiera que en ves del contenido en G4, solo me agregara al nombre las 2 o 3 iniciales del nombre en G4

Podría yo con solo eliminar, reemplazar .Range("G4") por "FC" pero ¿cuándo el nombre en G4 no sea el que menciono arriba? No quiero a cada momento estar cambiando en la macro. Quiero que me capte solo las 2 o 3 primeras iniciales del nombre en G4.

Gracias DAM y mis sinceros salu2. La macro


        

1 Respuesta

Respuesta
1

H o l a:

Quieres las 2 o 3 primeras iniciales o primeras letras.

Recuerda explicar lo que necesitas con un ejemplo.

Si son las primeras 3 letras quedaría así:

With ThisWorkbook.Sheets(1)
    nombre = left(.Range("G4"),3) & "_" & h1.Name & " " & .Range("C13") & " " & "-" & .Range("H13") & " " & .Range("D11").Value

sal u dos

Hola DAM

Si, las 2 o 3 primeras letras de una frase.

Sopone que en G4 (que es el nombre de x cosa, persona o empresa)

Ej.: Contenido de G4:  Fundicion del Centro

o

Industria Metalmecánica en Masquinaria Pesada

Depende del destinatario para quien es echa la cotisacion, asi es el contenido de G$

De los ejemplos anteriores el 1º sale así

Fundición del Centro CA_Cotisación 992-5 -3408 Reconstruccion motor-caja.PDF

y xlsx

El 2º así sale

Industria Metalmecánica en Masquinaria Pesada_Cotisación 992-5 -3408 Reconstruccion motor-caja.PDF

y xlsx

El 1º quisiera que saliera asi: FC_Cotisación 992-5 -3408 Reconstruccion motor-caja.PDF  y el 2º

IMM_Cotisación 992-5 -3408 Reconstruccion motor-caja.PDF

Voy probando lo dejado por ti

La Primera letra de cada palabra

Si G4 contiene, Joao Manuel Marques de Almeida, que capte solo

JMMA

Si G4 contiene, Industria Metalmecánica en Masquinaria Pesada que capte solo IMMP

Si G4 contiene, Vial Edén Movimiento de Tierra Villanova

VEMT

     nombre = Left(.Range("G4"), 3) & "_" & h1.Name & " " & .Range("C13") & " " & "-" & .Range("H13") & " " & .Range("D11").Value

Me dice:

Error en tiempo de ejecución, se requiere un objeto

La línea quedaría así:

    With ThisWorkbook.Sheets(1)
        nombre = Ini(Quitar(.Range("G4"))) & "_" & h1.Name & " " & .Range("C13") & " " & "-" & .Range("H13") & " " & .Range("D11").Value

Agrega después del End Sub de tu macro este par de funciones:

'
Function Quitar(nombre)
'Por.Dante Amor
    prons = Array(" de ", " en ", " del ", " a ", " y ")
    For i = LBound(prons) To UBound(prons)
        nombre = Replace(nombre, prons(i), " ")
        nombre = Replace(nombre, UCase(prons(i)), " ")
    Next
    Quitar = nombre
End Function
'
Function Ini(nombre)
'Por.Dante Amor
    cad = Left(nombre, 1)
    For i = 2 To Len(nombre)
        If Mid(nombre, i, 1) = " " Then
            If Mid(nombre, i + 1, 1) <> " " Then
                cad = cad & Mid(nombre, i + 1, 1)
            End If
        End If
    Next
    Ini = cad
End Function

Sal u dos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas