吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2248|回复: 23
收起左侧

[其他原创] 利用VBA从word文档内提取指定内容到excle表格中

[复制链接]
52like 发表于 2023-4-28 15:20
本帖最后由 52like 于 2023-4-28 17:34 编辑

作为刚注册论坛不久的小白,最近由于工作关系,每天会收到很多带固定格式内容的WORD文档,为便于统一登记管理,便将这些文档内容统一登记于EXCLE文档中,一项一项登记花费时间比较多,考虑到文档的格式相对统一,因此在参考了网上大神的攻略后,自己动手利用EXCLE自带的VB宏写了一段代码,实现了一键智能导入的目标。自身实力有限,请各位指点,大神勿喷
按照大家要求,先上链接,再做介绍
https://www.aliyundrive.com/s/NK46x7PLaje
提取码: 9o0b

需导入的word文档标题,内容格式如下:  
文档标题也需要导入,方便查找管理.png

WORD文档内容

WORD文档内容

在excle文档中插入窗体按钮,右键指定编写的宏文件后,单击按钮效果如下,文档标题,内容完美显示在excle文档中,而且再次导入文档时,自动识别excle文档最后一行进行填充,不会擦除以前导入的内容。

导入的效果

导入的效果

目前仅能实现单个文件一键导入,整个文件夹的导入还在探索中
具体代码如下:

Sub 提取Word文档内容到Excle()
On Error GoTo Err_cmdimportWord_Click
Dim objwd As Object
Dim objdoc As Object
Dim objTable As Object
Dim strTemplates As String 'word文件路径名
Dim k, n As Integer
Dim mypath As String, myname As String
Dim i As Long

Set objwd = CreateObject("Word.Application")       ' 建立Word会话
objwd.Visible = False                              ' 设定Word应用程序为不可见状态
k = Cells.Find("*", LookIn:=xlFormulas, SearchDirection:=xlPrevious).Row + 1          '查找最后一行行号
n = 0
Application.ScreenUpdating = False

    With Application.FileDialog(msoFileDialogFilePicker) '选择单个word文件
         .Filters.Add "word文件", "*.doc*", 1
         .AllowMultiSelect = False
         If .Show Then strTemplates = .SelectedItems(1) Else Exit Sub
    End With

    Set objdoc = objwd.Documents.Open(strTemplates, , False)
    Set objTable = objdoc.Tables(1)
    mypath = strTemplates
    myname = Dir(mypath & "*.*")
    Sheet1.Cells(n + k, 2) = myname
    Sheet1.Cells(n + k, 3) = Replace(objTable.Cell(1, 2).Range.Text, Chr$(13) & Chr$(7), "")
    Sheet1.Cells(n + k, 4) = Replace(objTable.Cell(1, 4).Range.Text, Chr$(13) & Chr$(7), "")
    Sheet1.Cells(n + k, 5) = Replace(objTable.Cell(1, 6).Range.Text, Chr$(13) & Chr$(7), "")
    Sheet1.Cells(n + k, 6) = Replace(objTable.Cell(2, 2).Range.Text, Chr$(13) & Chr$(7), "")
    Sheet1.Cells(n + k, 7) = Replace(objTable.Cell(2, 4).Range.Text, Chr$(13) & Chr$(7), "")
    Sheet1.Cells(n + k, 8) = Replace(objTable.Cell(2, 6).Range.Text, Chr$(13) & Chr$(7), "")
    Sheet1.Cells(n + k, 9) = Replace(objTable.Cell(3, 2).Range.Text, Chr$(13) & Chr$(7), "")
    Sheet1.Cells(n + k, 10) = Replace(objTable.Cell(3, 4).Range.Text, Chr$(13) & Chr$(7), "")
    Sheet1.Cells(n + k, 11) = Replace(objTable.Cell(4, 2).Range.Text, Chr$(13) & Chr$(7), "")
    Sheet1.Cells(n + k, 12) = Replace(objTable.Cell(5, 2).Range.Text, Chr$(13) & Chr$(7), "")
    Sheet1.Cells(n + k, 13) = Replace(objTable.Cell(6, 2).Range.Text, Chr$(13) & Chr$(7), "")
    Sheet1.Cells(n + k, 14) = Replace(objTable.Cell(7, 2).Range.Text, Chr$(13) & Chr$(7), "")

    objdoc.Close   ' 关闭文件

Application.ScreenUpdating = True
Exit_cmdimportWord_Click:
Set objdoc = Nothing
Set objTable = Nothing
Set objwd = Nothing
Exit Sub
Err_cmdimportWord_Click:
MsgBox Err.Description, vbCritical, "出错"
Resume Exit_cmdimportWord_Click
End Sub


免费评分

参与人数 2吾爱币 +2 热心值 +1 收起 理由
不会上树的鱼 + 1 谢谢@Thanks!
bpzm1987 + 1 + 1 热心回复!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

fire1119e 发表于 2023-8-10 09:12
感谢楼主,下载试用!
Kls673M 发表于 2023-4-28 16:48
如果反向从表格复制到word文档再按姓名分文档呢!

点评

用邮件合并即可  详情 回复 发表于 2023-4-28 16:56
 楼主| 52like 发表于 2023-4-28 15:49
alongzhenggang 发表于 2023-4-28 16:12
suiran 但是  守着吧  万一用找了呢
pdfhvy141 发表于 2023-4-28 16:15
谢楼主分享。成品件发个
ilovei 发表于 2023-4-28 16:56
谢楼主分享
心海伽蓝 发表于 2023-4-28 16:56
Kls673M 发表于 2023-4-28 16:48
如果反向从表格复制到word文档再按姓名分文档呢!

用邮件合并即可
 楼主| 52like 发表于 2023-4-28 17:01
Kls673M 发表于 2023-4-28 16:48
如果反向从表格复制到word文档再按姓名分文档呢!

@心海伽蓝 这位大神说的到位,excle里面自带的邮件合并功能就是实现这个功能得
 楼主| 52like 发表于 2023-4-28 17:05
@pdfhvy141 我导出了一个bas文件,可以直接导入使用的,你试试吧

提取Word文档内容到Excle.rar (987 Bytes, 下载次数: 59)
 楼主| 52like 发表于 2023-4-28 17:15
我看下载附件需要扣除CB,再分享一个BAS的网盘链接,需要的请自取
提取Word文档内容到Excle.bas
https://www.aliyundrive.com/s/NK46x7PLaje
提取码: 9o0b
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-5-2 15:12

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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