Exportar datos de Visual basic a Word

July 31, 2009

Algunas veces cuando desarrollamos aplicaciones es necesario crear reportes, y comúnmente se nos viene a la mente diversas formas de crearlos, muchos programadores que conozco utilizan la aplicación Crystal Reports, aun en mi trabajo el área administrativa utiliza este software, sin embargo algunos no contamos con dicha licencia para crear aplicaciones comerciales, por lo que nos quedan como opciones utilizar MSExcel, o en su caso MSWord, para este post expkicare a grandes rasgos como enviar algunos datos desde VB6 a MSWord.

'declaramos los objetos
Public MSWord As New Word.Application
Public Documento As Object

Private Sub cmd_exportar_click()

                'Establecemos la ruta de nuestro archivo
                ruta = App.Path & "\orden.doc"

                'Seteamos el archivo al objeto documento
                Set Documento = MSWord.Documents.Open(ruta)

                'opcionalmente podemos guardar el archivo
                'en mi caso lo guardo con una extensión diferente (cab|tmp|pot|etc)
                MSWord.Selection.Document.SaveAs (App.Path & "\printme.cab")

                'Establecemos la fuentre que utilizaremos
                MSWord.Selection.Font.Name = "Arial"

                'Configuramos la alineacion de nuestro parrafo
                MSWord.Selection.Paragraphs.Alignment = wdAlignParagraphCenter

                'Activamos la fuente en Negrita
                MSWord.Selection.Font.Bold = True

                'Y el tamaño a 16 puntos
                MSWord.Selection.Font.Size = 16

                'con esta opcion podemos comenzar a escribir dentro de nuestro docuemnto
                MSWord.Selection.TypeText "Aqui podemos escribir el texto en el documento" & vbCrLf

                'Declaramos una tabla de 1 fila por 3 columnas
                MSWord.Selection.Tables.Add MSWord.Selection.Range, 1, 3

                'Seleccionamos la celda 1,2
                MSWord.Selection.Tables(1).Cell(1, 2).Select

                'establecemos el ancho de la celda
               MSWord.Selection.Tables(1).Cell(1, 2).Width = 70

                'configuramos los bordes
                MSWord.Selection.Tables(1).Cell(1, 2).Borders(wdBorderTop).Visible = True
                MSWord.Selection.Tables(1).Cell(1, 2).Borders(wdBorderLeft).Visible = True
                MSWord.Selection.Tables(1).Cell(1, 2).Borders(wdBorderBottom).Visible = True
                MSWord.Selection.Tables(1).Cell(1, 2).Borders(wdBorderRight).Visible = True

                'Y la alineación del texto dentro de la celda
                MSWord.Selection.Paragraphs.Alignment = wdAlignParagraphLeft

                'Seguido escribimos texto en dicha celda
                MSWord.Selection.TypeText "Nombre"

                'seleccionamos la celda 1,3
                MSWord.Selection.Tables(1).Cell(1, 3).Select

                'Establcemos el color de fondo de la celda (Trama)
                MSWord.Selection.Cells.Shading.BackgroundPatternColor = wdColorGray20

                'Escribimos en dicha celda
                MSWord.Selection.TypeText "nombre2"

                'esta opcion nos permite salir de la edición de la tabla, o bajar una fila
                MSWord.Selection.MoveDown

                'por ultimo mostramos el documento de word
                MSWord.Visible = True

                'vaciamos los objetos de la  memoria
                Set documento = nothing
                Set Msword=nothing

end sub

con esto podemos establecer los datos del reporte que encesitemos, auqnue es algo mas laborioso que utilizar Crystal Reports, es una opción que hay que tomar en cuenta. espero le sea de ayuda a alguno de los lectores.

saludos (^o^)_v

ACTUALIZACION
Muchas gracias por los comentarios dejados , en esta actualización intentare responder sus preguntas.

P como se hace para añadirle el encabezado y en el mismo un logotipo?
Rodolfo Acosta
… el problema que tengo es para insertar los encabezados y pies de página al documento de Word generado desde vb6, siendo los datos utilizados diferentes para cada reporte, ya q se toman datos de la organización….
Mónica

R. Los encabezados los he manejado directamente en archivos maestros, supongamos que en la empresa existen 20 encabezados diferentes.
1.-Creo 20 archivos con los encabezados correspondientes.
2.-Abro un archivo encabezadomaestro1.doc, e inmediatamente hago un ‘Guardar como’ con la instrucción MSWord.Selection.Document.SaveAs, de esta manera conservo el archivo original con el encabezado.

Ppero quisiera saber como puedo hacer para que la aplicación de visual basic habra un documento ya existente y lo modifique, como llenando una plantilla. Por ejemplo un documento word creado que dijera:
Nombre:
Teléfono:
Sebastian

R. Para abrir un documento existente se utiliza la linea. ‘Set Documento = MSWord.Documents.Open(ruta)‘, y se omite la linea ‘MSWord.Selection.Document.SaveAs‘, para añadir texto, MSWord.Selection.TypeText “Nombre”, guardas y listo.

P. … algun comando que simplemente sea para ir a la linea (Enter) en Word…algun pdf, o un link donde pueda encontrar todo lo refernte a este tipo de documentos
Icekooler

R.
Para insertar un enter MSWord.Selection.TypeText vbCrLf , en cuanto al documento PDF, lo he buscado sin exito.


abismo..

July 7, 2009

En las oportunidades, he intentado salvarme de no perder mi amor propio, terminando odiándome, y siendo odiado, por personas que estimo demasiado, hoy me odian, mañana también, esperare el perdón que nunca llegara, dejándome un recuerdo horroroso, sintiéndome un fracaso, queriendo tanto, y teniendo tan poco, y hoy después de estos años te vi pasar, mordiéndome la lengua para no decir tu nombre, me justifico con la decisión de nuestra separación, porque vivirás mejor, quizá habré tenido un poco de malicia, esperando ¿que? ¿una larga relación? ¿un verdadero y dramático amor?, siempre pensando y equivocándome, cayendo en el abismo, muriendo de sed, al fin y al cabo no importa ya, no es la primera vez, y ese milagro que aun espero, sé bien que no sucederá, esa caricia esperada, no pasará, la luz se ira, pero aun así estarás mejor, recuerda no perder tu esencia, que valga la pena el desgarre de ese corazón, no supe lo que buscaba pero al final lo encontré por trocitos, tal ves lo que busco no exista, más que en un sueño, así que hoy intentare dormir, para tener un poco de felicidad en mi irrealidad, recortando mi dolor, olvidando las huellas, y recordándote antes de cada cita, que al final parece del mismo modo, en todos mis momentos, que ya no volverán a pasar, permitiéndome una ilusión engañándome un poco al menos a sabiendas de que soy un pobre infeliz con esta herida en mi alma, esperando el día en ver como se va…


En dondequiera que estes…

July 2, 2009

El autentico amigo es el que lo sabe todo de ti y sigue siendo tu amigo. Los buenos amigos son como estrellas, no siempre las ves pero sabes que estan allì. La mayoria de las personas entran y salen de tu vida, pero solo los amigos dejan huellas en tu corazon…

LRRM †