Crear hoja excel desde VB

Tengo una aplicación en VB que accede a los datos en Access, y permite listar diversos informes. Me resultaría de gran utilidad crear ficheros en Excel con el contenido de esos informes. Parece que es posible dar nombre al fichero Excel, e incluso a la hoja, pero desconozco la técnica para hacerlo.

1 Respuesta

Respuesta
1
¿Cuál version de VB usas?
Hola experto,
Mi versión de VB es la 6.0 de 32 bits. Por si lo necesitaras saber también: la de Windows es XP, y el Office es 2003.
Saludos
Hola experto,
Como ha pasado mucho tiempo desde que envié la respuesta, no sé si te llegó.
La repito de nuevo por si acaso: Mi versión de VB es la 6 Edición Empresarial, y mi Office es el 2003.
Si pasados unos días sigo sin recibir contestación, finalizaré la pregunta, sin puntuar (ni bien ni mal), para volverla a colgar en el tablón y tener la oportunidad de que otro experto me responda.
Saludos
Disculpa la tardanza, no había tenido tiempo de revisar tu pregunta:
Hace mucho que no uso VB6 (Actualmente uso VS 2010) pero "googleando" un poco di con esto:
'Para declarar las variables necesitas agregar la referencia a Microsoft Excel
Dim xl As New Excel.Application
Dim xlsheet As Excel.Worksheet
Dim xlwbook As Excel.Workbook
'Lo demas es pan comido, es como trabajar directo en Excel ya q tienes "intellisence" en los objetos
Set xlwbook = xl.WorkBooks.Add()
Set xlSheet = xlwbook.Sheets(0)
xlSheet.Name = "Nombre que quieras poner a la hoja"
'Para manipular las celdas
With xlSheet
.Range("A5").Value = "Algo..."
.Cells(5, "B").Value = "Otra cosa..."
End With
Y un laaaaaaargo etc...
No pude checarlo pero debe funcionar.
Hola experto,
Lo primero, gracias por la respuesta. Como decimos en España, nunca es tarde si la dicha es buena.
Por si te encuentras de nuevo con un usuario tan inexperto como yo, será bueno que le aclares que antes de correr el programa hay que añadir al proyecto (Referencias) la librería de Excel. Yo me di cuenta de que debía hacerlo cuando me dieron error las variables para excel que me has enviado.
Luego me ha surgido un problema que no sé resolver: mi programa trabaja con datos residentes en Access, y lo que pretendía es crear una hoja Excel con los datos de un recordset. Para ello he escrito la siguiente instrucción "Set xlwbook = xl.WorkBooks.Add(rstEntrada)", siendo rstEntrada lo que quiero crear en Excell, y me da un error 1004 en tiempo de ejecución: Argumento no válido. ¿Qué hago mal?
De nuevo muchas gracias y saludos
Hay un método que se llama CopyFromRecordSet, pero primero debes crear el libro en blanco:
Set xlwbook = xl.WorkBooks.Add
Luego una hoja:
Set ws = xlwbook.Sheets(0)
Ahora copias el RecordSet a un Rango:
Ws. Range("A1", Cells(rstEntrada. RecordCount, rstEntrada. Fields. Count). CopyFromRecordset rstEntrada
No tuve oportunidad de probar pero creo que debe funcionar.
Es el método más rapido, otra opción seria recorrer todo el recordset con un For Next e ir asignando los valores a ws. Cells(fila, Columna)
Hola experto,
Agradezco mucho la atención que me has dedicado pero necesitaría nuevas aclaraciones. Si esto supone un abuso de tu tiempo dímelo sin rodeos, y finalizaré la pregunta con buena valoración.
He implementado el método Copy... y no me da errores, pero no encuentro la hoja que ha creado en ninguna parte del PC, y la estoy buscando como "*.xls" para verlas todas; y también por el contenido. He intentado darle nombre xlwbook.Name="Entrada" pero me dice que es una propiedad de solo lectura. ¿Se le puede dar nombre y decir dónde quiero copiarla?
Tengo otra duda ¿el método Copy... me va a meter todo el recordset en una sola celda?
Si la respuesta a lo anterior es sí, recurriré a la opción For Next que me sugerías. Ya he probado con unos pocos registros y no me da errores, aunque no puedo ver el resultado.
Mil gracias y saludos.
No es modificar el nombre, más bien guardarlo:
Xlwbook. Sabe "Ruta y Nombre de Archivo"
Si quieres ver el Archivo antes de Guardarlo:
xl.Visible = True
Se copiaran todas las filas y columnas del recordset en las filas y columnas necesarias, por eso el Rango de Celdas esta así:
Ws. Range("A1", Cells(rstEntrada. RecordCount, rstEntrada. Fields. Count)
A1: La primera Celda del Rango
RstEntrada. RecordCount: El numero de Filas o renglones del RecordSet
RstEntrada. FieldCount: El Numero de Columnas del RecordSet.
Hola de nuevo,
Lo siento mucho pero no consigo salvar el fichero después de varias combinaciones.
Si escribo: "xlwbook.Save "C:\Documents and Settings\Entrdada\Entrada.xls" me da un error de compilación: número de argumentos erróneo o asignación de propiedades no válida.
Si escribo: "xlwbook.Save = "C:\Documents and Settings\Entrdada\Entrada.xls" me da un error de compilación: se esperaba una función o una variable.
Tampoco lo puedo ver antes, pero esto es lo menos importante, ya lo veré cuando consiga crearlo.
Gracias y saludos.
Mandame tu proyecto
[email protected]
Hola experto,
Ya que has tenido la amabilidad de que solucionemos el asunto contactando por el correo particular, considero lógico lógico finalizar la pregunta en este canal.
Muchas gracias por todo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas