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]Impressão de vários PDFs sem os visualizar

    avatar
    zcarloslopes
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 230
    Registrado : 28/10/2010

    [Resolvido]Impressão de vários PDFs sem os visualizar Empty [Resolvido]Impressão de vários PDFs sem os visualizar

    Mensagem  zcarloslopes em 12/12/2019, 07:45

    Bom dia,

    Mais uma vez venho pedir a vossa aluda.

    Uso esta função:
    Código:
    Option Compare Database
    Option Explicit
    Public Const SW_HIDE_P = 0
    Public Const SW_SHOWNORMAL_P = 1
    Public Const SW_SHOWMINIMIZED_P = 2
    Public Const SW_SHOWMAXIMIZED_P = 3
    Public Const OP_OPEN = "Open"
    Public Const OP_PRINT = "Print"


    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 nshowcm As Long)

    Sub ShellToFile(strPath As String, _
                Optional strOperation As String = OP_OPEN, _
                Optional lngShow As Long = SW_SHOWNORMAL_P)

        Dim lngRetVal As Long
        Dim lngHwnd As Long
        
        lngHwnd = Application.hWndAccessApp
        
        lngRetVal = ShellExecute(lngHwnd, strOperation, strPath, _
            vbNullString, CurDir, lngShow)
            
        If lngRetVal <= 32 Then
            MsgBox "Não é Possível Imprimir o(s) Ficheiro(s) " & strPath, vbInformation, "Erro!"
        End If
        
    End Sub
    A qual chamo:
    Código:
    ShellToFile "NomeDoPDF", OP_PRINT, SW_HIDE_P
    Funciona bem no access 2003 winXP 32Bit

    Mas num access 2007 com win7 64Bit não consigo por a funcionar.

    Alguma dica para resolver esta situação?

    Como o BD esta a funcionar em ambos os Offices/Windows necessito que a funcionalidade também funcione em ambos.

    Obrigado


    Última edição por zcarloslopes em 3/1/2020, 08:49, editado 1 vez(es)
    Marcelo David
    Marcelo David
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 2988
    Registrado : 21/04/2011

    [Resolvido]Impressão de vários PDFs sem os visualizar Empty Re: [Resolvido]Impressão de vários PDFs sem os visualizar

    Mensagem  Marcelo David em 12/12/2019, 08:18

    Bom dia, isso tem relação com o windows e versão do VBA.

    Acompanhe o tópico abaixo e tente extrair a solução:

    https://www.maximoaccess.com/t10677-resolvidocodigo-64-bits


    .................................................................................
    Marcelo David
    www.mrdsystem.com.br (em construção)
    avatar
    zcarloslopes
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 230
    Registrado : 28/10/2010

    [Resolvido]Impressão de vários PDFs sem os visualizar Empty Re: [Resolvido]Impressão de vários PDFs sem os visualizar

    Mensagem  zcarloslopes em 12/12/2019, 11:20

    Boa tarde Marcelo!

    Obrigado pela dica.

    Segui a sugestão, mas não resolveu.

    P.S. caso ajude, o valor da variável lngRetVal do código acima retorna 42 no win32-bit e 31 no win64-bit.
    Marcelo David
    Marcelo David
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 2988
    Registrado : 21/04/2011

    [Resolvido]Impressão de vários PDFs sem os visualizar Empty Re: [Resolvido]Impressão de vários PDFs sem os visualizar

    Mensagem  Marcelo David em 12/12/2019, 12:20

    Que erro ocorre?


    .................................................................................
    Marcelo David
    www.mrdsystem.com.br (em construção)
    avatar
    zcarloslopes
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 230
    Registrado : 28/10/2010

    [Resolvido]Impressão de vários PDFs sem os visualizar Empty Re: [Resolvido]Impressão de vários PDFs sem os visualizar

    Mensagem  zcarloslopes em 13/12/2019, 07:04

    Bom dia,

    Não dá erro, apenas não faz nada e retoma para a mensagem do valor da variável lngRetVal < 32.

    Coloquei uma MsgBox e os valores retomados são: o valor da variável lngRetVal do código acima retorna 42 no win32-bit e 31 no win64-bit.

    Obrigado
    Marcelo David
    Marcelo David
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 2988
    Registrado : 21/04/2011

    [Resolvido]Impressão de vários PDFs sem os visualizar Empty Re: [Resolvido]Impressão de vários PDFs sem os visualizar

    Mensagem  Marcelo David em 13/12/2019, 13:27

    Poderia postar o app para darmos uma olhada aqui?


    .................................................................................
    Marcelo David
    www.mrdsystem.com.br (em construção)
    avatar
    zcarloslopes
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 230
    Registrado : 28/10/2010

    [Resolvido]Impressão de vários PDFs sem os visualizar Empty Re: [Resolvido]Impressão de vários PDFs sem os visualizar

    Mensagem  zcarloslopes em 19/12/2019, 15:35

    Boa noite,

    Deixo aqui um exemplo para facilitar a ajuda.

    Obrigado
    Anexos
    [Resolvido]Impressão de vários PDFs sem os visualizar AttachmentPDFsTeste.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (25 Kb) Baixado 6 vez(es)
    avatar
    zcarloslopes
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 230
    Registrado : 28/10/2010

    [Resolvido]Impressão de vários PDFs sem os visualizar Empty Re: [Resolvido]Impressão de vários PDFs sem os visualizar

    Mensagem  zcarloslopes em 3/1/2020, 08:47

    Bom dia a todos,

    Na ausência de melhor opção resolvi o problema da seguinte forma:

    Ao invés de imprimir todos os PDFs, converto-os num PDF só, abro o PDF combinado e imprimo.

    Como fiz isso?

    Uso a DLL do Sr. Stephen Lebans "StrStorage.DLL" que também tem a função "MergePDF", e o respetivo Módulo com as funções "MergePDFDocuments" e "ConvertReportToPDF". [url=lebans.com/reporttopdf.htm]lebans.com/reporttopdf.htm[/url]

    Começo por colocar todos os meus PDFs com a respectiva Path numa Array (Excepto o PDF Mestre onde irão ser combinados os restantes), para o exemplo chamo-lhe ArrayPDFs, e de seguida combino os PDFs com o seguinte código:
    Código:
    Dim vItem As Variant
    Dim blRet As Boolean
    Dim sMaster As String
    Dim sChild As String
    Dim Mestre As String

    Mestre = "C:\Temp\PDF_Mestre_Exemplo.PDF"

    For Each vItem In ArrayPDFs

          sMaster = Mestre
          sChild = CStr(vItem)
          blRet = MergePDFDocuments(sMaster, sChild)
          sSleep (1000)

    Next vItem
    Abro o PDF Mestre agora já combinado:
    Código:
    Application.FollowHyperlink Mestre
    E de seguida imprimo o PDF.

    Esta solução já havia sido por mim tentada antes de colocar a minha dúvida no forum, mas deparei-me com um pequeno problema.., esta solução funciona apenas no WIN32 Bit, e/ou A2003.
    No WIN64 Bit com A2007 dá um erro que não encontra a DLL "StrStorage.DLL".

    Enquanto esperava por uma milagrosa solução aqui no forum continuei a tentar encontrar uma solução para este problema que finalmente encontrei, e vou aqui partilhar com vocês.

    Não sei por que razão, mas no WIN32-Bit e/ou A2007 a referida DLL tem que ser primeiro chamada para criar um PDF antes de ser usada para combinar PDFs.

    Para tal, antes de chamar a DLL para combinar os PDFs, crio um PDF temporário de um relatório criado apenas para esse efeito:
    Código:
    blRet = ConvertReportToPDF("rpt_Ghost", vbNullString, "C:\Temp\rpt_Ghost.pdf", False, False, 150, "", "", 0, 0, 0)
    sSleep (1000)

    Reconheço que o processo em si não está nada apelativo..., mas funciona na perfeição..

    Obrigado

    Conteúdo patrocinado

    [Resolvido]Impressão de vários PDFs sem os visualizar Empty Re: [Resolvido]Impressão de vários PDFs sem os visualizar

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 27/2/2020, 17:53