MS Access: Por que o ADODB.Recordset.BatchUpdate é muito mais lento que o Application.ImportXML?

Estou tentando executar o código abaixo para inserir muitos registros (de um arquivo com um formato de arquivo estranho) no meu banco de dados do Access 2003 do VBA. Após muitas e muitas experiências, esse código é o mais rápido que consegui: ele grava 10000 registros em cerca de 15 segundos na minha máquina. Pelo menos 14,5 desses segundos (ou seja, quase o tempo todo) estão na chamada única para o UpdateBatch.

Eu li em outro lugar que o mecanismo JET não suporta UpdateBatch. Talvez haja uma maneira melhor de fazer isso.

Agora, eu acho que o mecanismo JET é muito lento, mas não pode ser isso. Depois de gerar a tabela 'irritante' com o código abaixo, cliquei com o botão direito do mouse, escolhi Exportar e salvei como XML. Em seguida, cliquei com o botão direito, escolhi Importar e recarreguei o XML. Tempo total para importar o arquivo XML? Menos de um segundo, ie. pelo menos 15x mais rápido.

Certamente há uma maneira eficiente de inserir dados no Access que não exija a gravação de um arquivo temporário?

Sub TestBatchUpdate()
    CurrentDb.Execute "create table testy (x int, y int)"

    Dim rs As New ADODB.Recordset
    rs.CursorLocation = adUseServer
    rs.Open "testy", CurrentProject.AccessConnection, _
        adOpenStatic, adLockBatchOptimistic, adCmdTableDirect

    Dim n, v
    n = Array(0, 1)
    v = Array(50, 55)

    Debug.Print "starting loop", Time
    For i = 1 To 10000
        rs.AddNew n, v
    Next i
    Debug.Print "done loop", Time

    rs.UpdateBatch
    Debug.Print "done update", Time

    CurrentDb.Execute "drop table testy"
End Sub

Eu gostaria de recorrer ao C / C ++ se houver alguma API que me permita inserir inserções rápidas dessa maneira. Mas parece que não consigo encontrá-lo. Não é possível que o Application.ImportXML esteja usando APIs não documentadas, pode?