¿Cómo escribir en un word desde el programa?
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!
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
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
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!!
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!!
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
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
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
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
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!
Muchas gracias a todos!
