Te adjunto un código que hace algún tiempo ocupé en una aplicación... Este abre un documento word previamente generado, lo modifica a través de código y luego lo imprime... espero que te sirva... Function abrir_word() Set app_word = CreateObject("word.application") app_word.Caption = "Titulo que quieres que aparezca en la barra de titulo" app_word.Visible = False End Function Sub Generar_Documento() Dim app_word As Object Dim doc_word As Object Dim rango As Object On Error GoTo errores Set doc_word = app_word.Documents.Open(FileName:=App.Path & "\Documento.doc") '-> Para este caso, yo cree previamente un documento .DOC con algunos "Tag" por decirlo así, para después reemplazarlos con los datos que tengo en las variables... With app_word barra.Visible = True 'fecha Set rango = .ActiveDocument.content rango.Find.Execute FindText:="[fecha]", ReplaceWith:=Format(Date, "mmmm dd") + " de " + Format(Date, "yyyy") Progreso (1) 'nombre Set rango = .ActiveDocument.content rango.Find.Execute FindText:="[nombre]", ReplaceWith:=nom + " " + Apell Progreso (2) 'apellido Set rango = .ActiveDocument.content rango.Find.Execute FindText:="[apellido]", ReplaceWith:=apell progreso (3) 'cta. cte. Set rango = .ActiveDocument.content rango.Find.Execute FindText:="[cta.cte.]", ReplaceWith:=lacta_cte progreso (4) 'banco Set rango = .ActiveDocument.content rango.Find.Execute FindText:="[banco]", ReplaceWith:=elbanco progreso (5) 'deposito Set rango = .ActiveDocument.content rango.Find.Execute FindText:="[deposito]", ReplaceWith:=Format(total_dep, "###,###") progreso (6) 'fecha arriendo Set rango = .ActiveDocument.content rango.Find.Execute FindText:="[fecha_a]", ReplaceWith:=Format(Date, "mmmm") + " de " + Format(Date, "yyyy") Progreso (7) 'dirección Set rango = .ActiveDocument.content rango.Find.Execute FindText:="[dirección]", ReplaceWith:=ladireccion progreso (7) . . . . . 'total a recibir Set rango = .ActiveDocument.content rango.Find.Execute FindText:="[total_final]", ReplaceWith:=Format(total_dep, "###,###") progreso (27) 'ejecutivo responsable Set rango = .ActiveDocument.content rango.Find.Execute FindText:="[nom_adm]", ReplaceWith:=ejecutivo_res progreso (28) lbl_listo.Visible = True barra.Visible = False End With errores: If Err.Number <> 0 Then If Err.Number = 5174 Then mensaje = "No se pudo generar la Carta. Imposible encontrar el Archivo" ElseIf Err.Number = 462 Then mensaje = "Microsoft Word fue Cerrado..." + Chr(10) + Chr(13) + "Por favor, cierre la ventana ''Carta Propietarios'' y vuelva a entrar." Else mensaje = "No se pudo generar la Carta" + Chr(10) + Chr(13) + Err.Description End If a = MsgBox(mensaje, vbCritical, "Falla en la Operación") End If End Function Private Sub imprimir_Documento_Click() On Error GoTo errores If app_word.Documents.Count >= 1 Then CommonDialog1.CancelError = True CommonDialog1.ShowPrinter app_word.ActiveDocument.PrintOut app_word.ActiveDocument.Close (0) If app_word.Visible = True Then app_word.Visible = False End If Else a = MsgBox("El documento ya se imprimió...", vbInformation, "Impresión") End If errores: Select Case Err.Number Case Is = 462: a = MsgBox("Microsoft Word fue cerrado antes de imprimir la Carta", vbCritical, "No se pudo completar la operación") Case Is = 32755: app_word.ActiveDocument.Close (0) app_word.Visible = False End Select limpiar '<- limpia las variables... End Sub