Condividi:        

Supporto per Macro Query import pdf to excel

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

Supporto per Macro Query import pdf to excel

Postdi JanVathek » 04/12/23 15:49

Buongiorno

ho un file pdf, è un report di lavoro, che è praticamente sempre uguale come formato e vorrei esportalo in excel per gestirlo meglio.( ogni giorno ho 3 report che vorrei gestire cosi)
Da questo file si potrebbe esportare le tabelle 006/07/08/09 ( o pagina 2-3-4-5-6-8) in unico foglio excel, accondando le varie tabelle? le 4 tabelle saranno da mergiare in un unico foglio.

la struttura dati della tabella dei pdf è composta di 17 colonne ( dove ho un paio di descrizioni , codici e numeri)

In colonna 18 vorrei accordarci un cercaX con un altro foglio "origine dati" in base a quanto presente in colonna 10 del foglio ( o J), in questa colonna è presente ordine di lavoro.

Il foglio, origine dati" per la ricerca presenta i dati al contrario, l'elemento che ricerco è a SX del risultato( elemento di ricerca è in colonna 7) il risultato è in colonna 4

Codice: Seleziona tutto
prova|data|data|nome abbreviato|nome completo|sequenza|Numero ord lavoro|
1|04/12|04/|12|Mario|mario Rossi|1| 111215|


io cerco per ordine di lavoro es 111215, e restiisco il nome abbreviato--> Mario

purtroppo per privacy non posso condividere esempio di pdf, ma posso preparare una tabella fac simile

grazie grazie molte per chi mi supporterà 8)
---------------------
uso excel pro LTSC plus 2021
JanVathek
Newbie
 
Post: 6
Iscritto il: 04/12/23 15:24

Sponsor
 

Re: Supporto per Macro Query import pdf to excel

Postdi Anthony47 » 05/12/23 00:44

Avendo tu Office 2021 dovresti avere gia' la possibilità di importare da Pdf, tramite
-menu /tab Dati; gruppo Recupera e trasforma, comando Recupera dati /da file /da Pdf
-qui dovrai scegliere il nome del file; ti sarà poi mostrata la struttura tabellare e potrai scegliere cosa importare; infine il tasto Carica(**) ti importerà la tabella (o le tabelle) prescelta IN UN NUOVO FOGLIO

Con un po' di pazienza si possono registrare macro mentre si svolge l'operazione per una tabella e con altrettanta pazienza si puo' modificare il codice affinche' (a) il nome file possa essere scelto al momento e (b), "se necessario" fare in modo che le tabelle vengano importate in un foglio predeterminato. Ma per questo dovremo lavorare su un file pdf dimostrativo che dovresti condividere

Nota**
Invece di Carica si puo' usare il tasto Trasforma dati, che consente di manipolare i dati tramite Power Query e organizzarli diversamente. Ma io non conosco Power Query quindi non ti saprei guidare oltre
Avatar utente
Anthony47
Moderatore
 
Post: 19228
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Supporto per Macro Query import pdf to excel

Postdi JanVathek » 05/12/23 15:34

Anthony47 ha scritto:Avendo tu Office 2021 dovresti avere gia' la possibilità di importare da Pdf, tramite
-menu /tab Dati; gruppo Recupera e trasforma, comando Recupera dati /da file /da Pdf
-qui dovrai scegliere il nome del file; ti sarà poi mostrata la struttura tabellare e potrai scegliere cosa importare; infine il tasto Carica(**) ti importerà la tabella (o le tabelle) prescelta IN UN NUOVO FOGLIO

Con un po' di pazienza si possono registrare macro mentre si svolge l'operazione per una tabella e con altrettanta pazienza si puo' modificare il codice affinche' (a) il nome file possa essere scelto al momento e (b), "se necessario" fare in modo che le tabelle vengano importate in un foglio predeterminato. Ma per questo dovremo lavorare su un file pdf dimostrativo che dovresti condividere

Nota**
Invece di Carica si puo' usare il tasto Trasforma dati, che consente di manipolare i dati tramite Power Query e organizzarli diversamente. Ma io non conosco Power Query quindi non ti saprei guidare oltre


Ciao si esatto ti importa cosi le tabelle come query e me le trovo come 4 fogli excel. ti invio un campione di pdf modello, posso inviartelo privatamente per un discorso di privacy?

Vorrei con le macro automatizzare questo processo, dare in pasto il pdf e trovarmi excel gia pronto per uso e fare le analisi
JanVathek
Newbie
 
Post: 6
Iscritto il: 04/12/23 15:24

Re: Supporto per Macro Query import pdf to excel

Postdi Anthony47 » 05/12/23 17:14

Non riesci a preparare e pubblicare un pdf dimostrativo, così chiunque sarà in grado di seguire la discussione?
Per le istruzioni su come allegare un file:
http://www.pc-facile.com/forum/viewtopi ... 87#p605487
Avatar utente
Anthony47
Moderatore
 
Post: 19228
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Supporto per Macro Query import pdf to excel

Postdi JanVathek » 05/12/23 18:24

un esempio l'ho caricato qua

https://we.tl/t-Iw5XGzsmK0 considera che ci sono 7 pagine del pdf cosi
JanVathek
Newbie
 
Post: 6
Iscritto il: 04/12/23 15:24

Re: Supporto per Macro Query import pdf to excel

Postdi Anthony47 » 06/12/23 11:05

Tu hai provato, sul file che hai condiviso, la procedura di RecuperaDati /daFile /daPDF? Perche' a me quel file restituisce una pagina vuota.
Quindi se i tuoi file sono come quello condiviso, mi spiace ma la strada offerta da Excel non è percorribile.

Altra opzione sarebbe RecuperaDati /daAltreOrigini /daImmagine; ma il file pubblicato ha una formattazione inadeguata per essere letta "da immagine" (ad esempio dopo screenshot)

So che ci sono prodotti commerciali, non sempre gratuiti, che hanno proprio l'obiettivo di importare pdf su excel; potresti valutare questi strumenti, sotto forma di add-in per excel, o convertitori stand alone.

Se invece i file reali hanno una struttura diversa...

PS: hai un mp non ancora letto
Avatar utente
Anthony47
Moderatore
 
Post: 19228
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Supporto per Macro Query import pdf to excel

Postdi JanVathek » 06/12/23 16:14

Ciao
si avevo verificato, prova con questa versione, ti ho fatto anche la foto di cosa vedo io su excel ( post powerquery)

https://we.tl/t-HAHNkE1a4C

Io ho preso i dati reali, li ho messi su word modificandoli e l'ho salvato in pdf, e poi ho testato con importa decuperaDati /daFile /daPDFi
JanVathek
Newbie
 
Post: 6
Iscritto il: 04/12/23 15:24

Re: Supporto per Macro Query import pdf to excel

Postdi JanVathek » 06/12/23 18:03

per quanto riguarda add in di es Acrobat, può essere interessante ma serve sempre una macro dopo per aggregare tutto in un unico foglio, volevo provare ad eliminare un passaggio
JanVathek
Newbie
 
Post: 6
Iscritto il: 04/12/23 15:24

Re: Supporto per Macro Query import pdf to excel

Postdi Anthony47 » 07/12/23 21:19

Sto lavorando sui file ricevuti, piu' lentamente di quanto pensavo perche' le query di cui parliamo sono da fare nel linguaggio PowerQuery che io non padroneggio. Porta pazienza, magari qualcosa uscirà fuori lo stesso...
Avatar utente
Anthony47
Moderatore
 
Post: 19228
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Supporto per Macro Query import pdf to excel

Postdi Anthony47 » 11/12/23 18:53

Dopo molte prove ho concluso che importare tabelle sulla base del loro indice rischia di essere inaffidabile, perche' sui documenti l'indice comprende anche la pagina, e non ho individuato un criterio in grado di leggere questa informazioni da vba.
Propongo quindi una ipotesi alternativa, che importa le "pagine", anzi (in questa versione) le pagine selezionate.
Il codice complessivo:
Codice: Seleziona tutto
Sub PdfPages()
Dim myPdf As String, pArr, RndPre As String
Dim DeSh As Worksheet, ErrMess As String
'
'Scelta del file
With Application.FileDialog(msoFileDialogFilePicker)
            .Title = "Scegli il File da importare"
            .InitialFileName = "C:\prova\"                   '<<< La directory di partenza
            .AllowMultiSelect = False
            .Filters.Clear
            .Filters.Add "Pdf files", "*.pdf"
   .Show
    If .SelectedItems.Count = 0 Then
        MsgBox ("Nessuna voce selezionata, processo abortito")
        Exit Sub
    End If
    myPdf = .SelectedItems.Item(1)
End With
'
pArr = Array("Page001", "Page003", "Page005")               '<<< Le Pagine da importare
'
RndPre = Format(Now, "MMSS_")
Debug.Print RndPre & ">>>", myPdf, "Items: " & (UBound(pArr) + 1)
'
'Kill query in conflitto:
For I = ActiveWorkbook.Queries.Count To 1 Step -1
    If IsError(Application.Match(ActiveWorkbook.Queries(I).Name, pArr, False)) Then
        Debug.Print "Keep: " & ActiveWorkbook.Queries(I).Name, I
    Else
        Debug.Print "Killed--: " & ActiveWorkbook.Queries(I).Name, I
        ActiveWorkbook.Queries(I).Delete
    End If
Next I
'
'Crea ed esegui le query:
For I = 0 To UBound(pArr)
    ActiveWorkbook.Queries.Add Name:=pArr(I), Formula:= _
        "let" & Chr(13) & "" & Chr(10) & "    Origine = Pdf.Tables(File.Contents(" & Chr(34) & myPdf & Chr(34) & "), [Implementation=""1.3""])," & Chr(13) & "" & Chr(10) & "    Page1 = Origine{[Id=" & Chr(34) & pArr(I) & Chr(34) & "]}[Data]," & Chr(13) & "" & Chr(10) & "    #""Modificato tipo"" = Table.TransformColumnTypes(Page1,{{""Column1"", type text}, {""Column2"", type text}, {""Column3"", type text}, {""Column4"", type text}, {""Column5"", type text" & _
        "}, {""Column6"", type text}})" & Chr(13) & "" & Chr(10) & "in" & Chr(13) & "" & Chr(10) & "    #""Modificato tipo"""
    ActiveWorkbook.Worksheets.Add
    ActiveSheet.Name = RndPre & pArr(I)
    With ActiveSheet.ListObjects.Add(SourceType:=0, Source:= _
        "OLEDB;Provider=Microsoft.Mashup.OleDb.1;Data Source=$Workbook$;Location=" & pArr(I) & ";Extended Properties=""""" _
        , Destination:=Range("$A$1")).QueryTable
        .CommandType = xlCmdSql
        .CommandText = Array("SELECT * FROM [" & pArr(I) & "]")
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .PreserveColumnInfo = True
''        .ListObject.DisplayName = "Page003"
        On Error Resume Next
            .Refresh BackgroundQuery:=False
            If Err.Number <> 0 Then
                Debug.Print "ERR# " & Err.Number, "su TAB " & pArr(I)
                ErrMess = ErrMess & vbCrLf & "ERR# " & Err.Number & "     su TAB " & pArr(I)
                Err.Clear
            End If
        On Error GoTo 0
    End With
Next I
Set DeSh = Sheets.Add(after:=Sheets(Sheets.Count))
'Copia tutto su unico foglio
For I = 0 To UBound(pArr)
    Sheets(RndPre & pArr(I)).Select
    ActiveSheet.ListObjects(1).Range.Copy _
       Destination:=DeSh.Cells(Rows.Count, "A").End(xlUp).Offset(2, 0)
    DeSh.ListObjects(I + 1).Name = "TB_" & pArr(I)
    Application.DisplayAlerts = False
        Sheets(RndPre & pArr(I)).Delete
    Application.DisplayAlerts = True
Next I
DeSh.UsedRange.EntireColumn.AutoFit
DeSh.Select
MsgBox ("Completato... " & ErrMess)
End Sub

Va messo in un Modulo standard del progetto vba del tuo file; due righe sono marcate <<<, e vanno personalizzate come da commento.
In particolare in pArr vanno indicate quali pagine vanno importate; puoi verificare la loro denominazione usando manualmente la procedura Menu /Dati /RecuperaDati /daFile /daPDF su uno dei tuoi file. Nelle mie prove ho visto che vengono dichiarate come Page001, Page002, etc.

Lanciando la Sub PdfPages verrà chiesto di scegliere il file da importare; poi la procedura continua secondo questo flusso:
a) viene creato un foglio temporaneo, su questo file viene importata la prima pagina dichiarata da importare
b) lo step a viene ripetuto per ogni altra pagina dichiarata
c) infine viene creato un nuovo foglio di riepilogo e il contenuto delle singole pagine viene riportato in questo nuovo foglio e i fogli temporanei vengono eliminati.
Un messaggio informa del completamento delle operazioni, comprese eventuali pagine in errore che non sono quindi state importate.
Il foglio di riepilogo rimane attivo alla fine di questo processo

Ora puoi creare formule che attingono a questi dati per creare un tuo riassunto

La prima probabile evoluzione del codice, se produce dati di tua utilità, dovrebbe essere creare il riepilogo (step c) su un foglio già esistente, previa cancellazione del contenuto precedente, in modo che non debba modificare le formule che creano il tuo riassunto per adattarle al nome foglio.
Al momento, non conoscendo il tuo processo né sapendo se quanto prodotto ha una utilità pratica, ho preferito usare il foglio nuovo, ma evolvere per usare un foglio esistente vuol dire modificare un paio di istruzioni

Se hai avuto la pazienza di aspettare prova e fai sapere...
Avatar utente
Anthony47
Moderatore
 
Post: 19228
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Supporto per Macro Query import pdf to excel

Postdi JanVathek » 13/12/23 23:19

fammelo testare con calma e ti do feedback,Grazie molte per il supporto
JanVathek
Newbie
 
Post: 6
Iscritto il: 04/12/23 15:24


Torna a Applicazioni Office Windows


Topic correlati a "Supporto per Macro Query import pdf to excel":


Chi c’è in linea

Visitano il forum: Nessuno e 36 ospiti