ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: 庄生小虫

[求助] 运用EXCEL VBA批量提取 word中 第三个表的数据

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-5-9 20:00 | 显示全部楼层
lsdongjh 发表于 2018-5-9 16:24
你把这个去掉这成

老师,还是有问题。新装了2013版(破解版)OFFICE,一样还是丢失 16.0 object lib...
TIM图片20180509195337.png
TIM图片20180509195334.png

TA的精华主题

TA的得分主题

发表于 2018-5-9 21:02 来自手机 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2018-5-9 21:24 | 显示全部楼层
Sub 提取()
Dim i%, k%, arr(1 To 10000, 1 To 7), myPath$, myFile$, s1$, s2$, wdapp
Set wdapp = CreateObject("Word.Application")
Dim wdD As Word.Document
myPath = ThisWorkbook.Path & "\"
myFile = Dir(myPath & "*.doc?")
Do While myFile <> ""
    Set wdD = wdapp.Documents.Open(myPath & myFile)
    With wdD.Tables(1)
        s1 = Replace(.Cell(1, 2).Range.Text, Chr(7), "")
        s2 = Replace(.Cell(2, 2).Range.Text, Chr(7), "")
    End With
    With wdD.Tables(3)
        For i = 2 To .Rows.Count
            If Len(.Cell(i, 4).Range.Text) = 2 Then
                k = k + 1
                arr(k, 1) = k
                arr(k, 3) = s1
                arr(k, 4) = s2
                arr(k, 5) = Replace(.Cell(i, 2).Range.Text, Chr(7), "")
            End If
        Next
    End With
    wdD.Close
    myFile = Dir
Loop
wdapp.Quit
Set wdD = Nothing
Range("A3").CurrentRegion.Offset(2).ClearContents
Range("A3").Resize(UBound(arr), 7) = arr
End Sub

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2018-5-9 21:51 | 显示全部楼层
无法运行,麻烦各位老师看看

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-5-10 10:27 | 显示全部楼层
182197315 发表于 2018-5-9 21:24
Sub 提取()
Dim i%, k%, arr(1 To 10000, 1 To 7), myPath$, myFile$, s1$, s2$, wdapp
Set wdapp = Crea ...

老师,提示问题见截图:
AO4L5)`_$8HEB2H{S]PE@@T.png

TA的精华主题

TA的得分主题

发表于 2018-5-10 21:44 | 显示全部楼层
Sub 提取()
Dim i%, k%, arr(1 To 10000, 1 To 7), myPath$, myFile$, s1$, s2$, r%, c%, wdApp, d
Set d = CreateObject("scripting.dictionary")
Set wdApp = CreateObject("Word.Application")
Dim wdD As Word.Document
myPath = ThisWorkbook.Path & "\"
myFile = Dir(myPath & "*.doc?")
Do While myFile <> ""
    Set wdD = wdApp.Documents.Open(myPath & myFile)
    With wdD.Tables(1)
        s1 = Replace(.Cell(1, 2).Range.Text, Chr(7), "")
        s2 = Replace(.Cell(2, 2).Range.Text, Chr(7), "")
    End With
    With wdD.Tables(3)
        For Each mycell In .Range.Cells
            r = mycell.RowIndex
            c = mycell.ColumnIndex
            If c > d(r) Then d(r) = c
        Next
        For i = 2 To .Rows.Count
            If Len(.Cell(i, d(i) - 3).Range.Text) = 2 Then
                k = k + 1
                arr(k, 1) = k
                arr(k, 3) = s1
                arr(k, 4) = s2
                arr(k, 5) = Replace(.Cell(i, d(i) - 5).Range.Text, Chr(7), "")
            End If
        Next
    End With
    wdD.Close
    myFile = Dir
Loop
wdApp.Quit
Set wdD = Nothing
Set wdApp = Nothing
Set d = Nothing
Range("A3").CurrentRegion.Offset(2).ClearContents
Range("A3").Resize(UBound(arr), 7) = arr
End Sub

TA的精华主题

TA的得分主题

发表于 2018-5-10 21:57 | 显示全部楼层
这次应该没问题了,含有合并单元格的行也能正常提取

提取.zip

75.57 KB, 下载次数: 20

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2018-5-11 08:57 | 显示全部楼层
庄生小虫 发表于 2018-5-10 10:27
老师,提示问题见截图:

去掉丢失的word 16.0的引用,然后添加你电脑上对应版本的word的引用。类似于Microwsoft Word **.0 Library

TA的精华主题

TA的得分主题

发表于 2018-5-11 09:48 来自手机 | 显示全部楼层
庄生小虫 发表于 2018-5-10 10:27
老师,提示问题见截图:

搞定了没有

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-5-11 17:10 | 显示全部楼层
本帖最后由 庄生小虫 于 2018-5-11 17:16 编辑

谢老师关心。都不好意思再问了。您的很好,就是能不能再帮我完善一下,见附图
VHOJ7%6X413VXH_A4N[K}EN.png
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

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

GMT+8, 2024-4-25 15:06 , Processed in 0.046933 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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