Dim db As Database
Dim rs As Recordset
Dim strCadena As String
Dim strApellido1 As String
Dim strApellido2 As String
Dim strNombre As String
Dim n As Variant
Dim nPos As Long
Dim nTotalExcepciones As Integer
Dim nExcepPos As Long
'Asignar variables
Set db = CurrentDb()
Set rs = db.OpenRecordset("TU_TABLA", dbOpenTable)
'Matriz de posibles valores
'Ponle el valor que quieras al índice
'Y creas las excepciones que consideres
Dim sExcepciones(4) As String
sExcepciones(0) = "De los "
sExcepciones(1) = "De la "
sExcepciones(2) = "De "
sExcepciones(3) = "San "
sExcepciones(4) = "Del "
'El índice máximo de las excepciones
nTotalExcepciones = 4
'Nos colocamos en el primer registro
rs.MoveFirst
'Hace el bucle
Do While Not rs.EOF
If IsNull(rs!CAMPO_NOMBRE_COMPLETO) Then
Else
'Asigna la cadena al campo nombre completo
strCadena = Trim(rs!CAMPO_NOMBRE_COMPLETO)
'Empezamos por extraer el nombre
'Para ello cogemos todo lo que esté a continuación de la coma
'Busca la coma
nPos = InStr(1, strCadena, ",")
'La encuentra?
If nPos > 0 Then
'Extrae todo lo que está a la derecha de ella
strNombre = Mid(strCadena, nPos + 1)
'Y quita espacios si hubiera antes o después
strNombre = Trim(strNombre)
End If
'Ahora seguimos con los apellidos
'El primero
'Miramos si comienza por alguna de las excepciones anteriores
nExcepPos = 0
'Miramos si empieza por alguna de las excepciones, si es así
'guardamos la longitud de la excepción (espacio final incluido)
For n = 0 To nTotalExcepciones
If Left(strCadena, Len(sExcepciones(n))) = sExcepciones(n) Then
nExcepLong = Len(sExcepciones(n))
Exit For
End If
Next n
'Ahora el primer apellido será hasta que encuentre el primer
'espacio a partir de la longitud de la excepción + 1
nPos = InStr(nExcepLong + 1, strCadena, " ")
'Y cogemos toda la cadena que queda a la izquierda de la posición de ese espacio
strApellido1 = Left(strCadena, nPos - 1)
'El segundo
'Hay que coger todo lo que está entre el espacio de final de primer apellido
'y la coma
'Marco el último espacio del primer apellido
nPosFinalEspacioPrimerApellido = nPos
'Marco la posición de la coma
nPos = InStr(1, strCadena, ",")
'Y corto por ahí
strApellido2 = Mid(strCadena, nPosFinalEspacioPrimerApellido + 1, nPos - nPosFinalEspacioPrimerApellido - 1)
'Grabo los datos
With rs
.Edit
!nombre = strNombre
!apellido1 = strApellido1
!apellido2 = strApellido2
.Update
End With
End If
'Al siguiente registro
rs.MoveNext
Loop
               (
geocities.com/es/ensolva/Descargas)                   (
geocities.com/es/ensolva)                   (
geocities.com/es)