Looks like you could try the GetRows method of the recordset. Supposedly twice as fast, who knows?
This gets the records into a 2D variant array. Then you can try it with your update function.
ArrayName = RecordsetName.GetRows(Rows, Start, Fields)
Rows: optional long (number of records to retrieve)
Start: Optional bookmark for where to begin
Fields: A variant array of field names or ordinal numbers or a single name or ordinal.

Also look up the VB help on this.