Bueno lo primero seria agregar la referencia msxml 2.0 (referencias --> Microsoft XML, version 2.0)
Luego dimensionas el parser(analizador de xml) como:
Dim miXML As New MSXML.DOMDocument
Bueno, pongamos que tengo el siguiente xml
<?xml version = '1.0' encoding = 'ISO-8859-1'?>
<ROWSET>
<ROW num="1">
<COD>CQPDI138</COD>
<REFPROV>254873-B21</REFPROV>
<DESCRIP>DIMM 512MB SDRAM ECC 133Mhz</DESCRIP>
<PRECIO>256,41</PRECIO>
</ROW>
<ROW num="2">
<COD>CQPSE030</COD>
<REFPROV>230467-021</REFPROV>
<DESCRIP>TARJETA DE MEMORIA 32 MB IPAQ</DESCRIP>
<PRECIO>50,76</PRECIO>
</ROW>
</ROWSET>
Pues tenemos estas instrucciones:
miXML.documentElement.childNodes.Length --> nos daria el numero total de productos (en este caso dos) es decir dentro de rowset cuantos elementos ROW hay
miXML.documentElement.childNodes(indiceX).childNod es(indiceY).childNodes(0).xml
--> aqui accederia al producto indiceX (empezando desde 0) , a el nodo indiceY (tambien empezando desde 0) y luego childnodes(0).xml para acceder al contenido de cada elementos
un ejemplo de bucle para recorrer
for i=0 to miXML.documentElement.childNodes.Length
for j=0 to 3
debug.print miXML.documentElement.childNodes(i).childNodes(j). childNodes(0).xml
next j
next i
Es bastante lento si tienes muchos registros por eso yo uso un coponente activex (chilkat)