¿Cómo escribir en un word desde el programa?

Jorge S
28 de Noviembre del 2007
Hola! estoy atascado porque necesito sacar texto e imágenes del programa a un word y no sé cómo hacerlo si alguien me puede echar una mano se lo agradecería enormemente. Saludos!

mvallejos
28 de Noviembre del 2007
Investiga un poco la automatizacion de aplicaciones de Office.
La mayoría de las aplicaciones de Office son automatizables, esto es, poder iniciar una instancia, por ejemplo, del Word y poder manejarla desde una variable

Por Ejemplo

Dim WD as Object

Set WD = CreateObject("Word.Application")

A partir de esa instrucción, la variable WD queda apuntada a una instancia de Word y desde la cuál se puede manipular la aplicación

WD.Documents.Add ' agrega un documento nuevo

Como es el único documento agregado, se puede direccionar directamente así

WD.ActiveDocument

Desde ActiveDocument ya se puede acceder a objetos de tipo Paragraph y volcar allí el texto que desees.

Finalmente

WD.ActiveDocument.SaveAs <nombre archivo)
WD.ActiveDocument.Close

WD.Quit
Set WD = Nothing


Espero que sirva como punto de partida

Saludos

Jorge S
28 de Noviembre del 2007
Muchas gracias!
Ayer pasé todo el dia investigando el tema y creo que puede ser la solución, solo que tengo dos problemillas:
1º No se cual es el código para insertar texto en el documento word ni cómo controlar dónde. Supongo que se pueden añadir marcadores o algo así en el word pero encuentro cómo hacerlo.
2º Una vez que haya rellenado el word con la información, ¿cómo hago que se abra para que lo vea el usuario?

Muchas gracias por todo, saludos!!

mvallejos
28 de Noviembre del 2007
No recuerdo mucho sobre las propiedades de los objetos de word, puedes buecas en las MDSN On Line de Microsoft con las palablas claves

ActiveDocument y Paragraph

De todos modos, si mal no recuerdo, la sintaxis era

WD.ActiveDocuments.Paragraphs.Add
WD.ActiveDocuments.Paragraphs(1).Text = <Texto>


Para poder abrir un documento ya grabado, hay dos caminos

1 - Un Shell Al word pasando la ruta completa del documento como parámetro

2 - Automatización

Set WD = CreateObject("Word.Application")
WD.Documents.Open Filename := <Ruta documento>

Saludos









Pere
28 de Noviembre del 2007
Hola Jorge.
Aquí tienes unos ejemplos para insertar texto, imágenes, visualizar el documento o imprimirlo.
Espero que te sirva.
Una salud.

Dim wdDoc As Word.Document
Dim xWord As Word.Application ' Instancia a Word
Dim xRange As Range ' Rango del objeto
Dim xSelection As Find
destino = "C:MiPlantilla.dot"

Set xWord = New Application
Set wdDoc = xWord.Documents.Open(destino)
xWord.Documents.Add destino

‘ Lo más práctico es el uso de marcadores. “Midomicilio” es el nombre de un marcador
Set xRange = xWord.ActiveDocument.Range
xRange.Bookmarks("MiDomicilio").Range.InsertAfter Text14.text

‘ Insertamos una imagen en otro marcador
Set xRange = xWord.ActiveDocument.Range
xRange.Bookmarks("MiImagen").Range.InlineShapes.AddPicture fileName:="C:barra.bmp",LinkToFile:=True, SaveWithDocument:=True

‘ Hacemos visible el documento
xWord.Visible = True
‘ Maximizamos la ventana en el que caso que esté minimizada
xWord.WindowState = wdWindowStateMaximize
xWord.Application.Activate

‘ Imprimir:
‘ Página actual
xWord.ActiveDocument.PrintOut True, False, wdPrintCurrentPage
‘ Todas las páginas aunque no haría falta colocar wdPrintAllDocument
xWord.ActiveDocument.PrintOut True, False, wdPrintAllDocument
‘ de la página 2 al final
xWord.ActiveDocument.PrintOut True, False, wdPrintRangeOfPages, pages:="2-"
‘ por ejemplo: las páginas 2,3,8-9,11 hasta el final (es igual que en el cuadro de diálgo de la impresora)
xWord.ActiveDocument.PrintOut True, False, wdPrintRangeOfPages, pages:="2,3,8-9,11-"



‘ Cerramos todo el proceso
xWord.ActiveDocument.Close False
xWord.Quit
Set xWord = Nothing

Jorge S
28 de Noviembre del 2007
me da un error que dice el tipo no está definido por usuario en la línea Dim wdDoc As Word.Document. ¿por que no entiende este tipo que se supone que deberia tenerlo implementado?
Muchas gracias a todos!

mvallejos
28 de Noviembre del 2007
Necesitas agregar la referencia a las librerias de word

Proyecto -> Referencias

Pero cuidado, si usas directamente las librerías de word en vez de la automatización, vas a quedar atado a esa versión de Officce.

Saludos