Condividi tramite

Da PDf ad Excel

Anonimo
2017-02-06T10:32:58+00:00

Buongiorno a tutti, ho utilizzato il codice sottoriportato (trovato nello storico delle discussioni), dell'amico Norman, che mi permette di incollare il testo da un pdf ed incollarlo in un foglio di Excel.

Ho il problema che il codice si basa solo su di un file Pdf di una sola pagina.

Desidero poterlo utilizzare su di un file PDF di 80 pagine che hanno tutte la stessa formattazione.

Chiedo se sia possibile pure, poter scegliere (dopo aver selezionato il file pdf) su quale foglio incollare i dati dato che successivamente devo confrontare due fogli ed evidenziare in un terzo foglio i dati diversi tra i 2 fogli confrontati. 

Spero di essere stato chiaro e comprensibile.

Option Explicit

 '--------->>

 Private Declare Function FindExecutable _

     Lib "shell32.dll" Alias "FindExecutableA" ( _

     ByVal lpFile As String, ByVal lpDirectory As String, _

     ByVal lpResult As String) As Long

 '--------->>

 Public Sub SelezionaPdf()

     Dim wk As Workbook

     Dim sh As Worksheet

     Dim PageName As Variant, PageName2 As String

     Dim Cartella As String

     Const CR As String = "Foglio1"

     Const istruz As String = "Foglio2"

     Sheets("Foglio1").Select

     Cartella = ActiveWorkbook.Name

     Set wk = ThisWorkbook

     Set sh = wk.Worksheets(CR)

     PageName = Application _

                .GetOpenFilename("Text Files (*.pdf), *.pdf")

     If PageName <> False Then

         MsgBox "Open " & PageName

     End If

     If PageName = "False" Then

         Exit Sub

     End If

     Sheets(istruz).Range("I1").Value = PageName

     Sheets(CR).Select

     Sheets(CR).Range("A:K").ClearContents

     Range("A1").Select

   ' Salva in questo percorso il file PDf Acquisito

     PageName2 = "C:\Users\xxxxxx\Desktop\mio.pdf"

     FileCopy PageName, PageName2

     Call OpenPDF(PageName2)

     Application.Wait (Now + TimeValue("0:00:04"))

     SendKeys "^a", True

     Application.Wait (Now + TimeValue("0:00:02"))

     SendKeys "^c", True

     Application.Wait (Now + TimeValue("0:00:05"))

     SendKeys ("%fx")

      AppActivate "Excel"

     'AppActivate "Microsoft Excel"

     wk.Activate

     sh.Activate

     MsgBox "Premi Ok per incollare"

'\ Nuova istruzione

  DoEvents

     SendKeys ("^v")

'\ Nuova istruzione

    DoEvents

     Sheets(istruz).Select

     Range("A1").Select

     'Set a Nothing delle variabili oggetto

     Set sh = Nothing

     Set wk = Nothing

 End Sub

'--------->>

 Sub OpenPDF(filename As String)

     Dim ExeName As String

     Dim N As Long

         ExeName = String(260, 0)

     N = FindExecutable(filename, vbNullString, ExeName)

     ExeName = Left(ExeName, InStr(1, ExeName, vbNullChar) - 1)

     Shell ExeName & " " & Chr(34) & filename & Chr(34), vbNormalFocus

 End Sub

Ciao Nicola.

Microsoft 365 e Office | Excel | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

20 risposte

Ordina per: Più utili
  1. Anonimo
    2017-02-07T11:02:07+00:00

    Ciao Norman, buongiorno, ti ho preparato un file con dati non sensibili e che rispecchiano il mio scenario, spero possa esserti utile per aiutarmi a risolvere la problematica, ne ho bisogno per il mio lavoro quotidiano.

    Il link è il seguente: https://1drv.ms/b/s!Ali6qqOH3dOAg1rGahFraHmoAqdI

    Come puoi notare dall'immagine che allego, il tuo codice mi evidenzia e copia in Excel solo i dati della pagina 1  e non i dati delle altre.

    Grazie ancora per il tuo interessamento e aiuto.

    Ciao Nicola.

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2017-02-06T13:42:43+00:00

    Ciao Norman, penso che il tuo codice funzioni alla grande ma non capisco come mai incolli solo i dati del primo foglio del file PDF.

    Questo è lo screenshot  di quello che mi incolla nel Foglio di Excel ( l'ho diviso in due per la dimensione).

    Ho usato gli stessi nominativi ricostruendo lo scenario originale omettendo i dati sensibili.

    Quando ti dico che mi copia solo il primo foglio significa che questi altri non me li evidenzia e copia nel file di Excel come mai?.Ti allego pagina 1 e 2 dello stesso File PDF (nella realtà ne ho 80 nel File Pdf unico) ma come ti dicevo solo i dati della pagina 1 si incollano in Excel (vedi il numero di pagine in giallo).

    Ciao Norman, chiedimi pure altro se ne hai bisogno.

    P.S. Norman penso che ti sia utile questa informazione, ho notato però che nel file unico PDF il numero di pagine non è continuo  e pogressivo cioè a 1 ad 80, bensì ripete più volte Pag.1 - Pag.2  Pag.3  Pag.4 e ricomincia con Pag.1 Pag.2 Pag.3, cioè il numero di pagine dei singoli file PDF che ho inserito nel File unico.

    Spero di essere stato chiaro.

    Ciao Nicola.

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2017-02-06T13:08:52+00:00

    Ciao Nicola,

    il mio scenario è questo:

    1. con un programma creo da tanti fogli Pdf un file unico PDF che hanno tutti la stessa struttura ed intestazioni di colonna come da immagine allegata ecco perché poi il file PDF finale si compone di tante pagine.

    I dati che desidero vengano copiati in Excel sono sempre quelli delle prime 3 colonne: GR. - COGNOME E NOME E MATRIC. MECC.

    Se il singolo file pdf sia stato creato da più file PDF, e ogni pagina del nuovo file pdf corrisponde ad un unico file pdf costituente, perché non usare il mio codice per importare i singoli file pdf di interesse in diversi fogli di lavoro ?

    Se questo approccio non sia fattible per qualche motivo, ti chiederei gentilmente di postare uno screenshot delle prime 4 righe del foglio ottenuto dalla importazione del file pdf di più pagine

    ===

    Regards,

    Norman

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2017-02-06T12:14:23+00:00

    Ciao Norman, il mio scenario è questo:

    1. con un programma creo da tanti fogli Pdf un file unico PDF che hanno tutti la stessa struttura ed intestazioni di colonna come da immagine allegata ecco perché poi il file PDF finale si compone di tante pagine.

    I dati che desidero vengano copiati in Excel sono sempre quelli delle prime 3 colonne: GR. - COGNOME E NOME E MATRIC. MECC.

    Spero di essere stato chiaro.

    Ciao Nicola.

    La risposta è stata utile?

    0 commenti Nessun commento
  5. Anonimo
    2017-02-06T11:54:20+00:00

    Ciao Nicola,

    Ho il problema che il codice si basa solo su di un file Pdf di una sola pagina.

    Ma, che sei grullo? :-))

    A me, riesco a copiare anche un file pdf di molti pagine in Excel.

    Se, però, la tua intenzione fosse di copiare uno o più determinate pagine di un file PDF di più pagine, per quanto ne so io, questo non è possibile con Excel.

    Detto questo, forse si potrebbe sfruttare il fatto che tutte le pagine del file pdf hanno la stessa formattazione per separare e copiare le volute pagine a diversi fogli Excel. Quindi, al questo riguardo,  ti chiederei gentilmente di indicare se ci siano delle intestazioni per ogni pagine o altro modo per individuare le pagine interessate.

    ===

    Regards,

    Norman

    La risposta è stata utile?

    0 commenti Nessun commento