把WORD表格数据复制粘贴到EXCEL工作表-林岚
Access软件网QQ交流学习群(群号码198465573),欢迎您的加入!
首页 >技术文章> Access数据库-模块/函数/VBA


把WORD表格数据复制粘贴到EXCEL工作表

发表时间:2017/11/22 22:31:11 评论(1) 浏览(10829)  评论 | 加入收藏 | 复制
   
摘 要:在EXCEL中用VBA操作WORD表格,如果WORD文档中有多个格式完全相同的表格、或者表格数据庞大,那么逐个单元格读取可能花费时间很长,所以考虑用复制/粘贴的办法把整个(或多个)表格数据复制后粘贴到当前工作表,以求尽可能的提高速度,用较少时间来解决要解决的问题。
【问题】
与被操作工作簿保存位置相同的文件夹“WORD表格”中的文档“111多.doc”中有多个表格,把这多个表格数据复制粘贴到当前工作表A1起始的单元格区域(工作表第一行是标题行)。
正 文:

点击下载此附件


【代码】
Sub把WORD文档中多个表格数据复制粘贴到当前工作表()
Application.ScreenUpdating = False '关闭屏幕刷新
开始时间 = Timer '秒
ActiveSheet.Cells.ClearContents '清除表中已有的数据内容
wjM = ThisWorkbook.Path & "\WORD表格\111多.doc"
Set wDoc = CreateObject(wjM) '定义Word对象
bgS = wDoc.Tables.Count '文档中的表格个数
For g = 1 To bgS
    Set wTable = wDoc.Tables(g) '定义表格对象
    hs = wTable.Rows.Count '计算表格总行数
    ls = wTable.Columns.Count '计算表格总列数
    If g = 1 Then
       wDoc.Range(wTable.Cell(1, 1).Range.Start, wTable.Cell(hs, ls).Range.End).Select '选中表格
       wDoc.ActiveWindow.Selection.Copy '复制表格
       With ActiveSheet '当前工作表
           .Range("D:E").NumberFormatLocal = "@"'文本格式
           .Cells(1, 1).Select '选中第一个单元格
           .PasteSpecial Format:="Unicode 文本" '选择为文本(或Unicode 文本)方式粘贴
       End With
    ElseIf g > 1 Then
       wDoc.Range(wTable.Cell(2, 1).Range.Start, wTable.Cell(hs, ls).Range.End).Select '选中表格第2行到最后一行
       wDoc.ActiveWindow.Selection.Copy '复制表格
       With ActiveSheet '当前工作表
           xrH = .UsedRange.Rows.Count + 1'写入数据的起始行数
           .Cells(xrH, 1).Select '选中第一个单元格
           .PasteSpecial Format:="Unicode 文本" '选择为文本(或Unicode 文本)方式粘贴
       End With
    End If
Next g
With ActiveSheet '当前工作表
     .Cells.EntireColumn.AutoFit '自动调整列宽
     .Cells(1, 1).Select
End With
wDoc.Close '关闭文档
Set wTable = Nothing '释放表格对象变量存储空间
Set wDoc = Nothing '释放文档对象变量存储空间
MsgBox Chr(10) & "成功复制粘贴文件 " & Dir(wjM) & " 中 " & bgS & " 个表格数据到当前工作表" _
       & Chr(10) & Chr(10) & "复制粘贴数据共用 " & Timer - 开始时间 & " 秒", , "复制粘贴WORD多表格数据"
Application.ScreenUpdating = False '关闭屏幕刷新
End Sub
说明:
格式完全相同的多表格复制粘贴到EXCEL工作表,第一个表格整个复制粘贴。第二个表格开始,复制粘贴第二行到最后一行数据区域即可。
根据实际表格数据情况,诸如0打头的数字及身份证号码列,在EXCEL中应该设置对应列为文本格式,否则会出现数据损失,不能完整显示。
如果被操作的WORD文档中只有一个表格,上面的代码仍然适用!

Access软件网交流QQ群(群号:198465573)
 
 相关文章
【趣味交流】之access、Excel、Word、PPT杠上了  【麥田  2012/4/22】
【译文】在access中用VBA将WORD文档转化为PDF文件  【周芳  2012/5/8】
【access源码示例】-word导入导出系列-替换方式导出  【金宇  2012/8/6】
请看我用access保存的word文档  【zhengjin  2012/9/1】
【Access源码示例】替换方式导出到word模板(含图片)  【宏鹏  2012/9/19】
【示例拓展】Word导出成一式两份  【天外流星  2012/11/10】
将Access数据导出到 Word 文档  【宏鹏  2012/12/12】
按单元格读取WORD表格数据  【林岚  2017/11/22】
常见问答
技术分类
相关资源
文章搜索
关于作者

林岚

文章分类

文章存档

友情链接