Macro copiar muchos PDF y pegar a excel

Soy nuevo en el grupo y tengo la siguiente consulta,

Requiero una macro que abra cada uno de los archivos PDF contenidos en una carpeta específica, seleccione todo, copie y abra un archivo de excel donde pegará la información,

Hasta ahora llevo el código de abajo, pero no he logrado que de manera automática replique el proceso para cada PDF en la carpeta (Abrir, copiar, pegar en excel, cerrar PDF)

Espero puedan ayudarme

Sub Abrir_PDF_con_rundll32()
ArchivoPDF = "C:\Afiles\afil.pdf"
Shell "RunDll32.Exe Url.Dll,FileProtocolHandler " & ArchivoPDF, vbNormalFocus
Application.Wait Now() + TimeValue("00:00:05")
Application.SendKeys ("^{a}") 'Selecciona todo
Application.Wait Now() + TimeValue("00:00:02")
Application.SendKeys ("^{c}") 'Copia
Application.Wait Now() + TimeValue("00:00:01")

Workbooks.Open "C:imss.xlsx"
Range("A1").Select
Selection.End(xlDown).Select
ActiveCell.Offset(2, 0).Range("A1").Select

'Application. Wait Now() + TimeValue("00:00:01")
ActiveCell. PasteSpecial 'Pega el resultado
End Sub

Respuesta
1

Te anexo la macro actualizada

Sub Abrir_PDF_con_rundll32()
'Act.Por Dante Amor
    '
    ruta = "C:\trabajo\pdfs\"
    arch = Dir(ruta & "*.pdf")
    '
    Set l2 = Workbooks("imss.xlsx")
    Set h2 = l2.Sheets(1)
    l2.Activate
    h2.Cells.Clear
    '
    Do While arch <> ""
        ArchivoPDF = ruta & arch
        Shell "RunDll32.Exe Url.Dll,FileProtocolHandler " & ArchivoPDF, vbNormalFocus
        Application.Wait Now() + TimeValue("00:00:05")
        Application.SendKeys ("^{a}"), True                 'Selecciona todo
        Application.Wait Now() + TimeValue("00:00:03")
        Application.SendKeys ("^{c}"), True                 'Copia
        Application.Wait Now() + TimeValue("00:00:01")
        Application.SendKeys "%as", True                    'cerrar pdf
        Application.Wait Now() + TimeValue("00:00:01")
        '
        u = h2.Range("A" & Rows.Count).End(xlUp).Row + 1
        h2.Range("A" & u).PasteSpecial Paste:=xlPasteAll
        arch = Dir()
    Loop
    MsgBox "Fin"
End Sub

Antes de ejecutar la macro abre tu archivo "imss.xlsx"

Los datos se copiarán en la primer hoja de tu archivo "imss.xlsx", cada archivo se copiará abajo del anterior, considerando que en la columna "A" siempre hay datos.

Cambia en la macro "C:\trabajo\pdfs\" por el nombre de tu carpeta que contiene los archivos pdf

Ajusta en la macro los tiempos de que debe esperar la macro para realizar las operaciones de abrir, copiar, pegar y cerrar.


.

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

.

Avísame cualquier duda

.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas