ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 350|回复: 5

[求助] 关于获取PDF数据

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-4-25 14:24 | 显示全部楼层 |阅读模式
日常工作中有一部分PDF的数据,想写一段VBA代码获取全部数据,
但是尝试了多次都失败了,完全找不到如何获取方法;


求助有没有大神给一段相关代码,学习学习!

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-4-25 14:25 | 显示全部楼层
新人求教。

TA的精华主题

TA的得分主题

发表于 2024-4-25 14:42 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2024-4-25 15:30 | 显示全部楼层
Peny2020 发表于 2024-4-25 14:42
excel有个pdf转excel,是这个吗

这个功能出来的数据,后续还要手动处理下
可以批量出来,对于不会编程的情况下,已经很不错了

TA的精华主题

TA的得分主题

发表于 2024-4-25 16:00 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
不如用Python试下,我也是依葫芦画瓢不怎么会
  1. import PyPDF2
  2. pdfreader=PyPDF2.PdfReader("1234.pdf","rb")
  3. pdftext=''
  4. for i in range(0,len(pdfreader.pages)):
  5.     ipage=pdfreader.pages[i]
  6.     pdftext+=ipage.extract_text()
  7. print(pdftext)
复制代码

TA的精华主题

TA的得分主题

发表于 2025-1-3 23:32 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
Sub Imp_Into_XL(PDF_File As String)
    Dim AC_PD As New Acrobat.AcroPDDoc
    Dim AC_Hi As Acrobat.AcroHiliteList
    Dim AC_PG As Acrobat.AcroPDPage
    Dim AC_PGTxt As Acrobat.AcroPDTextSelect
    Dim WS_PDF As Worksheet
    Dim RW_Ct As Long
    Dim Col_Num As Integer
    Dim Li_Row As Long
    Dim Yes_Fir As Boolean
    Li_Row = Rows.Count
    Dim Ct_Page As Long
    Dim i As Long, j As Long, k As Long
    Dim T_Str As String
    Dim Hld_Txt As Variant
    RW_Ct = 0
    Col_Num = 1
    Application.ScreenUpdating = False
    Set AC_PD = New Acrobat.AcroPDDoc
    Set AC_Hi = New Acrobat.AcroHiliteList
    AC_Hi.Add 0, 32767
    With AC_PD
        .Open PDF_File
        Ct_Page = .GetNumPages
        If Ct_Page = -1 Then
            MsgBox "请确认PDF文件 '" & PDF_File & "'"
            .Close
            GoTo h_end
        End If
        For Each WS_PDF In Sheets
            Application.DisplayAlerts = False
            If WS_PDF.Name = "PDF读取到Excel" Then WS_PDF.Delete
            Application.DisplayAlerts = True
        Next
        Set WS_PDF = Worksheets.Add(, Worksheets(Sheets.Count))
        WS_PDF.Name = "PDF读取到Excel"
        Sheets("PDF读取到Excel").Columns("A:S").NumberFormatLocal = "@" '定义为文本格式
        For i = 1 To Ct_Page
            T_Str = ""
            Set AC_PG = .AcquirePage(i - 1)
            Set AC_PGTxt = AC_PG.CreateWordHilite(AC_Hi)
            If Not AC_PGTxt Is Nothing Then
                With AC_PGTxt
                    For j = 0 To .GetNumText - 1
                        T_Str = T_Str & .GetText(j)
                    Next j
                End With
            End If
            With WS_PDF
                If T_Str <> "" Then
                    Hld_Txt = Split(T_Str, vbCrLf)
                    Yes_Fir = True
                    For k = 0 To UBound(Hld_Txt)
                        RW_Ct = RW_Ct + 1
                        If Yes_Fir Then
                            RW_Ct = RW_Ct + 1
                            .Cells(RW_Ct, Col_Num).Value = "第" & i & "页"
                            RW_Ct = RW_Ct + 2
                            Yes_Fir = False
                        End If
                        If RW_Ct > Li_Row Then
                            RW_Ct = 1
                            Col_Num = Col_Num + 1
                        End If
                        T_Str = CStr(Hld_Txt(k))
                        If Left(T_Str, 1) = "=" Then T_Str = "'" & T_Str
                        .Cells(RW_Ct, Col_Num).Value = T_Str
                    Next k
                Else
                    RW_Ct = RW_Ct + 1
                    .Cells(RW_Ct, Col_Num).Value = "页面无文字 " & i
                    RW_Ct = RW_Ct + 1
                End If
            End With
        Next i
        .Close
    End With
    Application.ScreenUpdating = True
    'MsgBox "完成"
h_end:
    Set WS_PDF = Nothing
    Set AC_PGTxt = Nothing
    Set AC_PG = Nothing
    Set AC_Hi = Nothing
    Set AC_PD = Nothing
End Sub
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2025-2-4 08:42 , Processed in 0.026591 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表