20170922xlVBA_GetCellTextFromWordDocument

Sub GetCellTextFromWordDocument()
    '应用程序设置
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    Application.Calculation = xlCalculationManual
    
    '错误处理
    'On Error GoTo ErrHandler
    
    '计时器
    Dim StartTime, UsedTime As Variant
    StartTime = VBA.Timer
    
    '变量声明
    Dim Wb As Workbook
    Dim Sht As Worksheet
    Dim Rng As Range
    'Dim Arr As Variant
    Dim i As Long
    Dim EndRow As Long
    
    '实例化对象
    Set Wb = Application.ThisWorkbook
    Set Sht = Wb.Worksheets("提取信息")
    With Sht
        .UsedRange.Offset(1).ClearContents
    End With
    
    Dim FolderPath As String
    Dim FileName As String
    Dim Tb As Word.Table
    Dim FileCount As Long
    Dim WdApp As Word.Application
    Dim OpenDoc As Word.Document
    Dim wdRng As Object
    Dim Arr() As String
    ReDim Arr(1 To 10, 1 To 1)
    index = 0
    
    FolderPath = Wb.Path & "\文档1\"    '此处填入路径
    FileName = Dir(FolderPath & "*.doc*")
    FileCount = 0
    Set WdApp = New Word.Application
    'WdApp.Visible = True
    Do While FileName <> ""
        Debug.Print FileName
        FileCount = FileCount + 1
        
        Set OpenDoc = WdApp.Documents.Open(FolderPath & FileName)
        For Each Tb In OpenDoc.Tables
            If Tb.Cell(1, 1).Range.Text Like "*序号*" Then
                index = index + 1
                ReDim Preserve Arr(1 To 10, 1 To index)
                With Tb
                    Arr(1, index) = RepSymbol(.Cell(3, 4).Range.Text)
                    Arr(2, index) = RepSymbol(.Cell(24, 3).Range.Text)  '父姓名
                    Arr(3, index) = RepSymbol(.Cell(25, 4).Range.Text)  '父地址
                    Arr(4, index) = "'" & RepSymbol(.Cell(27, 3).Range.Text)  '父电话
                    Arr(5, index) = RepSymbol(.Cell(29, 3).Range.Text)  '母姓名
                    Arr(6, index) = RepSymbol(.Cell(30, 4).Range.Text)  '母地址
                    Arr(7, index) = "'" & RepSymbol(.Cell(32, 3).Range.Text)   '母电话
                    Arr(8, index) = RepSymbol(.Cell(10, 4).Range.Text)  '户地址
                    Arr(9, index) = RepSymbol(.Cell(14, 4).Range.Text)  '现地址
                    Arr(10, index) = RegGet(FileName, "(\d+)")
                End With
            End If
        Next Tb
        OpenDoc.Close True
        
        With Sht
            EndRow = .Cells.Find("*", .Cells(1, 1), xlValues, xlWhole, xlByRows, xlPrevious).Row + 1
            Set Rng = .Cells(EndRow, 1)
            Set Rng = Rng.Resize(UBound(Arr, 2), UBound(Arr))
            Rng.Value = Application.WorksheetFunction.Transpose(Arr)
        End With
        FileName = Dir
    Loop
    
    'WdApp.Quit
    
UsedTime = VBA.Timer - StartTime
    Debug.Print "UsedTime :" & Format(UsedTime, "#0.0000 Seconds")
   'MsgBox "UsedTime :" & Format(UsedTime, "#0.0000 Seconds")

ErrorExit:                    '错误处理结束,开始环境清理
    Set Wb = Nothing
    Set Sht = Nothing
    Set Rng = Nothing
    Set WdApp = Nothing
    Set OpenDoc = Nothing
    
    
    
    Application.ScreenUpdating = True
    Application.DisplayAlerts = True
    Application.Calculation = xlCalculationAutomatic
    Exit Sub
ErrHandler:
    If Err.Number <> 0 Then
        MsgBox Err.Description & "!", vbCritical, "错误提示!"
        'Debug.Print Err.Description
        Err.Clear
        Resume ErrorExit
    End If
End Sub

Function RepSymbol(ByVal Text As String) As String
    Dim NewText As String
    NewText = Text
    NewText = Replace(NewText, vbTab, "")
    NewText = Replace(NewText, vbCr, "")
    NewText = Replace(NewText, vbLf, "")
    NewText = Replace(NewText, vbCrLf, "")
    NewText = Replace(NewText, "", "")
    RepSymbol = NewText
End Function
Public Function RegGet(ByVal OrgText As String, ByVal Pattern As String) As String
'传递参数 :原字符串, 匹配模式
    Dim Regex As Object
    Dim Mh As Object
    Set Regex = CreateObject("VBScript.RegExp")
    With Regex
        .Global = True
        .Pattern = Pattern
    End With
    If Regex.test(OrgText) Then
        Set Mh = Regex.Execute(OrgText)
        RegGet = Mh.Item(0).submatches(0)
    Else
        RegGet = ""
    End If
    Set Regex = Nothing
End Function

  

转载于:https://www.cnblogs.com/nextseven/p/7574166.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值