You also have fields broken up in your open statement.

Take a look. Your database is seeing email as ema
il

It is also seeing datarange.Pref as datar ange.Pref

and it is seeing datarange.menonic2 as dataran ge.menonic2

Put the whole thing in a string, and pass the string to your recordset object. It makes things easier to read and debug. Example:
VB Code:
  1. Dim rs As New ADODB.Recordset
  2. Dim sSQL As String
  3. sSQL = "insert into data_delete(ID,FullName,ShortName,Contact,OwnerCo,Pref,Fax1,Fax2,Telex1,"
  4. sSQL = sSQL & "Telex2,Memonic1,Memonic2,Email,Groups,CortexAccountNo) "
  5. sSQL = sSQL & "Values(DataRange.ID,datarange.Fullname,datarange.shortname,datarange.contact,datarange.OwnerCo, "
  6. sSQL = sSQL & "datarange.Pref,datarange.fax1,datarange.fax2,datarange.telex1,datarange.telex2,datarange.memonic1, "
  7. sSQL = sSQL & "datarange.menonic2,datarange.Email,datarange.groups,datarange.cortexaccountno) "
  8. rs.Open sSQL, CONNECTIONSTRING, adOpenDynamic, adLockOptimistic