Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Seleccionar imprerora desde VBA de un Form

819 views
Skip to first unread message

Martín

unread,
Apr 18, 2008, 9:54:39 AM4/18/08
to
Hola,
el problema en sí, es que quiero exportar a un pdf, el resultado de un
listado de una consulta.

Como ví que lo que tengo que hacer es configurar una impresora virtual,

bajé el cutepdf, para imprimir en pdf, y si imprimo informes con la
impresora que configuré de adobe, me lo exporta bien,

el tema es que quiero poner un botón en un vba que diga:

Exportar a PDF
Exportar a XLS
Ver informe..
.,..
..

entonces, cuando ponga exportar a pdf, tendría que poner la impresora en el
código de VBA , pero no tengo ni idea como se hace esto...

si alguien me da una mano se lo agradezco,

Saludos,
Martín


FITO

unread,
Apr 18, 2008, 6:44:18 PM4/18/08
to
Primero deberias saber el indice de la impresora de PDF
y luego asignarla como impresora al pulsar el boton.
por ej:

Private Sub ImprimirPDF_Click()
'asignamos la impresora de CuttePDF como impresora por defecto
' indice se refiere al numero asignado por windows como impresora

Set Application.Printer = Application.Printers(indice)

'imprimimos el documento

DoCmd.PrintOut

End Sub

Espero que te sirva, a mi por lo menos en Access 2003 me funciona.

Adolfo Alvarez

"Martín" <martin.g...@ingap.com.uy> escribió en el mensaje de
noticias:ezVKaPWo...@TK2MSFTNGP02.phx.gbl...

Martín

unread,
Apr 21, 2008, 11:13:33 AM4/21/08
to
bien, pero cómo sé ese índice??

tengo win 2000, y no lo vi en la conf de impresoras

gracias
Martín
"FITO" <belce...@hotmail.com> escribió en el mensaje
news:3D442857-B5E4-4ECE...@microsoft.com...

FITO

unread,
Apr 21, 2008, 6:29:49 PM4/21/08
to
Puedes hacerlo de la siguiente manera:

Option Compare Database

'Definimos una variable general que representa el objeto impresora

Dim prtLoop As Printer

Private Sub ImprimirPDF_Click()
On Error GoTo Err_ImprimirPDF_Click

' recorremos la coleccion de impresoras existentes en nuestro windows

For Each prtLoop In Application.Printers
With prtLoop
' cuando encontramos la impresora Que deseamos (en este caso CutePDF
Writer)
' imprimimos el documento.

If .DeviceName = "CutePDF Writer" Then
DoCmd.PrintOut

' como ya hemos imprimido salimos del bucle para no ocupar mas
memoria

Exit For

End If

End With

Next prtLoop

Exit_ImprimirPDF_Click:
Exit Sub
Err_ImprimirPDF_Click:
MsgBox Err.Description
Resume Exit_ImprimirPDF_Click

End Sub


Espero que te sirva...;)

Adolfo.

"Martín" <martin.g...@ingap.com.uy> escribió en el mensaje de

noticias:ejffdp8o...@TK2MSFTNGP03.phx.gbl...

Martín

unread,
Apr 22, 2008, 7:03:55 AM4/22/08
to
gracias por la ayuda antes que nada,

pero no me ha funcionado, te copio el código que tengo en el botón del form,
(que es casi todo lo que has puesto tu, salvo la linea de impresión)


///////////////////////////////////
Private Sub ImprimirPDF_Click()


On Error GoTo Err_ImprimirPDF_Click

' recorremos la coleccion de impresoras existentes en nuestro windows

For Each prtLoop In Application.Printers
With prtLoop
' cuando encontramos la impresora Que deseamos (en este caso
CutePDFWriter)
' imprimimos el documento.

If .DeviceName = "CutePDF Writer" Then

DoCmd.OpenReport "Sueldos", acNormal, , "imprimir = false and
NroSocio = " & NroSocio

' como ya hemos imprimido salimos del bucle para no ocupar mas

nmemoria

Exit For

End If

End With

Next prtLoop

Exit_ImprimirPDF_Click:
Exit Sub
Err_ImprimirPDF_Click:
MsgBox Err.Description
Resume Exit_ImprimirPDF_Click

End Sub

/////////////////////////////////////////////


"FITO" <belce...@hotmail.com> escribió en el mensaje

news:99966CBB-07E7-42CF...@microsoft.com...

FITO

unread,
Apr 25, 2008, 6:52:11 PM4/25/08
to
Perdona Martin, pero no he podido conectarme hasta hoy.
He revisado el codigo y es verdad no funciona.
Este solo funcionaria en caso de que quisieses imprimir el Form en formato
pdf.
Pero viendo lo que quieres hacer me parece que el que te coloco a
continuación funcionara correctamente.
Pruebalo y dime algo,

Option Compare Database
'Definimos una variable general que representa el objeto impresora

Dim prtLoop As Printer
Dim stDocName As String

Private Sub ImprimirPDF_Click()
On Error GoTo Err_ImprimirPDF_Click

' recorremos la coleccion de impresoras existentes en nuestro windows

For Each prtLoop In Application.Printers
With prtLoop
' cuando encontramos la impresora Que deseamos (en este caso CutePDF
Writer)
' imprimimos el documento.

If .DeviceName = "CutePDF Writer" Then


'asignamos la impresora por defecto **** esta linea debería ir
antes del informe a imprimir ****
Application.Printer = prtLoop
'imprimimos el Informe sueldos
stDocName = "Sueldos"
DoCmd.OpenReport stDocName, acViewNormal, , ""imprimir = false

and NroSocio = " & NroSocio

' una vez imprimido liberamos la impresora por defecto
Set Application.Printer = Nothing


' como ya hemos imprimido salimos del bucle para no ocupar mas
memoria


Exit For

End If

End With

Next prtLoop

Exit_ImprimirPDF_Click:
Exit Sub
Err_ImprimirPDF_Click:
MsgBox Err.Description
Resume Exit_ImprimirPDF_Click

End Sub

Adolfo Alvarez ;))


"Martín" <martin.g...@ingap.com.uy> escribió en el mensaje de

noticias:uAF4nCHp...@TK2MSFTNGP03.phx.gbl...

Charly

unread,
Jun 12, 2008, 3:18:00 PM6/12/08
to
Hola FITO,

Estava buscando un ejemplo como el que proporcionas a Martin, funciona todo
menos esta linea:

DoCmd.OpenReport stDocName, acViewNormal, , ""imprimir = false
and NroSocio = " & NroSocio

Me funciona si la modifico y pongo:

DoCmd.OpenReport stDocName, acViewNormal, "& Codi"

El problema lo tengo cuando abre el documento creado en pdf (utilizo adobe
pdf) y no quiero ver el fichero ya que quiero realizar su envio via e-mail.
Otro punto seria si podemos guardarlo directamente con el nombre del informe
+ Codi (en mi caso) para conservar lo informes generados.

Me puedes ayudar en algun caso?

Muchas Gracias


"FITO" wrote:

> Perdona Martin, pero no he podido conectarme hasta hoy.
> He revisado el codigo y es verdad no funciona.
> Este solo funcionaria en caso de que quisieses imprimir el Form en formato
> pdf.
> Pero viendo lo que quieres hacer me parece que el que te coloco a

> continuacin funcionara correctamente.


> Pruebalo y dime algo,
> Option Compare Database
> 'Definimos una variable general que representa el objeto impresora
>
> Dim prtLoop As Printer
> Dim stDocName As String
>
> Private Sub ImprimirPDF_Click()
> On Error GoTo Err_ImprimirPDF_Click
>
> ' recorremos la coleccion de impresoras existentes en nuestro windows
>
> For Each prtLoop In Application.Printers
> With prtLoop
> ' cuando encontramos la impresora Que deseamos (en este caso CutePDF
> Writer)
> ' imprimimos el documento.
>
> If .DeviceName = "CutePDF Writer" Then
>
>

> 'asignamos la impresora por defecto **** esta linea debera ir

> antes del informe a imprimir ****
> Application.Printer = prtLoop
> 'imprimimos el Informe sueldos
> stDocName = "Sueldos"
> DoCmd.OpenReport stDocName, acViewNormal, , ""imprimir = false
> and NroSocio = " & NroSocio
> ' una vez imprimido liberamos la impresora por defecto
> Set Application.Printer = Nothing
> ' como ya hemos imprimido salimos del bucle para no ocupar mas
> memoria
>
>
> Exit For
>
> End If
>
> End With
>
> Next prtLoop
>
> Exit_ImprimirPDF_Click:
> Exit Sub
> Err_ImprimirPDF_Click:
> MsgBox Err.Description
> Resume Exit_ImprimirPDF_Click
>
> End Sub
>
> Adolfo Alvarez ;))
>
>

> "Martn" <martin.g...@ingap.com.uy> escribi en el mensaje de

> noticias:uAF4nCHp...@TK2MSFTNGP03.phx.gbl...
> > gracias por la ayuda antes que nada,
> >

> > pero no me ha funcionado, te copio el cdigo que tengo en el botn del
> > form,
> > (que es casi todo lo que has puesto tu, salvo la linea de impresin)

> > "FITO" <belce...@hotmail.com> escribi en el mensaje

> >> "Martn" <martin.g...@ingap.com.uy> escribi en el mensaje de
> >> noticias:ejffdp8o...@TK2MSFTNGP03.phx.gbl...
> >> > bien, pero cmo s ese ndice??


> >> >
> >> > tengo win 2000, y no lo vi en la conf de impresoras
> >> >
> >> > gracias

> >> > Martn
> >> > "FITO" <belce...@hotmail.com> escribi en el mensaje


> >> > news:3D442857-B5E4-4ECE...@microsoft.com...
> >> >> Primero deberias saber el indice de la impresora de PDF
> >> >> y luego asignarla como impresora al pulsar el boton.
> >> >> por ej:
> >> >>
> >> >> Private Sub ImprimirPDF_Click()
> >> >> 'asignamos la impresora de CuttePDF como impresora por defecto
> >> >> ' indice se refiere al numero asignado por windows como impresora
> >> >>
> >> >> Set Application.Printer = Application.Printers(indice)
> >> >>
> >> >> 'imprimimos el documento
> >> >>
> >> >> DoCmd.PrintOut
> >> >>
> >> >> End Sub
> >> >>
> >> >> Espero que te sirva, a mi por lo menos en Access 2003 me funciona.
> >> >>
> >> >> Adolfo Alvarez
> >> >>

> >> >> "Martn" <martin.g...@ingap.com.uy> escribi en el mensaje de
> >> >> noticias:ezVKaPWo...@TK2MSFTNGP02.phx.gbl...
> >> >> > Hola,
> >> >> > el problema en s, es que quiero exportar a un pdf, el resultado de


> > un
> >> >> > listado de una consulta.
> >> >> >

> >> >> > Como v que lo que tengo que hacer es configurar una impresora
> > virtual,
> >> >> >
> >> >> > baj el cutepdf, para imprimir en pdf, y si imprimo informes con la
> >> >> > impresora que configur de adobe, me lo exporta bien,
> >> >> >
> >> >> > el tema es que quiero poner un botn en un vba que diga:


> >> >> >
> >> >> > Exportar a PDF
> >> >> > Exportar a XLS
> >> >> > Ver informe..
> >> >> > .,..
> >> >> > ..
> >> >> >

> >> >> > entonces, cuando ponga exportar a pdf, tendra que poner la
> >> >> > impresora
> >> >> > en
> >> >> > el
> >> >> > cdigo de VBA , pero no tengo ni idea como se hace esto...


> >> >> >
> >> >> > si alguien me da una mano se lo agradezco,
> >> >> >
> >> >> > Saludos,

> >> >> > Martn
> >> >> >
> >> >> >
> >> >
> >> >
> >
> >

0 new messages