Det finns inget enskilt snabbaste sätt, eftersom det beror på ett antal faktorer. Se till att indexen i SQL är konfigurerade och optimerade. Många index kommer att döda prestandan för infogning/uppdatering eftersom varje infogning kommer att behöva uppdatera indexet. Se till att du bara gör en anslutning till databasen och inte öppna/stänga den under operationen. Kör uppdateringen när servern är under minimal belastning. Den enda andra metoden du inte har provat är att använda ett ADO Command-objekt och utfärda en direkt INSERT-sats. När du använder 'AddNew'-metoden för postuppsättningsobjektet, se till att endast utfärda ett 'UpdateBatch'-kommando i slutet av infogningarna. Kort av det, kan VBA bara köra så snabbt som SQL-servern accepterar ingångarna.
EDIT:Verkar som du har provat allt. Det finns också ett så kallat "Bulk-Logged"-återställningsläge i SQL Server, som minskar kostnaderna för att skriva så mycket till transaktionsloggen. Kan vara något värt att titta på. Det kan vara besvärligt eftersom det kräver att man pillar lite med databasåterställningsmodellen, men det kan vara användbart för dig.