首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >导出pdf到excel

导出pdf到excel
EN

Stack Overflow用户
提问于 2019-04-17 04:55:52
回答 2查看 858关注 0票数 0

在Adobe DC Pro中,您可以选择将pdf导出到excel 2003电子表格,方法是先转到"Export PDF",然后选择"XML Spreadsheet 2003“,最后选择"Create Worksheet for each page”。

我在excel vba中找不到任何这样做的代码。

我的问题是,如何通过VBA使excel完成此选项?仅仅将其保存为xml只是使其成为SaveAS电子表格,而不是像Adobe Pro那样“为每一页创建工作表”。

谢谢

EN

回答 2

Stack Overflow用户

发布于 2019-04-17 22:45:38

您可以使用Adobe Acrobat Pro附带的Adobe Acrobat 10.0类型库参考来完成此操作。

这里就是一个例子:

此代码将打开一个PDF文件,并将每个PDF页面分配给各个工作表。

代码语言:javascript
复制
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
票数 0
EN

Stack Overflow用户

发布于 2019-05-01 06:00:35

我仍然对Page_Text is Nothing有问题。尽管我打开了一个pdf文件,但它似乎不能读取Page_Text。代码如下:

代码语言:javascript
复制
.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

谢谢

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55716473

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档