ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > 我的酷贴 > Word > 如何用vba代码将excel中数据导入到word表格中?

如何用vba代码将excel中数据导入到word表格中?

作者:绿色风 分类: 时间:2022-08-18 浏览:102
楼主
kevinchengcw
Q: 如何用vba代码将excel中数据导入到word表格中?
A: 代码如下:
  1. Sub test()
  2. Dim mTable As Table, mCell As Cell, Str$, WB, Rng, Dic As Object, Arr, N&, xlApp As Object
  3. On Error Resume Next    '设置容错
  4. Set xlApp = CreateObject("excel.application")   '创建一个excel项目,用于引用excel的函数
  5. Set Dic = CreateObject("scripting.dictionary")  '创建字典用于装载数据
  6. Set WB = GetObject(ThisDocument.Path & "\数据源.xlsx")  '打开数据源文件
  7. With WB.worksheets(1)   '提取数据源文件中第一个表中的指定位置数据
  8.     For Each Rng In .[b2].Resize(.Cells(.Rows.Count, 2).End(3).Row - 1, 1)  '循环指定标题列各单元格
  9.         If Rng <> "" Then Dic.Add Rng.Offset(-1).Value & vbTab & Rng.Value, Join(xlApp.transpose(xlApp.transpose(Rng.Resize(1, .Cells(Rng.Row, .Columns.Count).End(1).Column))), vbTab) '如果数据不为空则存入字典中(因存在相同字段,故与上面单元格字段组合)
  10.     Next Rng
  11. End With
  12. WB.Close False  '关闭数据源文件
  13. Set WB = Nothing    '清空工作簿项目
  14. Set xlApp = Nothing '清空excel项目
  15. For Each mTable In ThisDocument.Tables  '循环本文档中各个表格
  16.     For Each mCell In mTable.Range.Cells    '循环表格中各个单元格
  17.         If mCell.ColumnIndex = 1 And mCell.RowIndex > 1 Then    '如果是表格第二行以上的第一列,则
  18.             Str = ""    '清空字段,防止出错
  19.             Str = Replace(mTable.Cell(mCell.RowIndex - 1, mCell.ColumnIndex).Range.Text, Chr(13) & Chr(7), "") & vbTab & Replace(mCell.Range.Text, Chr(13) & Chr(7), "")    '组合字段,用于与字典的keys进行判断
  20.             If Dic.Exists(Str) Then '如果存在该字段的key,则
  21.                 Arr = Split(Dic(Str), vbTab)    '将item项拆分放入数组
  22.                 For N = LBound(Arr) + 1 To mTable.Range.Columns.Count - 1   '循环数据中第二个到表格列数范围的数组数据
  23.                     mTable.Cell(mCell.RowIndex, mCell.ColumnIndex + N).Range.Text = Format(Arr(N), "#,##0.00")  '将数据依指定格式写入对应单元格中
  24.                 Next N
  25.             End If
  26.         End If
  27.     Next mCell
  28. Next mTable
  29. Set Dic = Nothing   '清空字典项目
  30. End Sub
也可以利用excel表格中的vba实现此功能。
2楼
蜀郭浪君

版主你好 首先感谢您的代码 谢谢 版主您提供的代码很不错 让我很方便 其中我还想增加几个功能 关于格式的问题
要是上述功能实现比较麻烦我就想实现在数据批量复制的时候 保留原格式粘贴 我就在excel表里面将所有的格式调整好 然后粘贴过去就省得调整格式
麻烦您了 谢谢!
再麻烦你制作一个加载宏在右键中添加一个加载项实现这个功能的运用 谢谢
3楼
kszcs
K版主:
怎么使用这个代码?
4楼
x201
很好

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap