关于Excel和Word数据交互的基础知识,前面有两篇文章。这里是一个实际遇到的综合案例,基本上结合了前面的知识点。
一、实际案例介绍。
这种情况需要将Excel数据批量写入Word。需要写的如下图所示,红框里的需要写成word。
我这里有很多excel文件,每个都需要打开才能把数据写入word。
写完后的效果如下:
第二,理念和代码。
思路:循环打开Excel,先写订单号,工厂付款号,客户付款号。第二步是通过find函数确定长段号表的具体大小(以便循环写入数据到Word中)。最后,保存并关闭word。
具体代码如下:
子提取数据()
申请。屏幕更新=假
set doc=CreateObject(" word . application ")
医生。可见=真
设置wd=doc。文档。添加
PTH=application . getopen filename(" file(*)。*), *.*、"请选择一个文件",True)。
对于I=1到UBUND(PTH)'循环浏览所选工作簿。
设置wb=工作簿。将打开的工作簿分配给对象变量WB。
Strr="订单号" wb。工作表(1)。[b3] vbTab“客户付款编号”wb。工作表(1)。[b5] vbTab“工厂付款编号”WB。工作表(1)。[B6]“连接要写入的数据,并将其分配给变量strr。
将订单号、客户付款号和工厂付款号写入word。
和wb一起。工作表(1)
Col1=。列(1)。查找(“工厂编号”、“xlvalues”、“XL整体”、“xlbycolumns”、“xlnext”、“true”、“true”)。“row”定位工厂编号和总字符数,以确定需要插入word文档的表格的大小。
Col2=。列(1)。Find ("total ",xlvalues,XL整体,xlbycolumns,xlnext,true,true)。划船。
设置myrange=doc。活动文档。内容
我的天使。collapse direction :=wdcollapse end '折叠已经写入的内容。
医生。文件(1)。桌子。添加myrange,col 2col 1,11 '在word中插入新表格。
医生。文件(1)。表(一)。style="grid type " '表类型是网格类型。
对于r=列1至列21
Arr=。范围(“a”r)。整排。范围(“a 1: k1”)‘将excel表格中的数据循环写入word表格。
对于每个ar In arr
n=n1’将行中的单元格值循环写入字表中的单元格。
医生。文件(1)。表格(一)。范围=ar
然后
然后
n=0
以…结尾
Wb。close false“写入数据后,关闭打开的工作簿”,然后打开下一个工作簿。
然后
文件(1)。另存为此工作簿。路径“ data.docx””循环打开所有工作簿,并在写入数据后将打开的word文档保存到代码工作簿路径。
医生。退出退出程序。
申请。屏幕更新=真
末端接头
第三,知识点。
创建新表
代码包括创建新表和编写数据。这里有一个简单的例子供参考。(这段代码直接在Word VBA中运行。如果需要在Excel中操作Word插入表,需要新建一个Word程序对象,属于之前的基础知识。)
Sub创建一个新表来写入数据()
活动文档。表(1)。删除
设置tb=活动文档。表格。添加(选择。范围,1,3)
肺结核。Style="网格类型"。细胞(1,1)。range=“number”。单元(1,2)。Range=“文件名”。细胞(1,3)。Range="extension "。
.行.最后.选择
选择。插入行低1
带. Rows.Last。细胞(1)。范围=1。细胞(2)。范围=2。细胞(3)。范围=3
以…结尾
以…结尾
末端接头
代码运行如下: