Convertire un file da pdf in Excel

Anonimo
2015-10-12T02:00:19+00:00

Dividi da questo thread.

Ciao Mauro

 ho utilizzato il codice , da te proposto, per la conversione diretta da file pdf in excel ed ho riscontrato due problemi nell'output . Il primo ruguarda la conversione di più file, inserita in unica cartella , contemporaneamente . Putroppo nel mio caso  la routine si blocca  alla conversione del primo pdf; nello specifico  genera tanti file in excel  corrispondenti al numero di   file pdf  (nominati allo stesso modo ) collocati nella cartella di riferimento  di contenuto sempre uguale al primo file pdf scansionato dal programma presente nel codice.

Il secondo problema riguarda il programma di conversione  utilizzato , in particolare tabelle numeriche in formato pdf che presentano spazi/ celle vuote,  si perdono nella conversione in excel.

Preciso che ho modificato la path , adeguando il percorso al mio reader 9.0.

Spero si possano fare delle modifiche al codice per superare almeno il primo problema.

grazie

Public Sub mPdfToXlsx()

    Dim objFSO As Object

    Dim objFolder As Object

    Dim objFile As Object

    Dim myReturn As Double

    Dim sPath As String

    Dim sh As Worksheet

    Dim shNew As Worksheet

    Dim lRiga As Long

    Dim lCol As Long

    Dim lng As Long

    Dim lUltRiga As Long

    Dim wk As Workbook

    sPath = ThisWorkbook.Path & ""

    Set objFSO = CreateObject( _

        "Scripting.FileSystemObject")

    Set objFolder = _

        objFSO.GetFolder(sPath)

    Application.ScreenUpdating = False

    For Each objFile In objFolder.Files

        If LCase(Right(objFile.Name, 3)) = "pdf" Then

            myReturn = Shell("C:\Program Files (x86)\Adobe\Acrobat 10.0\Acrobat\AcroRd32.exe " & sPath & objFile.Name, vbNormalFocus)

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

            SendKeys "^a", True

            SendKeys "^c", True

            SendKeys "%F", True

            SendKeys "X", True

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

            Set wk = Workbooks.Add()

            Set sh = wk.Worksheets("Foglio1")

            lRiga = 1

            sh.Range("A1").PasteSpecial

            lUltRiga = sh.Range("A" & sh.Rows.Count).End(xlUp).Row

            Set shNew = wk.Worksheets.Add

            shNew.Name = "FoglioCorretto"

            lng = 1

            For lRiga = 1 To lUltRiga

                For lCol = 1 To 3

                    shNew.Cells(lng, lCol).Value = sh.Cells(lRiga, 1).Value

                    If lCol < 3 Then

                        lRiga = lRiga + 1

                    End If

                Next

                lng = lng + 1

            Next

            Set sh = Nothing

            wk.SaveAs Filename:=sPath & Mid(objFile.Name, 1, Len(objFile.Name) - 3) _

                & "xlsx", FileFormat:=xlOpenXMLWorkbook

                wk.Close

            Set wk = Nothing

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

        End If

        Set objFile = Nothing

    Next

    Application.ScreenUpdating = True

    Set objFile = Nothing

    Set objFolder = Nothing

    Set objFSO = Nothing

End Sub

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

5 risposte

Ordina per: Più utili
  1. Anonimo
    2015-10-18T16:25:33+00:00

    Buonasera Mauro  , ti pongo anche un altro problema riguardo al secodo codice, postato sul forum, che converte file pdf in txt e successivamente con l'utilizzo di una seconda macro da txt ad excel. Nel  mio caso specifico, ho utilizzato   il primo codice per la conversione  in txt di diversi file  pdf (stessa tipologia)  salvati in una cartella specifica su desktop. il risultato è abbastanza buono, i file sono stati generati in sequenza cosi' come erano stati salvati nella cartella di riferimento , l'unico problema e che li salva sul desktop o in altre cartelle se lo utilizzo da altre postazioni  con  path diversa ( tipo reader 9.0) . 

    In basso vi posto il codice, attendo vostri suggerimentì. grazie

    A

    testo codice:

    Public Sub mPdfToTxt()

        Dim objFSO As Object

        Dim objFolder As Object

        Dim objFile As Object

        Dim myReturn As Double

        Dim sPath As String

        sPath = ThisWorkbook.Path & ""

        Set objFSO = CreateObject( _

            "Scripting.FileSystemObject")

        Set objFolder = _

            objFSO.GetFolder(sPath)

            For Each objFile In objFolder.Files

            If LCase(Right(objFile.Name, 3)) = "pdf" Then

                myReturn = Shell("C:\Program Files (x86)\Adobe\Reader 9.0\Reader\AcroRd32.exe " & sPath & objFile.Name, vbNormalFocus)

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

                SendKeys "%F", True

                SendKeys "v", True

                SendKeys "s", True

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

                SendKeys "%S", True

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

                SendKeys "%F", True

                SendKeys "e", True

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

            End If

        Next

        Application.ScreenUpdating = True

        Set objFile = Nothing

        Set objFolder = Nothing

        Set objFSO = Nothing

    End Sub

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2015-10-15T10:12:22+00:00

    Ciao Mauro, se è possibile mi inserisco anch'io nella discussione,il mio file si chiama dossier attività 2015

    http://1drv.ms/1G7efLS

    Ho provato a salvare direttamente da excel ( file-salva con nome, ecc..)  ma non mi tiene tutta la tabella

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2015-10-12T22:47:01+00:00

    Ciao Mauro , ho apportato la modifica che mi hai suggerito,Application.Wait (Now + TimeValue("0:00:10"))  ma non va . La scansione effettutata dal programma si blocca al primo file  pdf e genera  F. excel di numero pari ai pdf da convertire , ma replica  il contenuto del primo pdf .

    come si potrebbe risolvere ?

    grazie

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2015-10-12T21:53:57+00:00

    Non mi sembra di avere errori particolare , tipo per tre file da convertire dovrei aumentare i secondi  della routine  .....

    ci provo grazie.

    La risposta è stata utile?

    0 commenti Nessun commento
  5. Anonimo
    2015-10-12T01:51:30+00:00

    Quando si blocca, hai un errore specifico?

    Hai provato ad aumentare il valore dei secondi di Wait?

    La risposta è stata utile?

    0 commenti Nessun commento