Conversione da PDF ad Excel: esportare il testo in base alla posizione sul foglio ed importarlo in Excel con un programma in VBA
Mi sono trovato nella situazione di dover caricare in un database, dati presenti in file PDF sotto forma di tabelle. Cercando in rete si trovano abbastanza facilmente strumenti che convertono da PDF ad Excel, il problema è che, fino a quando una riga di dati corrisponde ad un record, la conversione va a buon fine. Ma se, come nel mio caso, nel record ci sono valori nei campi che vanno a capo, allora in questi casi la conversione da PDF a Excel sballa a tal punto da non permettere la successiva importazione nel database.
Come rimediare? Per fortuna Internet è una fonte inesauribile di risorse. Provando parecchi convertitori gratuiti e open source, alla fine ho trovato A-PDF Text Extractor, un tool freeware, che non ha bisogno di librerie particolari, compresa la presenza di Adobe Acrobat, e che permette diverse possibilità di estrazione:
- In PDF Order: estrae il testo seguendo l'ordine presente nel PDF
- Smart Rearrange: posizionando il testo in base alla posizione nel foglio
- With Position: opzione che consente di avere in output il seguente formato @X=<xpos>,Y=<ypos>@<text>@ENDTEXT@ (l'unità di misura di X,Y è il point che equivale a 1/72 inch)
Proprio utilizzando l'opzione "With Position" è possibile ovviare al problema dei campi che vanno a capo, ma per farlo è necessario seguire alcuni passaggi ed utilizzare un piccolo programmino ad hoc, scritto in VBA, che ho scritto appositamente per fare fronte a questa problematica.
Ecco la procedura da seguire per convertire il tuo file da PDF a Excel:
- prima di tutto scarica ed apri il programma A-PDF Text Extractor
- clicca sul tasto "Option" e seleziona in "Extract Type" l'opzione "With Position" (non toccare le atre opzioni e assicurati che i campi "Header" e "Footer" siano vuoti)
- clicca su "Open" e scegli il file PDF che vuoi convertire in testo
- premi su "Extract text" e dalla finestra che si apre, scegli la cartella in cui salvare il file che verrà creato
Conclusa la procedura, nella directory che avrai indicato, troverai il file contenente il testo del PDF convertito, quello con estensione ".txt", che una volta aperto apparirà più o meno così:
@X=125,25,Y=10,32@CAMPO-1 - Testo di prova@ENDTEXT@
@X=133,85,Y=10,32@CAMPO-2 - questo è un testo@ENDTEXT@
@X=154,74,Y=10,32@CAMPO-3 - utilizzato come prova@ENDTEXT@
X ed Y sono le coordinate che identificano il testo nel foglio. In base a queste coordinate, attraverso la programmazione, è possibile definire quali sono i campi e dove deve essere collocato il testo nella tabella Excel.
Prima di farlo però è necessario importare il file di testo nel foglio di lavoro, quindi:
- apri un nuovo foglio di lavoro Excel
- clicca sul tab "Dati" e poi su "Carica dati esterni - Da testo"
- nella finestra che si apre seleziona il file ".txt" che avevi ottenuto in precedenza
- nella nuova finestra clicca su "Delimitato" e poi su "Avanti"
- su "Delimitatori" deseleziona "Tabulazione" e seleziona "Altro" e nella casella accanto aggiungi una "@"
- clicca su "Fine" e nella nuova finestra su "Ok"
Se tutto è andato per il verso giusto dovresti avere i dati posizionati perfettamente nelle colonne del foglio: nella colonna B avrai le coordinate, nella C il testo dei campi e nella D il testo ENDTEXT.
A questo punto dovrai creare una macro che attraverso un ciclo Do Loop andrà a leggere i valori delle coordinate ed in base a questi, utilizzando un Select Case, andrà a copiare i valori nei campi giusti nel foglio "TABELLA" che avrai creato per memorizzare i dati.
Per facilitarti la vita, ho preparato un esempio da cui puoi partire:
- scarica il file "Convertire_da_PDF_ad_EXCEL.xlsm"
- aprilo ed attiva l'esecuzione delle Macro
- nel foglio "Testo" ci sono dei dati di prova, clicca sul tasto "CREA TABELLA"
- il testo presente viene copiato nelle celle giuste presenti nel foglio "TABELLA"
Dando un'occhiata al codice capirai come funziona e potrai adattarlo al tuo caso specifico.
Spero di esserti stato utile: sarebbe gradito un Mi Piace o +1, in questo modo contribuirai inoltre a divulgare informazioni interessanti.