【解決方法】pdfsharp ライブラリ DLL をマクロ Excel VBA リファレンスに追加する方法

プログラミングQA

[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]

コメント

タイトルとURLをコピーしました