![Antiguo](http://static.forosdelweb.com/fdwtheme/images/statusicon/post_old.gif)
30/12/2002, 12:58
|
| | Fecha de Ingreso: marzo-2002
Mensajes: 449
Antigüedad: 22 años, 10 meses Puntos: 0 | |
Bueno cabe decirte que el ejemplo que te menciono no lo he probado y no se si los nombres de los metodos del componento aparecen en español o en ingles.
Se dice que se recomiendo usar VBA puesto que WordBasic hace uno de 900 sentencias (dificultado aprenderselas todas) y en cambio VBA hace uso de una jerarquia de objetos en donde se divide de forma mas sencilla a los metodos y propiedades.
Para usar VBA es necesario especificar esta en las referencias y tambien Microsoft Word Object Library.
El mismo ejemplo y que si funciona , hecho con VBA seria:
******************************************
Option Explicit
Private DocWord As Word.Application ' aplicación Word
Private Sub Form_Load()
Label3.Visible = False 'ocultar la etiqueta "Generando cartas..."
End Sub
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 = New Word.Application
DocWord.Application.Visible = True
'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
Private Sub Documento(DatoVar() As String, marc As Integer, fNom As String)
Dim x As Integer, mar As String 'variables auxiliares
'Abrir el documento fNom que suponemos en el directorio de app
DocWord.Documents.Open App.Path & "\" & fNom
'Insertar los datos variables en el documento
For x = 1 To marc
'Los marcadores se han nombrado M01 y M02
mar = "M" & Format(x, "00")
DocWord.ActiveDocument.Bookmarks(mar).Select
DocWord.Selection.InsertAfter DatoVar(x)
Next x
DocWord.ActiveDocument.PrintOut 'lanzar la tarea de impresión
DoEvents 'ejecutar mensajes de otras aplicaciones
'Cerrar el documento sin guardarlo
DocWord.ActiveDocument.Close wdDoNotSaveChanges
End Sub
Private Sub Salir_Click()
On Error Resume Next 'por ya estuviera cerrado el documento
'Pregunta al usuario si desea guardar los cambios
DocWord.ActiveDocument.Close wdPromptToSaveChanges
DocWord.Quit
If Not (DocWord Is Nothing) Then Set DocWord = Nothing
End
End Sub
**************************************
Si te interesa puedo pasarte los archivos de los ejemplos mandame un correo. |