[ad_1]
Tengo el siguiente código, sin embargo, para ejecutarlo, el requisito previo es tener instalada la biblioteca PDFsharp y no puedo agregar la referencia en Excel VBA.
Extracción PDF Submasiva()
‘ Referencia: biblioteca PDFsharp
‘Definimos la ruta de la carpeta que contiene los archivos PDF
Carpeta tenueRuta como cadena
carpetaPath = “C:\Users\vlad.zaicescu\Desktop\PDF-to-Excel\sample_invoice”
‘Crear un nuevo libro y hoja de trabajo de Excel
Atenuar wb como libro de trabajo
Establecer wb = Libros de trabajo.Agregar
Atenuar ws como hoja de trabajo
Establecer ws = wb.Sheets(1)
‘ Establece la fila inicial para insertar los datos extraídos
Dim startRow como entero
fila inicial = 1
‘Obtiene todos los archivos PDF en la carpeta
Dim pdfFiles() como cadena
pdfFiles = GetPDFFilesInFolder(rutacarpeta)
‘ Extrae datos de cada archivo PDF e inserta en Excel
Atenuar i como entero
Para i = LBound(pdfFiles) a UBound(pdfFiles)
Dim pdfPath como cadena
pdfPath = carpetaPath & pdfFiles(i)
Datos extraídos tenues como cadena
datos extraídos = extraer datos de PDF (rutapdf)
‘ Inserta los datos extraídos en la hoja de cálculo de Excel.
ws.Cells(startRow, 1).Value = pdfFiles(i) ‘ Inserta el nombre del archivo PDF
ws.Cells(startRow, 2).Value = extraídoDatos ‘ Inserta los datos extraídos
filaInicio = filaInicio + 1
Siguiente yo
‘Ajustar automáticamente las columnas en la hoja de cálculo de Excel
ws.Columnas.AutoFit
‘Guarda el libro
Atenuar savePath como cadena
savePath = “C:\Ruta\a\save\output.xlsx”
wb.SaveAs guardarPath
‘ Cierra el libro y limpia
wb.Cerrar
Establecer ws = Nada
Establecer wb = Nada
MsgBox “Extracción masiva completada. Salida guardada en: ” & savePath
Subtítulo final
Función GetPDFFilesInFolder(ByVal carpetaPath como cadena) Como cadena()
‘Obtiene todos los archivos PDF en la carpeta especificada
Archivos atenuados() como cadena
Archivo tenueContar como entero
número de archivos = 0
Nombre de archivo tenue como cadena
nombre de archivo = Dir(ruta de la carpeta y “*.pdf”)
Hacer mientras nombre de archivo <> “”
ReDim Conservar archivos (0 a fileCount)
archivos (número de archivos) = nombre de archivo
cuentaarchivos = cuentaarchivos + 1
nombre de archivo = Directorio
Bucle
GetPDFFilesInFolder = archivos
Función final
Función ExtractDataFromPDF (ByVal pdfPath como cadena) como cadena
‘ Extrae datos de un archivo PDF usando PDFsharp
‘Crear un documento PDF
Atenuar documento como nuevo PdfSharp.Pdf.PdfDocument
‘Abre el archivo PDF
documento.Open(pdfPath)
‘ Extrae el texto de cada página
Datos extraídos tenues como cadena
datos extraídos = “”
Página tenueContar como entero
pageCount = documento.PageCount
Atenuar i como entero
Para i = 0 Para pageCount – 1
Página atenuada como PdfSharp.Pdf.PdfPage
página = documento.Páginas(i)
Contenido atenuado como PdfSharp.Pdf.Content.PdfContentReader
contenido = Nuevo PdfSharp.Pdf.Content.PdfContentReader(página)
Mientras que content.Read()
Si content.GetType() es GetType(PdfSharp.Pdf.Content.PdfLiteral) Entonces
Literal tenue como PdfSharp.Pdf.Content.PdfLiteral
literal = DirectCast(contenido, PdfSharp.Pdf.Content.PdfLiteral)
Datos extraídos = Datos extraídos y valor literal.
Terminara si
terminar mientras
Siguiente yo
‘Cerramos el documento PDF
documento.Cerrar
ExtractDataFromPDF = datos extraídos
Función final
Lo que he probado:
Creé una clase en Visual Studio, instalé la biblioteca PDFsharp a través del administrador de paquetes NuGet y compilé la solución para recibir una DLL que puedo usar como referencia en Excel VBA. Sin embargo, cuando intento agregar la DLL no puedo. Además, intenté simplemente agregar la DLL PDFsharp del paquete NuGet, lo que también falló.
Vea la reproducción del vídeo aquí: https://app.screencast.com/MJmEkYKUsnGsw
[ad_2]
コメント