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.