VBA多条EXCEL记录写入到WORD文档中

该代码示例展示了一个VBA宏,用于从Excel工作表中读取数据,然后基于一个Word表格模板,为每条记录生成独立的Word文档。数据包括姓名、性别、出生年月等个人信息,以及家庭成员信息,并自动填写到Word模板中。
摘要由CSDN通过智能技术生成

要点提示:

1、批量EXCEL记录

2、WORD表格模板(一个WORD表格)

3、为每一条记录生成一个独立的WORD表格

Sub Excel2Word()
    Application.ScreenUpdating = False
    
    p = ThisWorkbook.Path & "/" '根目录路径
    
    Dim myWS As Worksheet
    
    Set myWS = ThisWorkbook.Sheets(1) '存有数据的表格
    
Const Loct As Integer = 10000  '定义常量

Dim iCount(Loct) As String, numCount(Loct) As String, nameCount(Loct) As String, postCount(Loct) As String

Dim strColum As String, fDate As String, fMonth As String, fDay As String

Dim modeFilse As String

Dim j As Integer, i As Integer, Ct As Integer, postLen As Integer

strColum = ""

Ct = 0
    
    For j = 0 To Loct '统计数据记录总条数
        
        iCount(j) = Sheets("Sheet1").Range("B5").Offset(j, 0)

        If (Trim(iCount(j)) <> "") Then '检查B列数据是否为空,非空即统计
            numCount(j) = Sheets("Sheet1").Range("A5").Offset(j, 0)
            Ct = Ct + 1
            strColum = strColum & iCount(j) & ","
        End If
       
    Next j
    
    'MsgBox strColum & Ct


    'fDate = Format(Now(), "yyyy-mm-dd")
    

    modeFilse = p & "公司代表大会人员登记表.doc" 'WORD文档表格模板

    
    
    f = modeFilse '选择模板文件
    
    If (Ct > 0) Then
    
    For i = 5 To (Ct + 4) '遍历数据行数,EXCEL记录从第5行开始
    
        FileCopy f, p & "生成的文件/" & myWS.Cells(i, 1).Text & myWS.Cells(i, 2).Text & ".doc"  '复制空模板并以某列数据为名命名新产生的文档
        
        Set wd = CreateObject("word.application")
        
        Set d = wd.documents.Open(p & "生成的文件/" & myWS.Cells(i, 1).Text & myWS.Cells(i, 2).Text & ".doc") '打开新文档
        
        
        d.tables(1).Cell(1, 2) = myWS.Cells(i, 2).Text '写入姓名
        d.tables(1).Cell(1, 4) = myWS.Cells(i, 3).Text '性别
        d.tables(1).Cell(1, 6) = myWS.Cells(i, 4).Text  '出生年月
        
        d.tables(1).Cell(2, 2) = myWS.Cells(i, 5).Text '民族
        d.tables(1).Cell(2, 4) = myWS.Cells(i, 6).Text '籍贯
        d.tables(1).Cell(2, 6) = myWS.Cells(i, 8).Text  '党派
        
        d.tables(1).Cell(3, 2) = myWS.Cells(i, 17).Text
        d.tables(1).Cell(3, 4) = "广州"
        
        d.tables(1).Cell(4, 2) = "组织提名"
        d.tables(1).Cell(4, 4) = "健康"
        d.tables(1).Cell(4, 6) = myWS.Cells(i, 9).Text  '参加工作时间

        
        d.tables(1).Cell(5, 2) = myWS.Cells(i, 11).Text '职称
        d.tables(1).Cell(5, 4) = myWS.Cells(i, 13).Text '学历学位
        d.tables(1).Cell(5, 6) = ""  '所学专业
        d.tables(1).Cell(5, 8) = myWS.Cells(i, 12).Text  '个人特长
        
        d.tables(1).Cell(6, 2) = myWS.Cells(i, 16).Text  '毕业院校
        d.tables(1).Cell(6, 4) = myWS.Cells(i, 18).Text  '身份证号码
        
        d.tables(1).Cell(7, 2) = myWS.Cells(i, 19).Text  '所属结构
        
        d.tables(1).Cell(8, 2) = myWS.Cells(i, 22).Text  '电子信箱
        d.tables(1).Cell(8, 4) = ""  '微信号
        d.tables(1).Cell(9, 2) = myWS.Cells(i, 20).Text  '通讯地址
        d.tables(1).Cell(9, 4) = myWS.Cells(i, 26).Text  '手  机
        
        d.tables(1).Cell(10, 2) = myWS.Cells(i, 21).Text  '邮 编
        d.tables(1).Cell(10, 4) = myWS.Cells(i, 23).Text  '传真
        d.tables(1).Cell(10, 6) = myWS.Cells(i, 24).Text  '办公电话
        
        d.tables(1).Cell(11, 2) = myWS.Cells(i, 27).Text  '工作单位及现任(或原任)职务

        d.tables(1).Cell(12, 2) = myWS.Cells(i, 28).Text  '简历
        d.tables(1).Cell(13, 2) = myWS.Cells(i, 29).Text  '主要表现
        
        d.tables(1).Cell(14, 2) = myWS.Cells(i, 67).Text + myWS.Cells(i, 68).Text + myWS.Cells(i, 69).Text '选举结果
        
        d.tables(1).Cell(22, 2) = myWS.Cells(i, 30).Text  '现任或历任职务情况(地方、届次、任期起止时间)
        
        d.tables(1).Cell(23, 2) = ""  '备注
        
        
'***************家庭主要成员*******************

        d.tables(1).Cell(16, 2) = myWS.Cells(i, 31).Text  '称谓
        d.tables(1).Cell(16, 3) = myWS.Cells(i, 32).Text  '姓名
        d.tables(1).Cell(16, 4) = myWS.Cells(i, 33).Text  '出生年月
        d.tables(1).Cell(16, 5) = myWS.Cells(i, 34).Text  '政治面貌
        d.tables(1).Cell(16, 6) = myWS.Cells(i, 35).Text  '工作单位及职务
        d.tables(1).Cell(16, 7) = myWS.Cells(i, 35).Text  '是否取得外国国籍
        
        d.tables(1).Cell(17, 2) = myWS.Cells(i, 37).Text  '称谓
        d.tables(1).Cell(17, 3) = myWS.Cells(i, 38).Text  '姓名
        d.tables(1).Cell(17, 4) = myWS.Cells(i, 39).Text  '出生年月
        d.tables(1).Cell(17, 5) = myWS.Cells(i, 40).Text  '政治面貌
        d.tables(1).Cell(17, 6) = myWS.Cells(i, 41).Text  '工作单位及职务
        d.tables(1).Cell(17, 7) = myWS.Cells(i, 42).Text  '是否取得外国国籍
        
        d.tables(1).Cell(18, 2) = myWS.Cells(i, 43).Text  '称谓
        d.tables(1).Cell(18, 3) = myWS.Cells(i, 44).Text  '姓名
        d.tables(1).Cell(18, 4) = myWS.Cells(i, 45).Text  '出生年月
        d.tables(1).Cell(18, 5) = myWS.Cells(i, 46).Text  '政治面貌
        d.tables(1).Cell(18, 6) = myWS.Cells(i, 47).Text  '工作单位及职务
        d.tables(1).Cell(18, 7) = myWS.Cells(i, 48).Text  '是否取得外国国籍
        
        
        d.tables(1).Cell(19, 2) = myWS.Cells(i, 49).Text  '称谓
        d.tables(1).Cell(19, 3) = myWS.Cells(i, 50).Text  '姓名
        d.tables(1).Cell(19, 4) = myWS.Cells(i, 51).Text  '出生年月
        d.tables(1).Cell(19, 5) = myWS.Cells(i, 52).Text  '政治面貌
        d.tables(1).Cell(19, 6) = myWS.Cells(i, 53).Text  '工作单位及职务
        d.tables(1).Cell(19, 7) = myWS.Cells(i, 54).Text  '是否取得外国国籍
        
        
        d.tables(1).Cell(20, 2) = myWS.Cells(i, 55).Text  '称谓
        d.tables(1).Cell(20, 3) = myWS.Cells(i, 56).Text  '姓名
        d.tables(1).Cell(20, 4) = myWS.Cells(i, 57).Text  '出生年月
        d.tables(1).Cell(20, 5) = myWS.Cells(i, 58).Text  '政治面貌
        d.tables(1).Cell(20, 6) = myWS.Cells(i, 59).Text  '工作单位及职务
        d.tables(1).Cell(20, 7) = myWS.Cells(i, 60).Text  '是否取得外国国籍
        
        
'***************家庭主要成员*******************

        
        d.Close
        
        wd.Quit
        
        Set wd = Nothing
        
    Next i

    Application.ScreenUpdating = True
    
    Else
    
    MsgBox "没有数据!"
    
    End If
    
    
End Sub

  • 4
    点赞
  • 54
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
可以使用VBA多条Excel记录和相应的图片插入到Word文档,具体的步骤如下: 1. 在Excel打开VBA编辑器(按ALT + F11),在“工具”菜单选择“参考”,勾选“Microsoft Word xx.x Object Library”和“Microsoft Office xx.x Object Library”。 2. 在VBA编辑器插入一个新的模块,编写以下代码: ```VBA Sub ExportToWord() Dim wdApp As Word.Application Dim wdDoc As Word.Document Dim wdRange As Word.Range Dim myPath As String Dim myFileName As String Dim myExcel As Excel.Application Dim myWorkbook As Excel.Workbook Dim myWorksheet As Excel.Worksheet Dim myChart As Excel.ChartObject Dim myPicture As Excel.Shape '创建一个新的Word应用程序 Set wdApp = CreateObject("Word.Application") wdApp.Visible = True '打开一个新的Word文档 Set wdDoc = wdApp.Documents.Add '设置Word文档的范围 Set wdRange = wdDoc.Range(0, 0) '设置Excel应用程序 Set myExcel = CreateObject("Excel.Application") myExcel.Visible = False '打开Excel文件 myPath = "C:\MyFolder\" myFileName = "MyFile.xlsx" Set myWorkbook = myExcel.Workbooks.Open(myPath & myFileName) '设置Excel工作表 Set myWorksheet = myWorkbook.Worksheets("Sheet1") '将Excel数据复制到Word文档 myWorksheet.Range("A1:C10").Copy wdRange.Paste '插入Excel图表 Set myChart = myWorksheet.ChartObjects(1) myChart.CopyPicture wdRange.Paste '插入Excel图片 Set myPicture = myWorksheet.Shapes(1) myPicture.Copy wdRange.Paste '关闭Excel文件和应用程序 myWorkbook.Close SaveChanges:=False myExcel.Quit '保存Word文档 wdDoc.SaveAs "C:\MyFolder\MyDocument.docx" '关闭Word文档和应用程序 wdDoc.Close wdApp.Quit '释放对象变量 Set wdRange = Nothing Set wdDoc = Nothing Set wdApp = Nothing Set myWorksheet = Nothing Set myWorkbook = Nothing Set myExcel = Nothing End Sub ``` 3. 修改代码的文件路径和文件名,将Excel数据范围、图表和图片的位置替换为实际位置。 4. 运行宏,它将创建一个新的Word文档,并将Excel数据、图表和图片插入到文档。 注意事项: 1. 如果在代码使用了旧版本的Office对象库(如“Microsoft Word 14.0 Object Library”),则需要打开Excel时使用旧版本的Excel对象库(如“Microsoft Excel 14.0 Object Library”)。 2. 在插入图片时,需要将图片复制到剪贴板,并在Word文档的范围使用Paste方法粘贴图片。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值