Word VBA按Excel表批量生成邀请函教程

文摘   2025-01-18 09:01   四川  

 

Word VBA批量生成个性化邀请函教程

场景描述

需要给50位嘉宾发送会议邀请函,每份邀请函需要包含嘉宾的姓名、职位、具体时间等个性化信息。手工修改既耗时又容易出错,使用VBA可以在几秒钟内完成全部操作。

数据准备

  1. 1. 在Excel中准备嘉宾信息表(guests.xlsx):

姓名职位公司邀请时间
张明技术总监创新科技有限公司2025年2月15日 14:00
李华产品经理未来软件股份公司2025年2月15日 15:30
王芳首席执行官智慧解决方案公司2025年2月16日 10:00
...(共50行数据)


邀请函模板

创建Word文档作为模板,在需要替换的位置使用特定标记:

需要批量生成的位置用<<模板>>进行标记 文字和段落都可以任意设定格式

尊敬的<<姓名>>:

    诚挚地邀请您参加"2025年技术创新峰会"。

    您作为<<公司>>的<<职位>>,您的见解对我们非常重要。会议定于<<邀请时间>>在世纪大厦23层会议中心举行。

    期待您的莅临!

                                                    会议组织方
                                                    2025年1月

VBA代码

Sub GenerateInvitations()
    Dim xlApp As Object
    Dim xlWB As Object
    Dim xlSheet As Object
    Dim wdApp As Word.Application
    Dim wdDoc As Word.Document
    Dim templateDoc As Word.Document
    Dim saveFolder As String
    Dim i As Long
    
    ' 设置保存路径
    saveFolder = "C:\Invitations\"
    
    ' 创建文件夹(如果不存在)
    If Dir(saveFolder, vbDirectory) = "" Then
        MkDir saveFolder
    End If
    
    ' 打开Excel并读取数据
    Set xlApp = CreateObject("Excel.Application")
    Set xlWB = xlApp.Workbooks.Open("C:\Data\guests.xlsx")
    Set xlSheet = xlWB.Sheets(1)
    
    ' 打开Word模板
    Set wdApp = New Word.Application
    wdApp.Visible = False
    Set templateDoc = wdApp.Documents.Open("C:\Templates\invitation_template.docx")
    
    ' 遍历Excel中的每一行数据
    For i = 2 To xlSheet.UsedRange.Rows.Count ' 从第2行开始(跳过表头)
        ' 复制模板
        Set wdDoc = templateDoc.Application.Documents.Add
        templateDoc.Content.Copy
        wdDoc.Content.Paste
        
        ' 替换标记
        With wdDoc.Content.Find
            .Text = "<<姓名>>"
            .Replacement.Text = xlSheet.Cells(i, 1).Value
            .Execute Replace:=wdReplaceAll
            
            .Text = "<<职位>>"
            .Replacement.Text = xlSheet.Cells(i, 2).Value
            .Execute Replace:=wdReplaceAll
            
            .Text = "<<公司>>"
            .Replacement.Text = xlSheet.Cells(i, 3).Value
            .Execute Replace:=wdReplaceAll
            
            .Text = "<<邀请时间>>"
            .Replacement.Text = xlSheet.Cells(i, 4).Value
            .Execute Replace:=wdReplaceAll
        End With
        
        ' 保存文档
        wdDoc.SaveAs2 saveFolder & "邀请函_" & xlSheet.Cells(i, 1).Value & ".docx"
        wdDoc.Close
    Next i
    
    ' 清理对象
    templateDoc.Close
    xlWB.Close
    xlApp.Quit
    wdApp.Quit
    
    Set wdDoc = Nothing
    Set templateDoc = Nothing
    Set xlSheet = Nothing
    Set xlWB = Nothing
    Set xlApp = Nothing
    Set wdApp = Nothing
    
    MsgBox "邀请函生成完成!共生成 " & (i - 2) & " 份文档。", vbInformation
End Sub

代码说明

  1. 1. 代码首先创建必要的对象引用,包括Excel应用程序(用于读取数据)和Word应用程序(用于生成文档)

  2. 2. 设置文件保存路径并确保目录存在

  3. 3. 打开Excel数据文件和Word模板文件

  4. 4. 遍历Excel中的每一行数据:

  • • 复制模板内容

  • • 替换所有标记为实际数据

  • • 保存为新文档

  • 5. 完成后清理所有对象并显示完成消息


  • 这句变态提示词 让AI更懂Excel 不会写需求也能写出精准VA代码


  • 运行效果

    1. 1. 运行代码后,将在指定目录下生成50个Word文档,文件名格式为"邀请函_姓名.docx"

    2. 2. 每个文档中的标记都被替换为对应的个性化信息

    3. 3. 整个过程只需几秒钟即可完成

    4. 4. 生成的文档保持统一的格式,同时包含个性化信息

    优势

    1. 1. 效率提升:手动修改50份文档可能需要1-2小时,而使用VBA只需几秒钟

    2. 2. 准确性:避免手动替换时的拼写错误或遗漏

    3. 3. 一致性:所有生成的文档格式完全一致

    4. 4. 可扩展:可以轻松处理更多数量的邀请函,代码无需修改

    5. 5. 可维护:需要修改模板时,只需更改模板文档,无需修改代码

    使用注意事项

    1. 1. 运行前确保Excel数据文件和Word模板文件路径正确

    2. 2. 首次运行时可能需要启用宏

    3. 3. 建议先用少量数据测试后再处理大量数据

    4. 为什么你问AI的VBA代码总是出错?


    5. VBA学习神器推荐

    6. vba代码助手(vbayyds.com)

    7.  AI写代码, 代码翻译, 一键混淆加密,中文输入提示



    8. 买课程可进永久答疑群,课程可免费试学点击下方链接 v.excel880.com



     


    EXCEL880
    Excel/WPS办公技巧分享 郑广学VBA/VSTO/JSA教程分享 课程咨询及付费定制表格加EXCEL880B
     最新文章