Visual Basic - Word

Life is soft - evento anual de software empresarial
 
Vista:

Word

Publicado por Agarciag (3 intervenciones) el 05/02/2007 13:44:58
Necesito abrir un documento de Word desde VB, pero no termino de encontrar la forma:
Si utilizo Shell("Winword.exe") tengo el problema de encontrar la ruta adecuada, que puede variar de una máquina a otra, según donde se instale mi programa.
He leido algo acerca de objetos de Office, pero no me termina de funcionar, además, la DLL que cargue depende de la versión de office, con lo que vuevo a tener problemas si instalo mi programa en máquinas con distintas versiones de Office.

¿Como puedo hacerlo?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Word

Publicado por alberto (35 intervenciones) el 05/02/2007 13:56:12
proba con alguna de estas lineas
En Word:
Abres un documento nuevo y cuando acabes, lo grabas con extensión .doc. En ese documento puedes poner marcadores, por ejemplo:
%%nombre%%
%%apellido1%%
%%apellido2%% y
%fecha%% son marcadores en los cuales se colocaran el texto que le envies desde VB. Colócalos donde te interesen.
En la plantilla puedes seleccionar el marcador y darle el formato que quieras (color, negrita, etc.) esto es mucho más práctico, rápido, cómodo y seguro que hacerlo desde código.
Por cierto, trabajas sobre la plantilla pero, si pones el documento visible verás que te abre un Documento1.doc. Esto tiene la ventaja de que te deja "intacta" la plantilla.

En tu proyecto añade en referencias
Microsoft Word 10.0 Objet Library (MSWORD.OLB)

En el proyecto
Dim xWord As Word.Application ' Instancia a Word
Dim xRange As Range ' Rango del objeto
Dim xSelection As Find ' Búsqueda del objeto
Set xWord= New Application
Dim destino$
destino = "C:\MiPlantilla.doc"

‘Esta linea abre formulario sin contraseña
xWord.Documents.Add destino

‘Esta linea abre formulario con contraseña
xWord.documents.Open "C:\MiPlantilla.doc", False, False, False, "poner contraseña"

Set xRange = xWord.ActiveDocument.Range
xRange.Find.Execute "%%apellido1%%", , , , , , , , , Text1.text, True

Set xRange = xWord.ActiveDocument.Range
xRange.Find.Execute "%%apellido2%%", , , , , , , , , Text2.text, True

Set xRange = xWord.ActiveDocument.Range
xRange.Find.Execute "%%nombre%%", , , , , , , , , Text3.text, True

ESTAS SON DIFERENTES OPCIONES A LA HORA DE IMPRIMIR:

'Se puede guardar el documento, o plantilla
'xWord.ActiveDocument.SaveAs “C:\MiPlantilla.dot "

' Si queremos visualizarlo en pantalla
xWord.Visible = true

' 'Maximizarlo
xWord.WindowState = wdWindowStateMaximize

' 'Tenerlo activo, visible en pantalla
xWord.Application.Activate

' No preguntar si queremos guardar el documento
' xWord.DisplayAlerts = wdAlertsNone

‘ Imprimir
xWord.ActiveDocument.PrintOut

' Para evitar la pregunta: ¿Desea guardar el documento….?
xWord.ActiveDocument.Close False

'Cerramos word
xWord.Quit

'Liberamos el objeto
Set xWord = Nothing
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Word

Publicado por Agarciag (3 intervenciones) el 05/02/2007 15:47:19
O, Muchas gracias, funciona.

Ya para rizar el rizo, necesitaría modificar una imagen (mediante Image1.Picture), pero no se como acceder a ello desde codigo VB.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar