La ListView riceve un valore testuale. Prova a gestire questo problema così:
Set itm = Me.ListView1.ListItems.Add(Text:=Format(.Fields("id").Value, "0000"))
Quindi nel campo ID ti ritroverai "0001"; "0002";......"0010";..."0100"; ecc...
In questo caso dovrebbe funzionare l'ordinamento.
P.S. Hai risolto la questione delle icone? Io alla fine ho riprodotto il file Access e messo in relazione le 2 tabelle per poi ricavare la Query che alla fine ti riporta i vari dati in Excel. La visualizzazione delle icone mi funziona correttamente. Secondo me dovresti dare riscontro a quello che ti viene suggerito. Sia per gli utenti che possono lamentare gli stessi problemi e sia per chi impegna il proprio tempo a fornirli.