【问题标题】:Exporting pdf to excel将pdf导出到excel
【发布时间】:2019-04-16 20:55:51
【问题描述】:

在 Adob​​e DC Pro 中,您可以选择将 pdf 导出到 excel 2003 电子表格,方法是首先转到“导出 PDF”,然后选择“XML 电子表格 2003”,最后选择“为每个页面创建工作表”设置。 "

我在 excel vba 中找不到任何代码。

我的问题是,如何让excel通过VBA完成这个选项?只需将其保存为 SaveAS FileFormat:=XlFileFormat.xlXMLSpreadsheet 只会使其成为 xml 电子表格,而不是 Adob​​e Pro 制作的“为每个页面创建工作表”。

谢谢

【问题讨论】:

  • “只是将其保存为 SaveAS”——这句话中的“它”是什么?您使用的是 PDF 还是 Excel 工作表/工作簿?
  • 我正在与两者一起工作。我希望 excel 将 pdf 导出到带有工作表的 xmlspreadsheet,就像你想通过 Adob​​e 那样做。我可以通过 Adob​​e Pro 做到这一点,我希望能够有一个 excel 宏来完成这个。
  • PDF 的来源是什么?
  • 它是 Adob​​e Pro 的来源。那么我可以在excel中使用任何可以模仿Adobe Pro的编码吗?例如在 Adob​​e Pro 中,我可以将 PDF 导出为 xml 电子表格 2003 并为每个页面创建工作表,excel 可以将其作为宏吗?
  • 我猜这是 Acrobat 特有的。据我所知 Excel 没有 PDF 转换功能。

标签: excel vba adobe


【解决方案1】:

您可以使用 Adob​​e 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

【讨论】:

  • 感谢您的回复。我会试一试的。
【解决方案2】:

我仍然对 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

谢谢

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-13
    • 1970-01-01
    • 1970-01-01
    • 2020-02-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多