[ad_1]
次のコードがありますが、それを実行するには PDFsharp ライブラリがインストールされていることが前提条件であり、Excel VBA で参照を追加できません。
サブ BulkPDFExtraction()
‘ 参考: PDFsharp ライブラリ
‘ PDF ファイルを含むフォルダーのパスを定義します
文字列としての Dim フォルダーパス
フォルダーパス = “C:\Users\vlad.zaicescu\Desktop\PDF-to-Excel\sample_invoice”
‘ 新しい Excel ワークブックとワークシートを作成します
ワークブックとしてのディム WB
wb = Workbooks.Add を設定します
ワークシートとしてのディム ws
ws = wb.Sheets(1) を設定します
‘ 抽出したデータを挿入する開始行を設定します
Dim startRow As Integer
開始行 = 1
‘ フォルダー内のすべての PDF ファイルを取得します
Dim pdfFiles() を文字列として
pdfFiles = GetPDFFilesInFolder(フォルダパス)
‘ 各 PDF ファイルからデータを抽出し、Excel に挿入します
Dim i を整数として
For i = LBound(pdfFiles) から UBound(pdfFiles)
文字列としての Dim pdfPath
pdfPath = フォルダーパス & pdfFiles(i)
Dim 抽出データを文字列として表示
抽出されたデータ = ExtractDataFromPDF(pdfPath)
‘ 抽出したデータを Excel ワークシートに挿入します
ws.Cells(startRow, 1).Value = pdfFiles(i) ‘ PDF ファイル名を挿入します
ws.Cells(startRow, 2).Value = extractedData ‘ 抽出されたデータを挿入します
開始行 = 開始行 + 1
次は私
‘ Excel ワークシートの列を自動調整します
ws.Columns.AutoFit
‘ ワークブックを保存します
Dim savePath As String
savePath = “C:\Path\to\save\output.xlsx”
wb.名前を付けて保存保存パス
‘ ワークブックを閉じてクリーンアップします
wb.閉じる
ws = なしを設定します
wb = 何も設定しない
MsgBox “一括抽出が完了しました。出力は次の場所に保存されました: ” & savePath
エンドサブ
関数 GetPDFFilesInFolder(ByVal フォルダーパス As String) As String()
‘ 指定したフォルダー内のすべての PDF ファイルを取得します
Dim files() As String
Dim fileCount As Integer
ファイル数 = 0
Dim fileName As String
ファイル名 = Dir(フォルダパス & “*.pdf”)
Do While ファイル名 <> “”
ReDim ファイルを保存(0 ~ fileCount)
ファイル(ファイル数) = ファイル名
ファイル数 = ファイル数 + 1
ファイル名 = ディレクトリ
ループ
GetPDFFilesInFolder = ファイル
終了関数
関数 ExtractDataFromPDF(ByVal pdfPath As String) As String
‘ PDFsharp を使用して PDF ファイルからデータを抽出します
‘ PDFドキュメントを作成する
薄暗いドキュメントを新しい PdfSharp.Pdf.PdfDocument として表示
‘ PDFファイルを開く
document.Open(pdfPath)
‘ 各ページからテキストを抽出します
Dim 抽出データを文字列として表示
抽出されたデータ = “”
Dim pageCount As Integer
pageCount = document.PageCount
Dim i を整数として
i = 0 から pageCount – 1 まで
ページを PdfSharp.Pdf.PdfPage として薄暗くする
ページ = document.Pages(i)
コンテンツを PdfSharp.Pdf.Content.PdfContentReader として薄暗くする
content = 新しい PdfSharp.Pdf.Content.PdfContentReader(ページ)
content.Read() の間
content.GetType() が GetType(PdfSharp.Pdf.Content.PdfLiteral) の場合
Dim リテラル As PdfSharp.Pdf.Content.PdfLiteral
リテラル = DirectCast(コンテンツ, PdfSharp.Pdf.Content.PdfLiteral)
抽出されたデータ = 抽出されたデータ & リテラル.値
終了の場合
途中で終了
次は私
‘ PDF ドキュメントを閉じます
ドキュメントを閉じる
ExtractDataFromPDF = 抽出されたデータ
終了関数
私が試したこと:
Visual Studio でクラスを作成し、NuGet パッケージ マネージャーを介して PDFsharp ライブラリをインストールし、Excel VBA で参照として使用できる DLL を受け取る解決策を構築しました。 しかし、DLLを追加しようとしても追加できません。 さらに、NuGet パッケージから PDFsharp DLL を追加しようとしましたが、これも失敗しました。
こちらの再現ビデオをご覧ください: https://app.screencast.com/MJmEkYKUsnGsw
[ad_2]
コメント