Bem, você terá que usar um loop passeando pela coleção Fields do recordset, tanto a DAO, quando a ADO possuem esta coleção.
Seria algo do tipo:
For each Field in Rs.Fields
...
Next
Dentro do loop, para obter as informações de cada campo faça o seguinte
Nome = Field.Name
Tamanho = Field.Size (ou Tamanho = Field.DefinedSize)
Tipo = Field.Type
Se você estiver usado a DAO, para obter estas informações, deverá usar Field.Size, mas se estiver usando a ADO, use Field.DefinedSize, esta é uma bobagem da Microsoft quando usou o Unicode no Access e SQL Server, que armazenam cada caracter em 32 bits ao invés de 16, assim, a propriedade size retorna duas vezes o tamanho do campo, enquanto que DefinedSize retorna o tamanho correto. Atenção para o retorno de Field.Size, pois ele retorna um número representando o tipo de dado do campo. O problema é que a ADO e a DAO possuem tipos de dados diferentes, por isso você deve consultar a ajuda do VB ou da DAO/ADO. Para detalhes.
Um abraço,
Sandro