Non ho capito come mai non riesci a provare il codice: se è perché manca la tabella country ho riaggiornato il database su skydrive.
Non offenderti, ma Io veramente non capisco come possa funzionare quel codice. Perlomeno quello che è nel file access che metti a disposizione. Probabilmente fai un'estratto del tuo file reale ma dovresti fare in modo che comunque il codice sia funzionante.
Prova a compilarlo: ci sono 2 sub con lo stesso nome (aggiorna) un paio di While senza Loop e tutto il codice che dovrebbe scrivere nel foglio excel è all'esterno di una routine.
Ieri sera non potevo provarlo semplicemente perchè dovevo prima riscriverne una parte.
Ad ogni modo, stamattina avevo un po' di tempo e l'ho sistemato in modo da rendelo operativo. Ho fatto queste modifiche per le righe 11 e 12 che, pare, funzionino. Provale anche tu.
riga = 5
Do Until riga = 11
For i = 7 To TabellaTRAN.Fields.Count
DocEx.Worksheets(nometabella).Cells(riga, i - 1) = TabellaTRAN.Fields(i - 1)
Next i
riga = riga + 1
TabellaTRAN.MoveNext
Loop
'inizio modifica
riga = 11
Dim contaOccorrenze As Integer '--> SOP+SOT+TWO+WIN+OSO
Dim vTotale() As Variant
ReDim vTotale(1 To TabellaTRAN.Fields.Count)
For contaOccorrenze = 1 To 5 '-->SOP+SOT+TWO+WIN+OSO
For i = 7 To TabellaTRAN.Fields.Count
vTotale(i - 6) = vTotale(i - 6) + TabellaTRAN.Fields(i - 1)
Next i
TabellaTRAN.MoveNext
Next contaOccorrenze
For i = 7 To TabellaTRAN.Fields.Count
DocEx.Worksheets(nometabella).Cells(riga, i - 1).Formula = vTotale(i - 6)
Next i
riga = 12
Erase vTotale()
ReDim vTotale(1 To TabellaTRAN.Fields.Count)
For contaOccorrenze = 1 To 10 '-->INW+MWR+MWN+PSB+BGA+BOL+BDI+OLB+NSP+CHA
For i = 7 To TabellaTRAN.Fields.Count
vTotale(i - 6) = vTotale(i - 6) + TabellaTRAN.Fields(i - 1)
Next i
TabellaTRAN.MoveNext
Next contaOccorrenze
For i = 7 To TabellaTRAN.Fields.Count
DocEx.Worksheets(nometabella).Cells(riga, i - 1).Formula = vTotale(i - 6)
Next i
'fine modifica
riga = 13
'... prosegue con il tuo codice
Nota aggiuntiva: normalmente la dichiarazione delle variabili andrebbe all'inzio del codice. Per brevità di esposizione le due dichiarazioni aggiunte
Dim contaOccorrenze As Integer '--> SOP+SOT+TWO+WIN+OSO
Dim vTotale() As Variant
le ho inserite nella mia modifica. Sarebbe opportuno spostarle all'inzio della routine.
David