Compilazione modulo PDF da VBA

di il
13 risposte

Compilazione modulo PDF da VBA

Ciao a tutti, vorrei condividere una libreria (ITEXTSHARP) utilizzabile da VBA per la compilazione di un modulo PDF.
Detto altrimenti, con il codice seguente, è possibile inserire dati in un file PDF (modulo PDF), SENZA utilizzare riferimenti alla libreria di ACROBAT, che presuppone l'installazione di ACROBAT.

Elementi di base:
Installazione della libreria richiamabile da VBA


Modulo PDF da compilare:

Il modulo va collocato in C:\pippo


Codice VBA per compilare il campo denominato codicefiscale:

Dim StrPDFWorker As String
Dim OObj As Object

Dim StrPathModello As String
Dim StrNomeModello As String
Dim StrFileModello As String

Dim StrPathDestinazione As String
Dim StrNomePDF As String
Dim StrFilePDF As String

Dim StrIDCampo As String
Dim StrIDCampoNew As String
Dim StrContenuto As String


' *** Assegnazione variabili ***
' ******************************
' Oggetto per scrivere nei moduli PDF
StrPDFWorker = "C:\pippo\PDFWorker.msi"
Set OObj = CreateObject("PDFWorker.PDFWorker")
' PATH MODELLO PDF
StrPathModello = "C:\pippo\"
StrNomeModello = "ModelloLIPE18.pdf"
StrFileModello = StrPathModello & StrNomeModello
' PATH del file da generare
StrPathDestinazione = "C:\pippo\"
StrNomePDF = "StampaLIPE.pdf"
StrFilePDF = StrPathDestinazione & StrNomePDF


' Apri il file PDF modello
OObj.PDFListClear
OObj.PDFListAddFile (StrFileModello)

' Pulisci i campi
OObj.PDFFieldsClear

' Codice fiscale in pagina 1
StrIDCampo = "codicefiscale"
StrIDCampoNew = StrIDCampo & "_OK"
StrContenuto = "CPRMRK72C24G478E"
Call OObj.PDFFieldsAdd(StrIDCampo, StrContenuto, StrIDCampoNew)


Crea il file PDF ed aprilo
Creafile:
OObj.SetFieldValuesAndMergeFiles (StrFilePDF)
Set OObj = Nothing
Ret = Shell("rundll32.exe url.dll,FileProtocolHandler " & StrFilePDF, vbMaximizedFocus)

13 Risposte

  • Re: Compilazione modulo PDF da VBA

    Prima di fare esperimenti di ore ... Se ho capito bene funziona SOLO su PDF MODULI... Giusto?
    Qundi non funzionerebbe se volesse aggiungere del testo in un PDF già esistente naturalmente non un modulo
    Grazie
  • Re: Compilazione modulo PDF da VBA

    Con Acrobat, o software analogo (es: nitropdf), puoi creare un modulo PDF, con i campi che vuoi.
    Per esempio, crei un modulo con un campo chiamato "nome".

    Con:
    Call OObj.PDFFieldsAdd("nome","Mauro", "nome_OK")
    Inserisci "Mauro" nel campo nome
  • Re: Compilazione modulo PDF da VBA

    Dovrebbe funzionare con QUALUNQUE modulo PDF. Ovviamente, devi conoscere i nomi dei campi in cui scrivere.
  • Re: Compilazione modulo PDF da VBA

    Dimenticavo...

    E' necessario installare: Microsoft .NET Framework 3.5

    https://www.microsoft.com/it-it/download/details.aspx?id=21
  • Re: Compilazione modulo PDF da VBA

    Buongiorno Mirko, ho provato a testare il tuo codice ma c'è qualcosa che sbaglio

    ho fatto i seguenti passaggi:
    1 ho creato un data base di test Access
    2 ho creato la tabella pippo in c: dove ho inserito sia il PDFWorker che il modulo
    3 ho creato un pulsante con il tuo codice che non ho modificato

    al clik del pulsante mi dà un errore di Debug : "Errore di run-time '429': Il componente ActiveX non è in grado di creare l' oggetto"
    Nel DEBUG mi evidenzia il seguente codice:
    Set OObj = CreateObject("PDFWorker.PDFWorker")
    ho installato ed inserito nella libreria PDFWorker tramite i riferimenti del VBA
    ho provato ad installare il FRAMEWORK 3.5 ma non lo installa credo perchè ho il 4.5
    ma non funziona
    sicuramente mi sono perso qualche passaggio

    Dove sbaglio?
  • Re: Compilazione modulo PDF da VBA

    Allora... questo è il PUNTO DEBOLE.

    Non sempre, Access riesce a "vedere" questa libreria.
    Di solito, basta installare NET FRAMEWORK 3.5 (anche se è presente il 4.5), e riavviare la macchina.

    Colgo l'occasione per chiedere a qualche "volenteroso" di approfondire. Se venisse migliorata la compatibilità, sarebbe una gran bella cosa!


    L'utilizzo di questa libreria, infatti, è MOLTO semplice. Inoltre, non presuppone l'installazione di software a pagamento (ACROBAT).
    Il problema è farla riconoscere ad Access.
  • Re: Compilazione modulo PDF da VBA

    Se hai W10, prova ad abilitare net framework 3.5 dal pannello di controllo:

    https://docs.microsoft.com/it-it/dotnet/framework/install/dotnet-35-windows-10
  • Re: Compilazione modulo PDF da VBA

    Https://www.chimerarevo.com/guide/windows/net-framework-3-5-windows-10-245044/
  • Re: Compilazione modulo PDF da VBA

    Io ho w7 ma non me lo fa installare lo stesso
    provo a leggere gli ariticoli che hai postato e ti dico
  • Re: Compilazione modulo PDF da VBA

    Ciao Mirko

    ho testato il tuo codice anche dopo aver installato il framework 3.5
    ma mi dà lo stesso errore
    Debug : "Errore di run-time '429': Il componente ActiveX non è in grado di creare l' oggetto"
    Nel DEBUG mi evidenzia il seguente codice:
    Set OObj = CreateObject("PDFWorker.PDFWorker")
    ho chiaramente creato la cartella pippo su C: ma niente
    ho anche inserito la libreria nei riferimenti di access
    dove sbaglio?
  • Re: Compilazione modulo PDF da VBA

    Probabilmente sbaglio l installazione delle libreria richiamabile

    quindi ho scaricato pdfworker
    ho eseguito il programma
    sono andato su strumenti/riferimenti ho cliccato su sfoglia sono andato sulla cartella di pdworker chè è
    C:\Program Files (x86)\Strings Software\PDFWorker
    ho selezionato il file pdfworker con estensione tbl

    ho sbagliato qualce passaggio?
    PS Framework 3.5 è installato
  • Re: Compilazione modulo PDF da VBA

    In teoria, tutto corretto.

    Il problema dei questa libreria è proprio questo. In alcuni PC, mi hanno già segnalato, che non riescono a farla riconoscere.
  • Re: Compilazione modulo PDF da VBA

    Nessuno capisce come far riconoscere questa libreria ad access?
Devi accedere o registrarti per scrivere nel forum
13 risposte