在Adobe DC Pro中,您可以选择将pdf导出到excel 2003电子表格,方法是先转到"Export PDF",然后选择"XML Spreadsheet 2003“,最后选择"Create Worksheet for each page”。
我在excel vba中找不到任何这样做的代码。
我的问题是,如何通过VBA使excel完成此选项?仅仅将其保存为xml只是使其成为SaveAS电子表格,而不是像Adobe Pro那样“为每一页创建工作表”。
谢谢
发布于 2019-04-17 22:45:38
您可以使用Adobe Acrobat Pro附带的Adobe Acrobat 10.0类型库参考来完成此操作。
这里就是一个例子:
此代码将打开一个PDF文件,并将每个PDF页面分配给各个工作表。
Option Explicit
Sub PDF_To_Excel()
Dim PDF_ As Acrobat.AcroPDDoc
Dim Hilight_Text As Acrobat.AcroHiliteList
Dim PDF_Page As Acrobat.AcroPDPage
Dim Page_Text As Acrobat.AcroPDTextSelect
Dim ws As Worksheet
Dim Count_Page As Long
Dim i As Long, j As Long, k As Long
Dim PDF_Text_Str As String
Dim Hold_Txt As Variant
Set PDF_ = New Acrobat.AcroPDDoc
Set Hilight_Text = New Acrobat.AcroHiliteList
Hilight_Text.Add 0, 32767
With PDF_
.Open "C:\ED5049PX2.pdf"
Count_Page = .GetNumPages
For i = 1 To Count_Page
PDF_Text_Str = ""
Set PDF_Page = .AcquirePage(i - 1)
Set Page_Text = PDF_Page.CreateWordHilite(Hilight_Text)
If Not Page_Text Is Nothing Then
With Page_Text
For j = 0 To .GetNumText - 1
PDF_Text_Str = PDF_Text_Str & .GetText(j)
Next j
End With
End If
Set ws = Worksheets.Add(, Worksheets(Sheets.Count))
With ws
.Name = "Page-" & i
If PDF_Text_Str <> "" Then
Hold_Txt = Split(PDF_Text_Str, vbCrLf)
For k = 0 To UBound(Hold_Txt)
PDF_Text_Str = CStr(Hold_Txt(k))
If Left(PDF_Text_Str, 1) = "=" Then PDF_Text_Str = "'" & PDF_Text_Str
.Cells(k + 1, 1).Value = PDF_Text_Str
Next k
Else
.Cells(1, 1).Value = "No text found in page " & i
End If
.Cells.Select
.Cells.EntireColumn.AutoFit
End With
Next
.Close
End With
MsgBox ("Done")
End Sub发布于 2019-05-01 06:00:35
我仍然对Page_Text is Nothing有问题。尽管我打开了一个pdf文件,但它似乎不能读取Page_Text。代码如下:
.Open "C:\User\test.pdf"
Count_Page=.GetNumPages
For I=1 to Count_Page
PDF_Text_Str=""
Set PDF_Page=.AcquirePage(i-1)
Set Page_Text=PDF_Page.CreateWordHilite(Hilight_Text)
If Not Page_Text is Nothing then
With Page_Text
For j=0 to .GetNumText -1
PDF_Text_Str=PDF_Text_Str & .GetText(j)
Next j
End With
End if谢谢
https://stackoverflow.com/questions/55716473
复制相似问题