You could use the Length function to determine a) the number of characters in the field with the full name, and b) determine the number of characters in the field with the last name.
Substract the difference between the two from the full name and use it in the Left function to pick up the remaining characters.
It's easy when someone is called John Jones. Using this method, John Paul Jones also gets extracted correctly.
But what do you do when someone is called Salvatore di Luca, for example? Gerhard von der Heide? John Paul Jones Smith? Consuela Garcia Perez?
In a situation like this, I'd be tempted to have a first name field that simply takes the first word from the full name as a first name, the last word as the last name and leave the rest, literally, in a field between the two, to be corrected by the person who gets to handle that persons record.
"I have successfully extracted the last name "
If what said is really true, how about:
first name(s) = Trim ( Substitute ( full name ; last name ; "" ) )
or, even better:
LeftWords ( full name ; WordsCount ( full name ) - 1 )
That seems to work well, thank you.