MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

Obrigado

Administração do MaximoAccess

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access

    [Resolvido]Imprimir arquivos pdf selecionados

    Compartilhe

    Chamon Consultoria
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 206
    Registrado : 31/08/2012

    [Resolvido]Imprimir arquivos pdf selecionados

    Mensagem  Chamon Consultoria em 8/10/2018, 18:32

    Boa tarde!

    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 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.


    cpampas
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 72
    Registrado : 27/10/2013

    Re: [Resolvido]Imprimir arquivos pdf selecionados

    Mensagem  cpampas em 9/10/2018, 10:10

    Bom dia,
    Nao testei o codigo, mas talvez algo assim :


    Código:
    dim strPath  
    strPath ="c:\pastaOndeEstaoPDF"

    with me.recordsetclose
    .movefirst
     do while not .eof
        if !Selecionar=-1 then
            ' aqui voce pode usar a funcao shell para abrir o PDF  , no seguinte path :
            '  strPath & format(NumDoc,"0000") & ".pdf"
               
     
        end if
    .moveNext
     loop
    end with

    IvanJr.
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 68
    Registrado : 22/11/2016

    Re: [Resolvido]Imprimir arquivos pdf selecionados

    Mensagem  IvanJr. em 13/10/2018, 21:39

    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)

    Chamon Consultoria
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 206
    Registrado : 31/08/2012

    Re: [Resolvido]Imprimir arquivos pdf selecionados

    Mensagem  Chamon Consultoria Ontem à(s) 03:45

    IvanJr.,

    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?
    avatar
    Assis
    Maximo VIP
    Maximo VIP

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 3527
    Registrado : 06/11/2009

    Re: [Resolvido]Imprimir arquivos pdf selecionados

    Mensagem  Assis Ontem à(s) 09:56

    Bom dia Amigos

    Tenho este exemplo (Anexo) que lista os PDF que estão numa pasta junto da Base de dados.

    Como podem ver no formulário tem um comando para eliminar os que desejar, assim como um comando para abrir o que desejar.

    Como por a Imprimir direto sem o abrir bastando o PDF ser selecionado na lista e clicando no respetivo botão de Imprimir.

    Obrigado
    Anexos
    BD.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (246 Kb) Baixado 5 vez(es)


    .................................................................................
    *** Só sei que nada sei ***

    Chamon Consultoria
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 206
    Registrado : 31/08/2012

    Re: [Resolvido]Imprimir arquivos pdf selecionados

    Mensagem  Chamon Consultoria Ontem à(s) 23:43

    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 IvanJr.
    Obrigado a todos pelas sugestões.
    Abaixo segue a solução:

    Código:
    #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:
    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

    IvanJr.
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 68
    Registrado : 22/11/2016

    Re: [Resolvido]Imprimir arquivos pdf selecionados

    Mensagem  IvanJr. Hoje à(s) 05:19

    Obrigado pelo retorno e código disponibilizado. O fórum agradece.

      Data/hora atual: 15/10/2018, 20:51