【问题标题】:Extract data from PDF to Excel将数据从 PDF 提取到 Excel
【发布时间】:2018-05-21 09:53:26
【问题描述】:

我有以下 VBA 用于将 PDF 数据复制到 Excel 工作表,使用 Word 转换该数据:

Private Sub CommandButton3_Click()  '(load pdf)
    Dim o As Variant
    Set appWord = CreateObject("Word.Application")
    o = Shell("C:\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\AcroRd32.exe C:\Users\User Profile Name\Desktop\Book1.pdf2", vbNormalFocus)
    Application.Wait (Now + TimeSerial(0, 0, 2))
    SendKeys ("^a")
    SendKeys ("^c")
    SendKeys "%{F4}"
    Application.Wait Now + TimeValue("00:00:01")
    Set appWord = CreateObject("Word.Application")
    appWord.Visible = False
    appWord.Documents.Add.Content.Paste
    With appWord
        .Selection.WholeStory
        .Selection.Copy
        .ActiveDocument.Close SaveChanges:=wdDoNotSaveChanges
        .Quit
    End With

    MsgBox " pdf is loaded "
    MsgBox " Paste to EXCEL "

    Set wkSheet = ActiveSheet
    wkSheet.Range("A1").Select
    wkSheet.Paste
End Sub

如我们所见,这将从“C:\Users\User Profile Name\Desktop\Book1.pdf2”获取 PDF。

我需要帮助将其更改为打开“选择文件”框,以便我可以选择要转换的 PDF?

【问题讨论】:

  • 对不起,我还想问它是否可以让我“选择一张工作表”来粘贴我想要的结果。
  • 搜索Application.FileDialog(msoFileDialogOpen)。关于如何在 SO 上实现它的大量示例。 msdn:msdn.microsoft.com/en-us/vba/excel-vba/articles/…
  • 或较新版本中的 Application.GetOpenFileName。要选择工作表名称,请查看 InputBox()

标签: vba excel


【解决方案1】:

根据我的理解,下面的代码可能会对您有所帮助。

'    
Private Sub CommandButton3_Click()  '(load pdf)
Dim useSel As Integer
Dim file As String
Dim o As Variant



'allow to select only one file
Application.FileDialog(msoFileDialogOpen).AllowMultiSelect = False
'Remove all filters
Call Application.FileDialog(msoFileDialogOpen).Filters.Clear
'Add a custom filter to select pdf file only
Call Application.FileDialog(msoFileDialogOpen).Filters.Add("PDF Files Only", "*.pdf")
'make the file dialog visible to the user
useSel = Application.FileDialog(msoFileDialogOpen).Show
'user choice
If useSel <> 0 Then

file = Application.FileDialog(msoFileDialogOpen).SelectedItems(1)

'if choice is false then close sub
Else
Exit Sub
End If


'your code
Set appWord = CreateObject("Word.Application")

 o = Shell("C:\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\AcroRd32.exe " + file, vbNormalFocus)
 Application.Wait (Now + TimeSerial(0, 0, 2))
   SendKeys ("^a")
SendKeys ("^c")
 SendKeys "%{F4}"
Application.Wait Now + TimeValue("00:00:01")
 Set appWord = CreateObject("Word.Application")
 appWord.Visible = False
 appWord.Documents.Add.Content.Paste
With appWord

       .Selection.WholeStory
       .Selection.Copy
       .ActiveDocument.Close SaveChanges:=wdDoNotSaveChanges
       .Quit
End With

MsgBox " pdf is loaded "
MsgBox " Paste to EXCEL "


   Set wkSheet = ActiveSheet
    wkSheet.Range("A1").Select
    wkSheet.Paste

End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-14
    • 1970-01-01
    • 2011-09-20
    • 1970-01-01
    相关资源
    最近更新 更多