Hacer que macro imprima

22/01/2005 - 20:51 por Miguel Angel | Informe spam
Que tal amigos!!!

Alguien de ustedes me puede decier como puedo hacer que una macro me abra el
cuadro de dialogo de impresion???

de nante mano les agradesco su atencion

BUEN FIN DE SEMANA Y SI PUEDEN VENGANSE A LA FERIA DE LEON!!
 

Leer las respuestas

#1 Emilio
22/01/2005 - 21:36 | Informe spam
¡Importante!: Colabora con el grupo.Contesta a este mensaje y dinos si te
sirvió o no la respuesta dada. Muchas gracias
Hola !
pon todo este rollo en un módulo estándar
'*******************************************************************************
'* declaraciones para el cuadro de diálogo SeleccionarImpresora
'*******************************************************************************

Public Type CuadroDialogo_TYPE
lStructSize As Long
hwndOwner As Long
hDevMode As Long
hDevNames As Long
hDC As Long
flags As Long
nFromPage As Integer
nToPage As Integer
nMinPage As Integer
nMaxPage As Integer
nCopies As Integer
hInstance As Long
lCustData As Long
lpfnPrintHook As Long
lpfnSetupHook As Long
lpPrintTemplateName As String
lpSetupTemplateName As String
hPrintTemplate As Long
hSetupTemplate As Long
End Type

Private Type DEVNAMES_TYPE
wDriverOffset As Integer
wDeviceOffset As Integer
wOutputOffset As Integer
wDefault As Integer
extra As String * 100
End Type

Public Const CCHDEVICENAME = 32
Public Const CCHFORMNAME = 32
Public Const DM_DUPLEX = &H1000&
Public Const DM_ORIENTATION = &H1&

Public Type DEVMODE_TYPE
dmDeviceName As String * CCHDEVICENAME
dmSpecVersion As Integer
dmDriverVersion As Integer
dmSize As Integer
dmDriverExtra As Integer
dmFields As Long
dmOrientation As Integer
dmPaperSize As Integer
dmPaperLength As Integer
dmPaperWidth As Integer
dmScale As Integer
dmCopies As Integer
dmDefaultSource As Integer
dmPrintQuality As Integer
dmColor As Integer
dmDuplex As Integer
dmYResolution As Integer
dmTTOption As Integer
dmCollate As Integer
dmFormName As String * CCHFORMNAME
dmUnusedPadding As Integer
dmBitsPerPel As Integer
dmPelsWidth As Long
dmPelsHeight As Long
dmDisplayFlags As Long
dmDisplayFrequency As Long
End Type

Public Declare Function PrintDialog Lib "comdlg32.dll" Alias "PrintDlgA"
(pCuadroDialogo As CuadroDialogo_TYPE) As Long

'*******************************************************************************
'* SeleccionarImpresora
'* abre un cuadro de díalogo para seleccionar una impresora
'* Argumentos: lngManejador => siempre Me.Hwnd (manejador de la ventana
llamante)
'* uso: SeleccionarImpresora Me.Hwnd
'* ESH 16/11/03 11:45
'*******************************************************************************

Public Sub SeleccionarImpresora(lngManejador As Long, Optional PrintFlags As
Long)
Dim CuadroDialogo As CuadroDialogo_TYPE, _
DevMode As DEVMODE_TYPE, _
DevName As DEVNAMES_TYPE, _
lpDevMode As Long, _
lpDevName As Long, _
bReturn As Integer, _
objImpresora As Printer, _
strNuevaImpresora As String

On Error GoTo SeleccionarImpresora_TratamientoErrores

CuadroDialogo.lStructSize = Len(CuadroDialogo)
CuadroDialogo.hwndOwner = lngManejador

CuadroDialogo.flags = PrintFlags
On Error Resume Next
' establezco la configuración actual
DevMode.dmDeviceName = Printer.DeviceName
DevMode.dmSize = Len(DevMode)
DevMode.dmFields = DM_ORIENTATION Or DM_DUPLEX
DevMode.dmOrientation = Printer.Orientation
DevMode.dmPaperSize = Printer.PaperSize
DevMode.dmDuplex = Printer.Duplex
On Error GoTo 0

'Allocate memory for the initialization hDevMode structure
'and copy the settings gathered above into this memory
CuadroDialogo.hDevMode = GlobalAlloc(GMEM_MOVEABLE Or GMEM_ZEROINIT,
Len(DevMode))
lpDevMode = GlobalLock(CuadroDialogo.hDevMode)
If lpDevMode > 0 Then
CopyMemory ByVal lpDevMode, DevMode, Len(DevMode)
bReturn = GlobalUnlock(CuadroDialogo.hDevMode)
End If

'Set the current driver, device, and port name strings
With DevName
.wDriverOffset = 8
.wDeviceOffset = .wDriverOffset + 1 + Len(Printer.DriverName)
.wOutputOffset = .wDeviceOffset + 1 + Len(Printer.Port)
.wDefault = 0
End With

With Printer
DevName.extra = .DriverName & Chr(0) & .DeviceName & Chr(0) & .Port &
Chr(0)
End With

'Allocate memory for the initial hDevName structure
'and copy the settings gathered above into this memory
CuadroDialogo.hDevNames = GlobalAlloc(GMEM_MOVEABLE Or GMEM_ZEROINIT,
Len(DevName))
lpDevName = GlobalLock(CuadroDialogo.hDevNames)
If lpDevName > 0 Then
CopyMemory ByVal lpDevName, DevName, Len(DevName)
bReturn = GlobalUnlock(lpDevName)
End If

'Call the print dialog up and let the user make changes
If PrintDialog(CuadroDialogo) <> 0 Then

'First get the DevName structure.
lpDevName = GlobalLock(CuadroDialogo.hDevNames)
CopyMemory DevName, ByVal lpDevName, 45
bReturn = GlobalUnlock(lpDevName)
GlobalFree CuadroDialogo.hDevNames

'Next get the DevMode structure and set the printer
'properties appropriately
lpDevMode = GlobalLock(CuadroDialogo.hDevMode)
CopyMemory DevMode, ByVal lpDevMode, Len(DevMode)
bReturn = GlobalUnlock(CuadroDialogo.hDevMode)
GlobalFree CuadroDialogo.hDevMode
strNuevaImpresora = UCase$(Left(DevMode.dmDeviceName,
InStr(DevMode.dmDeviceName, Chr$(0)) - 1))
If Printer.DeviceName <> strNuevaImpresora Then
For Each objImpresora In Printers
If UCase$(objImpresora.DeviceName) = strNuevaImpresora Then
Set Printer = objImpresora
'set printer toolbar name at this point
End If
Next
End If

On Error Resume Next
'Set printer object properties according to selections made
'by user
Printer.Copies = DevMode.dmCopies
Printer.Duplex = DevMode.dmDuplex
Printer.Orientation = DevMode.dmOrientation
Printer.PaperSize = DevMode.dmPaperSize
Printer.PrintQuality = DevMode.dmPrintQuality
Printer.ColorMode = DevMode.dmColor
Printer.PaperBin = DevMode.dmDefaultSource
On Error GoTo 0
End If

SeleccionarImpresora_Salir:
On Error GoTo 0
Exit Sub

SeleccionarImpresora_TratamientoErrores:

MsgBox "Error " & Err.Number & " en proc. SeleccionarImpresora de Módulo
Dialogos (" & Err.Description & ")", vbOKOnly + vbCritical
GoTo SeleccionarImpresora_Salir
End Sub ' SeleccionarImpresora


Saludos a desde Huelva
Emilio
miliuco56 ALGARROBA hotmail.com

http://www.mvp-access.com/foro

Reglas de conducta de los grupos de noticias:
http://support.microsoft.com/defaul...newsreglas

"Miguel Angel" escribió en el mensaje
news:
Que tal amigos!!!

Alguien de ustedes me puede decier como puedo hacer que una macro me abra
el
cuadro de dialogo de impresion???

de nante mano les agradesco su atencion

BUEN FIN DE SEMANA Y SI PUEDEN VENGANSE A LA FERIA DE LEON!!


Preguntas similares