Er is niet één snelste manier, omdat deze afhankelijk is van een aantal factoren. Zorg ervoor dat de indexen in SQL zijn geconfigureerd en geoptimaliseerd. Veel indexen zullen de prestaties van het invoegen/bijwerken teniet doen, aangezien elke invoeging de index moet bijwerken. Zorg ervoor dat u slechts één verbinding met de database maakt en open/sluit deze niet tijdens de bewerking. Voer de update uit wanneer de server minimaal wordt belast. De enige andere methode die u niet hebt geprobeerd, is om een ADO Command-object te gebruiken en een directe INSERT-instructie af te geven. Wanneer u de 'AddNew'-methode van het recordset-object gebruikt, moet u ervoor zorgen dat u slechts één 'UpdateBatch'-opdracht geeft aan het einde van de invoegingen. Afgezien daarvan kan de VBA alleen zo snel werken als de SQL-server die de invoer accepteert.
EDIT:Het lijkt erop dat je alles hebt geprobeerd. Er is ook een zogenaamde 'Bulk-Logged' herstelmodus in SQL Server, die de overhead van zoveel schrijven naar het transactielogboek vermindert. Misschien iets dat het onderzoeken waard is. Het kan lastig zijn, omdat het wat gehannes met het databaseherstelmodel vereist, maar het kan nuttig voor je zijn.