ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 怎么提取word内容

[复制链接]

TA的精华主题

TA的得分主题

发表于 2023-6-19 18:17 | 显示全部楼层 |阅读模式
怎么才能只提取word文件内容“:”右侧 的信息到excel表中


提取信息.rar (301.55 KB, 下载次数: 22)

TA的精华主题

TA的得分主题

发表于 2023-6-19 19:48 | 显示全部楼层
你的excel的列名为何和word里的不一致?

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-6-19 21:48 | 显示全部楼层
donghui2363 发表于 2023-6-19 19:48
你的excel的列名为何和word里的不一致?

大同小异呢,现在改成相同的字段了,你看看可以搞定吗。

提取信息.zip (298.19 KB, 下载次数: 7)

TA的精华主题

TA的得分主题

发表于 2023-6-19 22:12 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
Sub test()

    ChDrive Left(ThisWorkbook.FullName, 1) '点击导入按钮,指向当前盘
    ChDir ThisWorkbook.Path '指向当前路径

    f = Application.GetOpenFilename("Microsoft Office word 文件 (*.doc*),*.doc*", , "请选择要导入的数据:")  '打开对话框,选择一个文件f
    If f = False Then
        MsgBox "本次没有选择任何文件!"
        Exit Sub
    End If
   
    Set wdapp = CreateObject("word.application")
   
    Set wb = wdapp.Documents.Open(f)
   
    arr = Split(wb.Range, Chr(13))
    wb.Close
    brr = Sheets(2).[a1].CurrentRegion
    Set d = CreateObject("scripting.dictionary")
    For j = 2 To UBound(brr, 2)
        d(brr(1, j)) = j
    Next
    For Each k In arr
        If InStr(k, ":") > 0 Then
            crr = Split(WorksheetFunction.Clean(k), ":")
            s = WorksheetFunction.Clean(crr(0))
            If d.exists(s) Then brr(1, d(s)) = crr(1)
        End If
    Next k
    brr(1, 1) = UBound(brr)
    Sheets(2).Cells(UBound(brr) + 1, 1).Resize(1, UBound(brr, 2)) = brr
End Sub

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2023-6-19 22:13 | 显示全部楼层
供参考。。。。。

get_word.zip

306.95 KB, 下载次数: 37

评分

2

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-6-20 10:06 | 显示全部楼层
liulang0808 发表于 2023-6-19 22:12
Sub test()

    ChDrive Left(ThisWorkbook.FullName, 1) '点击导入按钮,指向当前盘

确实不错,太高深了。可惜看不明白,大侠能不能给注解一下,学习学习?

TA的精华主题

TA的得分主题

发表于 2023-6-20 10:20 | 显示全部楼层

  1. Sub test()
  2.     ChDrive Left(ThisWorkbook.FullName, 1)   '将当前工作簿所在的磁盘盘符设置为活动状态
  3.     ChDir ThisWorkbook.Path   '将当前的工作目录设置为当前工作簿所在的目录
  4.     f = Application.GetOpenFilename("Microsoft Office word 文件 (*.doc*),*.doc*", , "请选择要导入的数据:")  '打开对话框,选择一个文件f
  5.     If f = False Then   '如果没有选择任何文件,则提示信息并退出
  6.         MsgBox "本次没有选择任何文件!"
  7.         Exit Sub
  8.     End If
  9.    
  10.     Set wdapp = CreateObject("word.application")   '创建一个Word应用程序对象
  11.     Set wb = wdapp.Documents.Open(f)   '打开文件f并将其赋值给wb
  12.     '将wb中的文本按照回车符分割成一个字符串数组
  13.     arr = Split(wb.Range, Chr(13))
  14.     wb.Close   '关闭wb
  15.     brr = Sheets(2).[a1].CurrentRegion   '获取工作表2中从单元格A1开始的当前区域
  16.     '创建一个字典d,将brr中第一行的每个单元格的值作为键,对应的列号作为值
  17.     Set d = CreateObject("scripting.dictionary")
  18.     For j = 2 To UBound(brr, 2)
  19.         d(brr(1, j)) = j
  20.     Next
  21.     '遍历数组arr,如果字符串包含冒号,则将字符串分割成一个字符串数组crr,并将第一个元素作为键s,第二个元素作为值写入到brr中
  22.     For Each k In arr
  23.         If InStr(k, ":") > 0 Then
  24.             crr = Split(WorksheetFunction.Clean(k), ":")
  25.             s = WorksheetFunction.Clean(crr(0))
  26.             If d.exists(s) Then brr(1, d(s)) = crr(1)
  27.         End If
  28.     Next k
  29.     '将brr中的数据写入到工作表2中,并在最后一行的下一行插入brr的第一行数据
  30.     brr(1, 1) = UBound(brr)
  31.     Sheets(2).Cells(UBound(brr) + 1, 1).Resize(1, UBound(brr, 2)) = brr
  32. End Sub
复制代码

评分

3

查看全部评分

TA的精华主题

TA的得分主题

发表于 2023-6-21 21:43 | 显示全部楼层
你是怎么把发票上的数据整到word文件中的?

TA的精华主题

TA的得分主题

发表于 2023-6-21 21:44 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-7-2 09:36 | 显示全部楼层
本帖最后由 武松打鼓 于 2023-7-2 10:47 编辑

谢谢帮助。

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-17 02:49 , Processed in 0.041447 second(s), 17 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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