VI POSTO LA PARTE DEL CODICE CHE MI INTERESSA MODIFICARE
codice:
Private Sub IT30_Click()
Dim Copia, Counter, Topo, Conta, Archimede, Minni, Pluto, Pippo
Dim dbs As Database, rst As Recordset, rst1 As Recordset, rst2 As Recordset, SMS1, SMS2

    SMS1 = MsgBox("Vuoi che aggiorni il file XXXXXX.XLS???", vbYesNo, "CONFERMA AGGIORNAMENTO")
    If SMS1 = 6 Then
        Copia = Shell("PERCORSO\Torneria.bat", vbNormalFocus)
        Do While Counter < 30000000       ' Ciclo interno.
            Counter = Counter + 1   ' Incrementa il contatore.
        Loop

        Set dbs = CurrentDb ' Restituisce il riferimento al database corrente.
        Set rst = dbs.OpenRecordset("SELECT * FROM ;") ' Apre il recordset sulla tabella
        Do Until rst.EOF    ' Esegue fino alla fine del file.
            rst.Delete  ' Edita il record corrente lo salva nel file TXT ed elimina il record
            rst.MoveNext    ' Si sposta al record successivo.
        Loop
        rst.Close

        Set rst = dbs.OpenRecordset("SELECT * from Carico_torneria;")
        Set rst1 = dbs.OpenRecordset("SELECT Transfer1.Materiale1, Transfer1.[Dt#in#al+presto], Transfer1.[Qtà confermata], Transfer1.[Quantità operazioni], Transfer1.[Giacenza Grezzo] FROM Transfer1 WHERE (((Transfer1.[Dt#in#al+presto]) Is Not Null));")
        Do Until rst1.EOF
            rst.AddNew
            rst!Materiale = rst1!Materiale1
            rst!Data_inizio = rst1![Dt#in#al+presto]
            rst!qt_conf = rst1![Qtà confermata]
            rst!qt_operazione = rst1![Quantità operazioni]
            rst!giacenza = rst1![Giacenza Grezzo]
            rst!foglio = "Transfer1"
            rst.Update
            rst1.MoveNext    ' Si sposta al record successivo.
        Loop
        rst1.Close
        
        Set rst1 = dbs.OpenRecordset("SELECT Transfer2.Materiale1, Transfer2.[Dt#in#al+presto], Transfer2.[Qtà confermata], Transfer2.[Quantità operazioni], Transfer2.[Giacenza Grezzo] FROM Transfer2 WHERE (((Transfer2.[Dt#in#al+presto]) Is Not Null));")
        Do Until rst1.EOF
            rst.AddNew
            rst!Materiale = rst1!Materiale1
            rst!Data_inizio = rst1![Dt#in#al+presto]
            rst!qt_conf = rst1![Qtà confermata]
            rst!qt_operazione = rst1![Quantità operazioni]
            rst!giacenza = rst1![Giacenza Grezzo]
            rst!foglio = "Transfer2"
            rst.Update
            rst1.MoveNext    ' Si sposta al record successivo.
        Loop
        rst1.Close

        Set rst1 = dbs.OpenRecordset("SELECT Transfer3.Materiale1, Transfer3.[Dt#in#al+presto], Transfer3.[Qtà confermata], Transfer3.[Quantità operazioni], Transfer3.[Giacenza Grezzo] FROM Transfer3 WHERE (((Transfer3.[Dt#in#al+presto]) Is Not Null));")
        Do Until rst1.EOF
            rst.AddNew
            rst!Materiale = rst1!Materiale1
            rst!Data_inizio = rst1![Dt#in#al+presto]
            rst!qt_conf = rst1![Qtà confermata]
            rst!qt_operazione = rst1![Quantità operazioni]
            rst!giacenza = rst1![Giacenza Grezzo]
            rst!foglio = "Transfer3"
            rst.Update
            rst1.MoveNext    ' Si sposta al record successivo.
        Loop
        rst1.Close
        
        Set rst1 = dbs.OpenRecordset("SELECT Transfer4.Materiale1, Transfer4.[Dt#in#al+presto], Transfer4.[Qtà confermata], Transfer4.[Quantità operazioni], Transfer4.[Giacenza Grezzo] FROM Transfer4 WHERE (((Transfer4.[Dt#in#al+presto]) Is Not Null));")
        Do Until rst1.EOF
            rst.AddNew
            rst!Materiale = rst1!Materiale1
            rst!Data_inizio = rst1![Dt#in#al+presto]
            rst!qt_conf = rst1![Qtà confermata]
            rst!qt_operazione = rst1![Quantità operazioni]
            rst!giacenza = rst1![Giacenza Grezzo]
            rst!foglio = "Transfer4"
            rst.Update
            rst1.MoveNext    ' Si sposta al record successivo.
        Loop
        rst1.Close
        
        Set rst1 = dbs.OpenRecordset("SELECT Transfer5.Materiale1, Transfer5.[Dt#in#al+presto], Transfer5.[Qtà confermata], Transfer5.[Quantità operazioni], Transfer5.[Giacenza Grezzo] FROM Transfer5 WHERE (((Transfer5.[Dt#in#al+presto]) Is Not Null));")
        Do Until rst1.EOF
            rst.AddNew
            rst!Materiale = rst1!Materiale1
            rst!Data_inizio = rst1![Dt#in#al+presto]
            rst!qt_conf = rst1![Qtà confermata]
            rst!qt_operazione = rst1![Quantità operazioni]
            rst!giacenza = rst1![Giacenza Grezzo]
            rst!foglio = "Transfer5"
            rst.Update
            rst1.MoveNext    ' Si sposta al record successivo.
        Loop
        rst1.Close
        rst.Close
        
        Set rst = dbs.OpenRecordset("SELECT * FROM dbo_DATE_TORNERIA;") ' Apre il recordset sulla tabella
        Do Until rst.EOF    ' Esegue fino alla fine del file.
            rst.Delete  ' Edita il record corrente lo salva nel file TXT ed elimina il record
            rst.MoveNext    ' Si sposta al record successivo.
        Loop
        rst.Close
        
        'Set rst = dbs.OpenRecordset("SELECT * from IT30;")
        Set rst = dbs.OpenRecordset("SELECT codice from IT30 group by codice;")
        Set rst1 = dbs.OpenRecordset("SELECT * from dbo_DATE_TORNERIA;")
        Do Until rst.EOF
            Archimede = rst!CODICE
            Set rst2 = dbs.OpenRecordset("SELECT Carico_torneria.*, Carico_torneria.Materiale FROM Carico_torneria WHERE (((Carico_torneria.Materiale)=" & Chr(34) & Archimede & Chr(34) & "))ORDER BY Carico_torneria.Data_inizio;")
            Topo = 0
            Conta = 0
            Do Until rst2.EOF
                Minni = 0
                Pippo = 0
                Pluto = 0
                Minni = Val(rst2!qt_conf)
                Pippo = Val(rst2!qt_operazione)
                If Conta = 0 Then
                    Pluto = rst2!giacenza
                    If IsNull(Pluto) Then Pluto = 0
                    Pluto = Val(Pluto)
                    Topo = Pluto
                End If
                If Pippo - Minni > Topo Then
                    rst1.AddNew
                    rst1!CODICE = Archimede
                    rst1!Data = rst2!Data_inizio
                    rst1!foglio = rst2!foglio
                    rst1!data_import = Date
                    rst1.Update
                    rst2.MoveLast
                    Topo = 0
                End If
                Topo = Topo - Pippo
                Conta = Conta + 1
                rst2.MoveNext
            Loop
            rst.MoveNext
        Loop
        rst.Close
        rst1.Close
        rst2.Close
        dbs.Close
        SMS2 = MsgBox("Importazione conclusa.", vbOKOnly, "IMPORTAZIONE DATE DA ORDINI TORNERIA")
    End If
    
    DoCmd.OpenReport "Report_Magazzino_IT30_data", acViewPreview

End Sub
COME VEDETE IL CONTATORE E' IMPOSTATO MANUALMENTE A 30000000 MILLISECONDI IO LO VORREI IMPOSTARE IN MANIERA AUTOMATICA CIOE' CHE SI INTERROMPA QUANDO IL FILE BAT HA CONCLUSO LA COPIA.