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