ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 通过vba将execl数据批量录入word文档

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-4-7 16:03 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
凑个热闹练习一下wordvba。。
Sub asd()
Dim wb, arr, sr As String
Set wb = VBA.GetObject(ThisDocument.Path & "\abc\数据源.xlsx")
arr = wb.sheets(1).usedrange.Value
Set wb = Nothing
sr = VBA.Dir(ThisDocument.Path & "\abc\*.doc")
Do While sr <> ""
    flag = False
    h_name = VBA.Split(sr, "_")(1)
    For i = 2 To UBound(arr)
        If arr(i, 3) = h_name Then
            flag = True
            Exit For
        End If
    Next
   
    If flag Then
        Application.ScreenUpdating = False
        Dim w As Document
        Set w = Documents.Open(ThisDocument.Path & "\abc\" & sr)
            With w.Tables(1)
                .Cell(11, 2).Range.Text = arr(i, 4)
                .Cell(14, 2).Range.Text = arr(i, 5)
            End With
            w.Save
            w.Close
            Application.ScreenUpdating = True
    End If
    sr = Dir
Loop

End Sub
微信截图_20240407160201.png

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-4-8 08:33 | 显示全部楼层
本帖最后由 同心/ty 于 2024-4-8 15:12 编辑
lisongmei 发表于 2024-4-7 16:03
凑个热闹练习一下wordvba。。
Sub asd()
Dim wb, arr, sr As String

老师你这个代码应该是指定固定的路径吧!但我要求是跳出提示框自由选择路径选取文件来完成数据填充。测试了一下,也没有运行成功,报错。

微信截图_20240408151230.png

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-4-9 11:02 | 显示全部楼层
wxxydl 发表于 2023-12-30 20:17
已改。。。。。。。。。。。。。。。

老师,一般情况下我的登记簿不放在数据源.xlsm 文件同一目录里,能否帮我修改一下你的代码,让我选择文件夹去选择登记簿写入数据源数据。在盼。也请众多大神帮我!

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-4-9 18:12 | 显示全部楼层
wxxydl 发表于 2023-12-30 20:17
已改。。。。。。。。。。。。。。。

Sub test()
    Application.ScreenUpdating = False
    Arr = Worksheets("sheet1").UsedRange
    Set doc = CreateObject("word.application")
   
With Application.FileDialog(msoFileDialogFolderPicker)
   '选择文件夹
        If .Show Then
            fp = .SelectedItems(1)
            '选择的文件路径赋值变量fp
        Else
            Exit Sub
            '如果没有选择保存路径,则退出程序
        End If
    End With

f = Dir(fp & "\*.doc")
      Do While f <> ""
        rr = Left(f, 18)
        For i = 1 To UBound(Arr)
            If Arr(i, 2) = rr Then
                s1 = Arr(i, 4)
                s2 = Arr(i, 5)
                Exit For
            End If
        Next
        Set WD = doc.Documents.Open(fp & "\" & f)
        'doc.Visible = True
        With WD.Tables(1)
            .Cell(11, 2) = s1
            .Cell(14, 2) = .Cell(14, 2) & s2
        End With
   
        f = Dir
        WD.Close True
    Loop
    Application.ScreenUpdating = True
    MsgBox "填充完成"
End Sub
老师,采用选取文件夹的方式,我东拼西凑的修改了你的代码,请提出优化宝贵意见。

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-4-9 18:14 | 显示全部楼层
本帖最后由 同心/ty 于 2024-4-10 09:11 编辑
wxxydl 发表于 2023-12-30 11:38
我给你做了一个  看一下
Sub test()
    Application.ScreenUpdating = False
    Arr = Worksheets("sheet1").UsedRange
    Set doc = CreateObject("word.application")
   
'Set fso = CreateObject("Scripting.FileSystemObject")
Set obmapp = CreateObject("Shell.Application").BrowseForFolder(0, "请选择文件目录:", 0, 0)
If Not obmapp Is Nothing Then
fp = obmapp.Self.Path & ""
Else
Exit Sub
End If
f = Dir(fp & "\*.doc")
      Do While f <> ""
        rr = Left(f, 18)
        For i = 1 To UBound(Arr)
            If Arr(i, 2) = rr Then
                s1 = Arr(i, 4)
                s2 = Arr(i, 5)
                Exit For
            End If
        Next
        Set WD = doc.Documents.Open(fp & "\" & f)
        'doc.Visible = True
        With WD.Tables(1)
            .Cell(11, 2) = s1
            .Cell(14, 2) = .Cell(14, 2) & s2
        End With
   
        f = Dir
        WD.Close True
    Loop
    Application.ScreenUpdating = True
    MsgBox "填充完成"
End Sub

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

本版积分规则

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

GMT+8, 2024-9-28 03:28 , Processed in 0.036533 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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