Ver Mensaje Individual
  #3 (permalink)  
Antiguo 30/12/2002, 12:46
Troyano
 
Fecha de Ingreso: marzo-2002
Mensajes: 449
Antigüedad: 22 años, 2 meses
Puntos: 0
Para editar una plantilla se debe marcar lo que se va a modificar como marcadores de word.
En el siguiente ejemplo el vector DatoVariable contiene los datos que se van a remplazar y son objetidos apartir de una base de datos un otro medio.

*********************************
Private Sub ImprimirCarta_Click()
Dim DatoVariable(1 To 3) As String, fNombre As String
Dim x As Integer 'variable auxiliar
Dim marcadores As Integer ' número de marcadores en el documento

Label3.Visible = True 'visualizar etiqueta "Generando cartas..."
Screen.MousePointer = vbHourglass 'reloj de arena
'Obtener la fecha
DatoVariable(3) = Format(Now, "d-mmmm-yyyy")
'Nombre del documento
fNombre = InputBox("Nombre del documento:", , "carta.doc")
If fNombre = "" Then GoTo Salir
marcadores = InputBox("Nro. de marcadores en el documento:", , 1)
If marcadores <= 0 Then GoTo Salir
'Iniciar una copia de Word
Set DocWord = CreateObject("Word.Basic")

'Acceder a los registros de la base de datos
While Not Adodc1.Recordset.EOF
'Si algún campo fuera Null el programa causaría un error
If Not IsNull(Adodc1.Recordset.Fields("Nombre")) Then
DatoVariable(1) = Adodc1.Recordset.Fields("Nombre")
Else
DatoVariable(1) = " "
End If
If Not IsNull(Adodc1.Recordset.Fields("Dirección")) Then
DatoVariable(2) = Adodc1.Recordset.Fields("Dirección")
Else
DatoVariable(2) = " "
End If
'Llamar al procedimiento que escribe la carta
Documento DatoVariable(), marcadores, fNombre
Adodc1.Recordset.MoveNext
DoEvents 'ejecutar mensajes de otras aplicaciones
Wend
Adodc1.Recordset.MoveFirst
Salir:
Label3.Visible = False 'ocultar la etiqueta "Generando cartas..."
Form1.SetFocus 'volver al formulario antes del MsgBox
Screen.MousePointer = vbDefault 'restaurar ratón
End Sub

*****************************************
El procedimiento que hace el remplazo el Documento y recibe como parametro el vector, el numero de marcadores en el documento y el nombre del archivo.

Private Sub Documento(DatoVar() As String, marc As Integer, fNom As String)
Dim x As Integer 'variable auxiliar

'Abrir el documento fNom que suponemos en el directorio de app
DocWord.ArchivoAbrir App.Path & "\" & fNom, 0, 1
'Insertar los datos variables en el documento
For x = 1 To marc
'Los marcadores se han nombrado M01 y M02
DocWord.EdiciónMarcador "M" & Format(x, "00"), 0, 0, 0, 1
DocWord.Insertar DatoVar(x)
Next x
DocWord.ArchivoImprimirPredeter 'lanzar la tarea de impresión
DoEvents 'ejecutar mensajes de otras aplicaciones
DocWord.ArchivoCerrar 2 'cerrar el documento sin guardarlo
End Sub

**********************************************

y al salir para guardarlo

Private Sub Salir_Click()
On Error Resume Next 'por ya estuviera cerrado el documento
DocWord.ArchivoCerrar 0 'pregunta al usuario si desea guardarlo
If Not (DocWord Is Nothing) Then Set DocWord = Nothing
End
End Sub