pdfminer3k在pdf中提取文本_ExcelVBA_034 Excel从Word文本中提取信息

本文介绍了如何利用正则表达式从多个Word文档中提取项目计划信息,并将其整理到Excel表格中,以实现数据的直观展示。通过提供的代码示例,展示了具体的实现过程。
摘要由CSDN通过智能技术生成

一、需求说明

     现有word文档若干,每个文档内有不同项目的计划,如图所示

56f03267c11829f9f0f1bbb3d763db96.png

为了能够更直观地在Excel表格中能够一览所有项目的信息,需要把项目计划信息提取到excel表格中。最终结果如图所示

372e27d67186be6e0174411f61254799.png

二、实现思路

        由于word文档中项目计划各项信息很有规律,因此可以借助正则表达式来提取。

三、实现代码

Public Sub Basic_CodeFrame()    '作者  DG-NextSeven    'QQ   84857038    '日期  2019年3月23日    '说明                                                                  '声明 过程中需要使用到的变量    Dim Wb As Workbook    Dim data_Sht As Worksheet    Dim ini_Sht As Worksheet    Dim row, col, i, dic As Object    Dim filepath, folderpath, filefilter    Dim wdApp, wdDoc                                                                    '连接当前工作簿    Set Wb = Application.ThisWorkbook                    '当前工作簿所在文件夹路径    folderpath = Wb.Path & "\"                    'word文档文件格式过滤    filefilter = "*.doc*"    '查找word文档,保存到数组中    filepaths = GetFiles(folderpath, filefilter)                    '能查找到word文档才继续    If Not IsEmpty(filepaths) Then                                                                                                                                                                                                                                                                                                                                               Dim Regex, Mhs, mh As Object                                    Set Regex = CreateObject("VBScript.RegExp") '创建正则表达式实例        With Regex            .Global = True '匹配所有符合条件文本            .Pattern = "^.*?项目名称:(.*?)$\r\n?^项目概况:(.*?)$\r\n?^工程范围:(.*?)$\r\n?^计价模式:" & _            "(.*?)$\r\n?^招标模式:(.*?)$\r\n?^评标方法:(.*?)$\r\n?^项目工期:(.*?)$\r\n?^参与竞标单位:(.*?)$\r\n?^本周完成:(.*?)$\r\n?^下周工作:(.*?)$"            .MultiLine = True '多行模式        End With                                                                                                                                                                                                                         '2获取数据        Set data_Sht = Wb.Worksheets("数据")        '仅保留表头,清除其他数据        data_Sht.UsedRange.Offset(1).Clear        '创建一个word应用程序对象        Set wdApp = CreateObject("Word.Application")        '循环所有文档        i = 1        For Each filepath In filepaths            '打开指定路径的word文档            Set wdDoc = wdApp.documents.Open(filepath)                                                            If Regex.test(wdDoc.Content.Text) Then                Set Mhs = Regex.Execute(wdDoc.Content.Text)                'RegGet = Mh.Item(0).submatches(0)                For Each mh In Mhs                    i = i + 1 '输出行号                    data_Sht.Cells(i, 1).Value = i - 1 '序号等于行号减去1                    For j = 0 To mh.submatches.Count - 1                        data_Sht.Cells(i, j + 2).Value = mh.submatches(j)                    Next j                Next mh            End If                                                                                                                     '关闭word文档,不保存更改            wdDoc.Close False        Next filepath '下一个word文档                                                                                           '退出word应用程序        wdApp.Quit                                                                                                           End If                                    '释放对象    Set wdApp = Nothing    Set wdDoc = Nothing    Set Wb = Nothing    Set data_Sht = Nothing    Set dic = Nothing    Set Regex = Nothing    Set Mhs = Nothing    Set mh = Nothing    End Sub'根据指定的文件夹路径和过滤字符,获得文件路径数组Function GetFiles(ByVal folderpath As String, ByVal filefiter As String) As String()    Dim filename As String, filepaths() As String    Dim n As Integer    ReDim filepaths(1 To 1)    filename = Dir(folderpath & filefiter)    Do While filename <> ""        n = n + 1        ReDim Preserve filepaths(1 To n)        filepaths(n) = folderpath & filename        filename = Dir    Loop    GetFiles = filepathsEnd Function

四、说明

    正则表达式是一强大的文本处理工具,也是学习文本处理需要跨过的一道坎,可以独立成为一门课。这里不作更多说明。

五、附件下载地址

链接:https://pan.baidu.com/s/1IDhYtasBRpKzsnjMXYYwlg

提取码:6pwj

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值