Página 1 de 1

[RESUELTO] Separar los apellidos compuestos

NotaPublicado: Dom Sep 13, 2015 12:42 am
por richardcns
buenas noches porfavor necesito su ayuda, lo que pasa es que quiero separar los apellidos compuestos, existe una macro que permite hacer esto pero elproblema es que la macro solo se ejecua en excel mas no en la hoja de calc, es por esoque quisier me la raduzcan al lenguaje de openoffice calc para que se ejecute correctamente.
Esta es la macro de excel;
Código: Seleccionar todo   Expandir vistaContraer vista
Function SEPARARAPELLIDOS(rng As Range) As String

Dim nombreArr() As String
Dim nuevaCadena As String
Dim i As Integer

'Dvidir el nombre por palabras en un arreglo
nombreArr = Split(Trim(rng.Value))

'Analizar cada palabra dentro del arreglo
For i = 0 To UBound(nombreArr)
    Select Case LCase(nombreArr(i))
         
        'Palabras que forman parte de un apellido compuesto
        'Agregar nuevas palabras separadas por una coma
        Case "de", "del", "la", "las", "los", "san"
            'Insertar espacio en blanco
            nuevaCadena = nuevaCadena & nombreArr(i) & " "
        Case Else
            'Insertar caracter delimitador
            nuevaCadena = nuevaCadena & nombreArr(i) & "@"
     
    End Select
Next

'Remover el último caracter delimitador de la cadena
If Right(nuevaCadena, 1) = "@" Then
    nuevaCadena = Left(nuevaCadena, Len(nuevaCadena) - 1)
End If

SEPARARAPELLIDOS = nuevaCadena

End Function


esta macro la saque de la siguiente pagina:
//exceltotal.com/como-separar-nombres-y-apellidos-en-excel/


por su colaboracion mil gracias.

Re: Separar los apellidos compuestos

NotaPublicado: Dom Sep 13, 2015 10:00 am
por xiseme
Bienvenid@
No hay "una macro" que haga eso, habrá cientos (no digo miles por no parecer exagerado) De hecho si buscas en el foro por «separar nombre y apellidos» ya encontrarás alguna.

Si tu propósito es hacerlo en Basic para AOO/LibO te será fácil a poco que le des un vistazo al libro de Mauricio o al apartado de macros de la wiki

- Si acaso tu propósito fuera que te hagan el trabajo, petición aquí

Re: Separar los apellidos compuestos

NotaPublicado: Lun Sep 14, 2015 1:32 am
por mauricio
Este tema ya se ha tratado en estos foros: https://forum.openoffice.org/es/forum/v ... +apellidos

Re: Separar los apellidos compuestos

NotaPublicado: Lun Sep 14, 2015 3:33 pm
por SLV-es
Este tema tb puede servir como orientación: http://blog.open-office.es/calc/generar ... ffice-calc

Re: Separar los apellidos compuestos

NotaPublicado: Lun Sep 14, 2015 6:57 pm
por fornelasa
richardcns » solo como aclaración, el codigo mostrado no separa los "apellidos compuestos". Lo que hace es "algo" similar a este archivo ejemplo con formulas:
Saludos.

Re: Separar los apellidos compuestos

NotaPublicado: Jue Sep 17, 2015 8:56 am
por PepeOooSevilla
Hola.
Coincido con nuestro compañero fornelasa. No obstante, aquí tienes el código de la función. Como puedes ver los cambios han sido mínimos.
Código: Seleccionar todo   Expandir vistaContraer vista
REM  *****  BASIC  *****
Option Explicit

Function SEPARARAPELLIDOS(CadOriginal As String) As String
    Dim nombreArr() As String
    Dim nuevaCadena As String
    Dim i As Integer

    'Dividir el nombre por palabras en un arreglo
    nombreArr = Split(Trim(CadOriginal))
    'Analizar cada palabra dentro del arreglo
    For i = 0 To UBound(nombreArr)
        Select Case LCase(nombreArr(i))
            'Palabras que forman parte de un apellido compuesto
            'Agregar nuevas palabras separadas por una coma
            Case "de", "del", "la", "las", "los", "san"
                'Insertar espacio en blanco
                nuevaCadena = nuevaCadena & nombreArr(i) & " "
            Case Else
                'Insertar caracter delimitador
                nuevaCadena = nuevaCadena & nombreArr(i) & "@"
        End Select
    Next
    'Remover el último caracter delimitador de la cadena
    If Right(nuevaCadena, 1) = "@" Then
        nuevaCadena = Left(nuevaCadena, Len(nuevaCadena) - 1)
    End If

   SEPARARAPELLIDOS = nuevaCadena
End Function

Adjunto archivo.
Saludos cordiales.

Re: Separar los apellidos compuestos

NotaPublicado: Vie Sep 18, 2015 4:43 pm
por richardcns
PepeOooSevilla escribió:Hola.
Coincido con nuestro compañero fornelasa. No obstante, aquí tienes el código de la función. Como puedes ver los cambios han sido mínimos.
Código: Seleccionar todo   Expandir vistaContraer vista
REM  *****  BASIC  *****
Option Explicit

Function SEPARARAPELLIDOS(CadOriginal As String) As String
    Dim nombreArr() As String
    Dim nuevaCadena As String
    Dim i As Integer

    'Dividir el nombre por palabras en un arreglo
    nombreArr = Split(Trim(CadOriginal))
    'Analizar cada palabra dentro del arreglo
    For i = 0 To UBound(nombreArr)
        Select Case LCase(nombreArr(i))
            'Palabras que forman parte de un apellido compuesto
            'Agregar nuevas palabras separadas por una coma
            Case "de", "del", "la", "las", "los", "san"
                'Insertar espacio en blanco
                nuevaCadena = nuevaCadena & nombreArr(i) & " "
            Case Else
                'Insertar caracter delimitador
                nuevaCadena = nuevaCadena & nombreArr(i) & "@"
        End Select
    Next
    'Remover el último caracter delimitador de la cadena
    If Right(nuevaCadena, 1) = "@" Then
        nuevaCadena = Left(nuevaCadena, Len(nuevaCadena) - 1)
    End If

   SEPARARAPELLIDOS = nuevaCadena
End Function

Adjunto archivo.
Saludos cordiales.


Amigo, pege el codigo que me envió, pero al momento de ejecutar me sale el siguiente mensaje:
"error de ejecucion de BASIC. El argumento no es opcional.
y se subraya donde dice:
nombreArr = Split(trim(cadOriginal))

Ayuda por favor! gracias!

Re: Separar los apellidos compuestos

NotaPublicado: Vie Sep 18, 2015 6:33 pm
por mauricio
richardcns escribió:al momento de ejecutar

Cuentamos exactamente que haces, para ejecutar.

Nota que es una función, no una subrutina (macro)...

Re: Separar los apellidos compuestos

NotaPublicado: Vie Sep 18, 2015 8:27 pm
por richardcns
mauricio escribió:
richardcns escribió:al momento de ejecutar

Cuentamos exactamente que haces, para ejecutar.

Nota que es una función, no una subrutina (macro)...



Amigo ya se resolvio, creo que era algo que la pasaba al openoffice pero ya pude ejecutar la macro, y todo fuinciona muy bien Gracias!!! :super: