VBA多个WORD文档表格数据写入到EXCEL中

工作提示:

1、当前目录下有多个相同的WORD表格;

2、在EXCEL中新建VBA项目;

3、将WORD表格中的数据读取写入到一条EXCEL记录中去。

'目录下多个WORD表格批量处理

Sub ReadMoreWords2MyExcel()

   Set Exlapp = CreateObject("excel.Application")
   
   Dim MyDoc As Object
   
   Dim MyPath$, MyName$, str$, m%, t$
   
   Dim Brr(1 To 1000, 1 To 66)
   
   Dim iCount As Integer, iii As Integer, kk As Integer, ii As Integer, col As Integer, tt As String, u As String, stxt As String
   
   Dim xCount As Integer
   
   MyPath = ThisWorkbook.Path & "\"
   MyName = Dir(MyPath & "*.doc?")
   m = 0

  
   Do While MyName <> "" '遍历WORD文档
      Set MyDoc = GetObject(MyPath & MyName) '打开WORD文档
     With MyDoc
       m = m + 1 '记录数据条数
       
       With .tables(1)
       
        Brr(m, 1) = m ''将序号数据存入当前工作表的A列4行单位格
        Brr(m, 2) = Application.Clean(.Cell(1, 2).Range) '姓名将word表格第1行第2列姓名的数据存入当前工作表的B列
        Brr(m, 3) = Application.Clean(.Cell(1, 4).Range) '性别将word表格第1行第4列性别的数据存入当前工作表的C列
        Brr(m, 4) = "'" + Application.Clean(.Cell(1, 6).Range) '出生年月将word表格第1行第6列民族的数据存入当前工作表的D列
        
        Brr(m, 5) = Application.Clean(.Cell(2, 2).Range) '民族
        Brr(m, 6) = Application.Clean(.Cell(2, 4).Range) '籍贯
        Brr(m, 7) = Application.Clean(.Cell(2, 6).Range) '党派
        
        Brr(m, 8) = Application.Clean(.Cell(3, 2).Range) '是否有国(境)外永久居留
        Brr(m, 9) = Application.Clean(.Cell(3, 4).Range) '所在代表团
        
        Brr(m, 10) = Application.Clean(.Cell(4, 2).Range) '提名方式
        Brr(m, 11) = Application.Clean(.Cell(4, 4).Range) '健康状况
        Brr(m, 12) = "'" + Application.Clean(.Cell(4, 6).Range) '参加工作时间

        Brr(m, 13) = Application.Clean(.Cell(5, 2).Range) '职称
        Brr(m, 14) = Application.Clean(.Cell(5, 4).Range) '学历学位
        Brr(m, 15) = Application.Clean(.Cell(5, 6).Range) '所学专业
        Brr(m, 16) = Application.Clean(.Cell(5, 8).Range) '个人特长
        
        Brr(m, 17) = Application.Clean(.Cell(6, 2).Range) '毕业院校
        Brr(m, 18) = "'" + Application.Clean(.Cell(6, 4).Range) '身份证号码

        Brr(m, 19) = Application.Clean(.Cell(7, 2).Range) '所属结构
        
        Brr(m, 20) = Application.Clean(.Cell(8, 2).Range) '电子信箱
        Brr(m, 21) = Application.Clean(.Cell(8, 4).Range) '微信号
        
        Brr(m, 22) = Application.Clean(.Cell(9, 2).Range) '通讯地址
        Brr(m, 23) = Application.Clean(.Cell(9, 4).Range) '手机
        
        Brr(m, 24) = Application.Clean(.Cell(10, 2).Range) '邮编
        Brr(m, 25) = Application.Clean(.Cell(10, 4).Range) '传真
        Brr(m, 26) = Application.Clean(.Cell(10, 6).Range) '办公电话
        
        Brr(m, 27) = Application.Clean(.Cell(11, 2).Range) '工作单位及现任(或原任)职务
        
        Brr(m, 28) = Application.Clean(.Cell(12, 2).Range) '简历
        
        Brr(m, 29) = Application.Clean(.Cell(13, 2).Range) '主要表现
        Brr(m, 30) = Application.Clean(.Cell(14, 2).Range) '选举结果
        
        'Brr(m, 33)16行为家庭主要成员开始项
        
        Brr(m, 31) = Application.Clean(.Cell(22, 2).Range) '现任或历任职务情况(地方、届次、任期起止时间)
        Brr(m, 32) = Application.Clean(.Cell(23, 2).Range) '备注
        

        

'-------------为家庭主要成员数据项--------------

kk = 1 '亲属数据表格起始行数

ii = 16 '亲属数据从第16行开始

iii = 5 '亲属数据总行数5

col = 33 '亲属数据开始写入的列数

tt = ""

Do While ii <= 20


     
     If kk <= 5 Then '判断当前行数
     
     
     stxt = Trim(Application.Clean(.Cell(ii, 2).Range))
     If stxt <> "" Then
     tt = tt + stxt + ","
     Brr(m, col) = stxt '称谓
     End If
     
     stxt = Trim(Application.Clean(.Cell(ii, 3).Range))
     If stxt <> "" Then
     tt = tt + stxt + ","
     Brr(m, col + 1) = stxt '姓名
     End If
     
     stxt = Trim(Application.Clean(.Cell(ii, 4).Range))
     If stxt <> "" Then
     tt = tt + stxt + ","
     Brr(m, col + 2) = stxt '出生年月
     End If
     
     stxt = Trim(Application.Clean(.Cell(ii, 5).Range))
     If stxt <> "" Then
     tt = tt + stxt + ","
     Brr(m, col + 3) = stxt '政治面貌
     End If

     stxt = Trim(Application.Clean(.Cell(ii, 6).Range))
     If stxt <> "" Then
     tt = tt + stxt + ","
     Brr(m, col + 4) = stxt '单位职务
     End If

     stxt = Trim(Application.Clean(.Cell(ii, 7).Range))
     If stxt <> "" Then
     tt = tt + stxt + ";"
     Brr(m, col + 5) = stxt '是否外国国籍或者获得国(境)外永久居留资格、长期居留许可
     End If
     
     col = col + 5
     
     End If
     
     col = col + 1
     
     ii = ii + 1

     kk = kk + 1
     
     Loop
        

'-------------为家庭主要成员数据项--------------

       End With
        .Close False '关闭WORD文档
     End With
     MyName = Dir() '下一个WORD文档
     
   Set MyDoc = Nothing '释放对象变量
   
   Loop
   

   Set Exlapp = Nothing '释放对象变量
   
   '输出数据
   
   If m <> 0 Then _
  Worksheets("Sheet1").Range("A5").Resize(m, UBound(Brr, 2)) = Brr 'Sheet1 A列4行单位格开始写入数据
  
  
 End Sub

可以使用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方法粘贴图片。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值