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

    Source: geocities.com/es/ensolva/Descargas/Documentos

               ( geocities.com/es/ensolva/Descargas)                   ( geocities.com/es/ensolva)                   ( geocities.com/es)