Saltar al contenido

Excel vba: escribir contenido en celdas.


Recommended Posts

publicado

Hola, buenos días a tod@s!

Estoy trabajando con un libro de Excel que genero tras un código desde Access mediante VB. En este fichero, una vez abierto, quiero incluir un segmento de código que lea unos valores de texto y los vaya escribiendo, de manera vertical, en una línea.

Mi problema es que la primera vez que lo ejecuto funciona y me genera un Excel tal y como lo quiero. Pero (bien cierre el informe Excel que se acabe de generar o lo deje minimizado) a la segunda vez que ejecuto el código ya no funciona y no hace nada, o bien me da el error: <Object variable or with block variable not set>

¿Alguien sabe por qué podría ser?

mi segmento de código es el siguiente:

Dim xl As Excel.Application ' objeto Excel

Dim query$, letra$, ini as String

Dim rs as DAO.Recordset

Dim db as Database

Set db = CurrentDB

query = contenido_query ' "SELECT *.... lo que sea"

Set rs = db.OpenRecordset(q_cabecera)

letra = 70

ini = Chr(letra) & "3"

' Quisiera comenzar a escribir a partir de la celda F3 hasta que acabe rs

xl.Sheets(1).Range(ini).Select

' o también probé con: xl.Sheets(1).Range("F3").Select

' Aqui pretendo seleccionar primero la celda F3 y escribir en ella y, mientras no termine el contenido de rs, seleccionar las celdas contiguas (G3, H3....) y escribir en ellas cada uno de los valores de rs

Do While Not rs.EOF

ActiveCell.FormulaR1C1 = rs!nombre ' escribo en la celda el valor

'ActiveCell.Value = rs!nombre ' también probé con esto

ActiveCell.Offset(, 1).Select ' selecciono la celda contigua de la derecha

rs.MoveNext

Loop

Mil gracias por adelantado.

Saludos,

publicado

Ok, llevaba tiempo con este fallo que no entendía. Y acabo de darme cuenta del error.

Tengo que añadir delante de cada instrucción siempre xl.sheets(1). Lo curioso es que no me funciona si hago un xl.Sheets(1).Range(ini).Select y trabajo con Selection."lo que sea"

Para quien le pueda servir, funciona así:

Do While Not rs.EOF

xl.ActiveCell.FormulaR1C1 = rs!nombre

xl.ActiveCell.Orientation = xlVertical

xl.ActiveCell.VerticalAlignment = xlBottom

xl.ActiveCell.Font.Size = 8.5

xl.ActiveCell.Offset(, 1).Select ' selecciono la celda contigua de la derecha

rs.MoveNext

Loop

Gracias.

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.