Pproblema con acceso a campos de recordset

Trabajo en una macro de EXCEL con el objetivo de que se recorra una columna tomando en cada momento el valor de una celda como parámetro de una consulta a una BD SQL. El resultado que devuelve la consulta se almacena en un recordset. Con un ciclo FOR NEXT pretendo leer cada campo del recordset y escribir su valor en la misma fila pero en columnas adyacentes.
Cuando lo ejecuto me sale un error " Error 3021 valor de BOF o EOF es true o el actual registro se eliminó, la operación solicitada requiere un registro actúa "
He intentado varios cambios pero no avanzo en nada. He probado la consulta directamente en la BD y está bien construida. La respuesta siempre es un solo registro (1) con tres (3 campos). No se si tenga que ver con este hecho
de que sólo tiene un registro ya que siempre había trabajado con recordset de varios registros y vario campos.
Les dejo copia de código y agradezco de antemano a quienes me puedan ayudar porque ya no encuentro solución a este problema:

Dim con As Object
Dim sSelect As String
Dim rs As ADODB.Recordset
Dim fila, col As Integer
Set con = CreateObject("ADODB.Connection")
Set con = New ADODB.Connection
Set rs = New ADODB.Recordset


' ciclo para leer el valor de referencia a partir de la celda C9 hacia abajoFor fila = 9 To 13
'asignar valor de la celda a la variable código, cargar el select con el valor de esta celda y abrir un recordset con el resultado de la consulta.


código = Range("C" & fila).Value


sSelect = "SELECT dbo.gbkmut.artcode AS Articulo, Items_1.Description_0 AS Descripción, SUM(dbo.gbkmut.aantal) AS Inventario FROM dbo.gbkmut INNER JOIN dbo.Items AS Items_1 ON dbo.gbkmut.artcode = Items_1.ItemCode INNER JOIN dbo.grtbk ON dbo.gbkmut.reknr = dbo.grtbk.reknr AND dbo.gbkmut.reknr = dbo.grtbk.reknr WHERE (dbo.gbkmut.warehouse = 'EAE1') AND (dbo.grtbk.omzrek = 'G') AND (Items_1.Condition = 'A') AND (dbo.gbkmut.artcode IN ('código')) AND (dbo.gbkmut.transtype = 'N') GROUP BY Items_1.Description_0, dbo.gbkmut.artcode, Items_1.PackageDescription"


con.ConnectionString = "Provider=SQLOLEDB;Initial Catalog=209;Data Source=eserver;integrated security=SSPI;persist security info=True;"


con.Open


rs.Open sSelect, con, adOpenStatic


'ciclo para recorrer los campos del recordset y escribir el valor en celdas contiguas
Do While Not rs.EOF
col = 10
For i = 0 To rs.Fields.Count - 1
Cells(fila, col).Value = rs.Fields(i)
col = col + 1
Next
Loop
fila = fila + 1
Next

Añade tu respuesta

Haz clic para o