Non ho capito perchè crei ad ogni ciclo del loop principale un nuovo Recordset. Prova così:
codice:
Open SelezioneFile For Input As #1
Set recElenco = New ADODB.Recordset
recElenco.Open "anagrafica", cnDB, adOpenDynamic, adLockBatchOptimistic
Do Until EOF(1)
Line Input #1, strRiga
IntIDX = 0
Do
IntIDX = IntIDX + 1
strSoluzione = Mid(strRiga, IntIDX, 8)
txtCodice = strSoluzione
If txtCodice = strOrigineNero Then
recElenco.AddNew
...
recElenco.Update
ElseIf txtCodice = "" Then
Exit Do
End If
Loop
Loop
recElenco.Close
Close (1)
* ho aggiunto un reset di IntIDX ad ogni ciclo de loop principale.
* ho utilizzato Update al posto di UpdateBatch.
Ultima cosa: usa meno possibile le variabili Variant! Sono comode ma a volte creano più problemi di prima.