[resolvido] Imprimir arquivos pdf selecionados

Moderador: Avelino Sampaio

Chamon
Mensagens: 64
Registrado em: 27 Set 2016, 20:56

[resolvido] Imprimir arquivos pdf selecionados

Mensagempor Chamon » 09 Out 2018, 01:37

Boa noite!

Bd em Access 2010.

O Bd possui uma pasta externa com nome de "Documentos". Dentro desta pasta são salvos registros no formato pdf.
Ex.:
00001.pdf
00002.pdf
00003.pdf

e assim consecutivamente...

O Bd possui um formulário contínuo que consta em cada linha o mesmo número do registro que foi salvo em pdf e uma caixa de seleção para cada registro, chamada "Selecionar".

O objetivo é imprimir (através de um botão de comando) um ou vários registros, desde que estejam marcados na caixa de seleção.


Tabela de origem do formulário contínuo: tblDocumentos
Campos da tabela:
NumDoc
Selecionar


Como resolver isso via Vba?

Desde já agradeço.
Última edição por Chamon em 14 Out 2018, 22:48, editado 1 vez no total.

Disable adblock

Precisamos do seu apoio. Faca uma doacao para o site atraves do Paypal.


Avatar do usuário
Damasceno Jr.
Mensagens: 399
Registrado em: 08 Jun 2015, 01:30
Localização: Medicilândia-Pará

Re: Imprimir arquivos pdf selecionados

Mensagempor Damasceno Jr. » 09 Out 2018, 17:12

Num módulo global, cole:

Código:
Option Compare Database
Option Explicit

#If VBA7 Then
'versões 2010 e 2013
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
#Else
'versões 2003 e 2007
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
#End If

Public Sub fncImprimir(strArquivo as string)

Dim strCaminhoBase as string

strCaminhoBase = CurrentProject.Path & "\"
Call ShellExecute(0&, "print",strCaminhoBase & strArquivo, "", "", 1)

End Sub


E então monte uma estrutura de loop que percorra os campos com o nome dos pdfs no formulário contínuo, e dentro dela chame pelo procedimento que imprimi o arquivo
Código:
call fncImprimir(NomeDoArquivo)
Quanto mais o tempo passa, mais descubro e mais me apaixono por MS Access.

Chamon
Mensagens: 64
Registrado em: 27 Set 2016, 20:56

Re: Imprimir arquivos pdf selecionados

Mensagempor Chamon » 14 Out 2018, 02:43

Damasceno,
obrigado, a parte da impressão funcionou. Porém o Adobe permanece aberto após a impressão.
Teria algum comando para fechá-lo após a última impressão?

Chamon
Mensagens: 64
Registrado em: 27 Set 2016, 20:56

Re: Imprimir arquivos pdf selecionados

Mensagempor Chamon » 14 Out 2018, 22:47

Boa noite!

Após pesquisas pela net, encontrei um código que fecha o Adobe. Funcionou perfeitamente em conjunto com a função do amigo Damasceno Jr.
Obrigado pelas sugestões.
Abaixo segue a solução:

Código: Selecionar todos

#If VBA7 And Win64 Then
    Private Declare PtrSafe Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As LongPtr
    Private Declare PtrSafe Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As LongPtr, ByVal wMsg As Long, ByVal wParam As LongPtr, lParam As Any) As LongPtr
#Else
    Private Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
    Private Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" (ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
#End If
Const WM_CLOSE = &H10


Código: Selecionar todos

Public Sub fncImprimir(strArquivo as string)

Dim strCaminhoBase as string

strCaminhoBase = CurrentProject.Path & "\"
Call ShellExecute(0&, "print",strCaminhoBase & strArquivo, "", "", 1)

'Aqui fecha o Adobe
Sleep 2000

    Dim strClassName As String
    Dim hwnd
   
    strClassName = "AcrobatSDIWindow"
    hwnd = FindWindow(strClassName, vbNullString)
    If hwnd Then
        SendMessage hwnd, WM_CLOSE, 0, ByVal 0&
    Else
        MsgBox "Adobe não está aberto !"
    End If
End Sub

Disable adblock

Precisamos do seu apoio. Faca uma doacao para o site atraves do Paypal.


Avatar do usuário
Damasceno Jr.
Mensagens: 399
Registrado em: 08 Jun 2015, 01:30
Localização: Medicilândia-Pará

Re: [Resolvido]Imprimir arquivos pdf selecionados

Mensagempor Damasceno Jr. » 15 Out 2018, 04:19

Obrigado pelo retorno. Sucesso.
Quanto mais o tempo passa, mais descubro e mais me apaixono por MS Access.

Disable adblock

Precisamos do seu apoio. Faca uma doacao para o site atraves do Paypal.



Voltar para “Módulos VBA”

Quem está online

Usuários neste fórum: Nenhum usuário registrado e 3 visitantes