Imprimir documento de Word (sin abrir) presionenado boton desde Access

02/10/2015 - 21:13 por sol.matteo.26 | Informe spam
Saludos cordiales: Explico lo que quiero hacer Tengo un formulario con un botón de comando. Lo que quiero hacer es haciendo click en ese botón, que me imprima directamente por la impresora (sin abrir Word) cartas en serie basado en base de datos en acces..
ej. al señor (nombre)
director de (empresa)

desde ya agradezco su tiempo.-
 

Leer las respuestas

#1 Emilio
02/10/2015 - 22:41 | Informe spam
-
¡Importante!: Colabora con el grupo.Contesta a este mensaje
y dinos si te sirvió o no la respuesta dada. Muchas gracias
-
Hola!
inserta el siguiente código en un módulo estándar

#If Win64 Or VBA7 Then
Public Declare PtrSafe Function ShellExecute Lib "shell32.dll" Alias
"ShellExecuteA" (ByVal hwnd As LongPtr, ByVal lpOperation As String, ByVal
lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String,
ByVal nShowCmd As Long) As LongPtr
Public Declare PtrSafe Function FormatMessage Lib "kernel32" Alias
"FormatMessageA" (ByVal dwFlags As Long, lpSource As Any, ByVal dwMessageId
As Long, ByVal dwLanguageId As Long, ByVal lpBuffer As String, ByVal nSize
As Long, Arguments As LongPtr) As Long
#Else
Public Declare Function ShellExecute Lib "shell32.dll" Alias
"ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal
lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String,
ByVal nShowCmd As Long) As Long
Public Declare Function FormatMessage Lib "kernel32" Alias
"FormatMessageA" (ByVal dwFlags As Long, lpSource As Any, ByVal dwMessageId
As Long, ByVal dwLanguageId As Long, ByVal lpBuffer As String, ByVal nSize
As Long, Arguments As Long) As Long
#End If

Public Const SW_NORMAL As Long = 1&
Public Const SW_HIDE As Long = 0&
Public Const FORMAT_MESSAGE_FROM_SYSTEM As Long = &H1000


'******************************************************************************
'* ImprimirArchivo
'* manda a la impresora predeterminada el archivo pasado como parámetro
'* deberá incluir en la sección de declaraciones de un módulo las siguientes
'* #If Win64 Or VBA7 Then
'* Public Declare PtrSafe Function ShellExecute Lib "shell32.dll" Alias
"ShellExecuteA" (ByVal hwnd As LongPtr, ByVal lpOperation As String, ByVal
lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String,
ByVal nShowCmd As Long) As LongPtr
'* Public Declare PtrSafe Function FormatMessage Lib "kernel32" Alias
"FormatMessageA" (ByVal dwFlags As Long, lpSource As Any, ByVal dwMessageId
As Long, ByVal dwLanguageId As Long, ByVal lpBuffer As String, ByVal nSize
As Long, Arguments As LongPtr) As Long
'* #Else
'* Public Declare Function ShellExecute Lib "shell32.dll" Alias
"ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal
lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String,
ByVal nShowCmd As Long) As Long
'* Public Declare Function FormatMessage Lib "kernel32" Alias
"FormatMessageA" (ByVal dwFlags As Long, lpSource As Any, ByVal dwMessageId
As Long, ByVal dwLanguageId As Long, ByVal lpBuffer As String, ByVal nSize
As Long, Arguments As Long) As Long
'* #End If
'*
'* Public Const SW_NORMAL As Long = 1&
'* Public Const SW_HIDE As Long = 0&
'* Public Const FORMAT_MESSAGE_FROM_SYSTEM As Long = &H1000
'*
'* Argumentos: strArchivo => Ruta del archivo a imprimir
'* uso: ImprimirArchivo ("C:\Temp\Fuentes.txt")
'* http://www.mvp-access.es/emilio
'* Si utilizas este código, respeta la autoría y los créditos
'* ESH 10/09/14 18:05
'* ESH 07/08/15 18:40 modificado para trabajar con 64 bytes
'*******************************************************************************

Public Function ImprimirArchivo(strArchivo As String)
Dim lngResultado As Long, _
strError As String * 1024, _
lngMensaje As Long

lngResultado = ShellExecute(hWndAccessApp, "Print", strArchivo, 0&,
vbNullString, SW_HIDE)
' si se ha producido algún error
If lngResultado < 33 Then
' obtenemos el mensaje de error que manda el sistema
lngMensaje = FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, ByVal 0&,
lngResultado, 0&, strError, Len(strError), SW_HIDE)
' devolvemos el mensaje de error
ImprimirArchivo = Left$(strError, lngMensaje - 1)
Else
' la función tuvo éxito
ImprimirArchivo = True
End If

End Function ' ImprimirArchivo

y llámalo desde el botón tal que así

ImprimirArchivo ("C:\Temp\Fuentes.txt")

Saludos a todos desde Huelva

Emilio [MS-MVP Access 2006/11]
http://www.mvp-access.com/foro
http://www.mvp-access.es/emilio
escribió en el mensaje de
noticias:

Saludos cordiales: Explico lo que quiero hacer Tengo un formulario con
un botón de comando. Lo que quiero hacer es haciendo click en ese botón, que
me imprima directamente por la impresora (sin abrir Word) cartas en serie
basado en base de datos en acces..
ej. al señor (nombre)
director de (empresa)

desde ya agradezco su tiempo.-

Preguntas similares