MaximoAccess

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

Obrigado

Administração do MaximoAccess

MaximoAccess

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

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 : 353
    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, 10: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, 11:49, editado 1 vez(es)
    Marcelo David
    Marcelo David
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3206
    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, 11: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 | [Resolvido]Impressão de vários PDFs sem os visualizar LinkedIn_Icon.jpg.original LinkedIn
    https://www.freetool.dev
    avatar
    zcarloslopes
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 353
    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, 14: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 : 3206
    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, 15:20

    Que erro ocorre?


    .................................................................................
    Marcelo David | [Resolvido]Impressão de vários PDFs sem os visualizar LinkedIn_Icon.jpg.original LinkedIn
    https://www.freetool.dev
    avatar
    zcarloslopes
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 353
    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, 10: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 : 3206
    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, 16:27

    Poderia postar o app para darmos uma olhada aqui?


    .................................................................................
    Marcelo David | [Resolvido]Impressão de vários PDFs sem os visualizar LinkedIn_Icon.jpg.original LinkedIn
    https://www.freetool.dev
    avatar
    zcarloslopes
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 353
    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, 18: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 9 vez(es)
    avatar
    zcarloslopes
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 353
    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, 11: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

      Data/hora atual: 25/11/2020, 02:30