¿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!
