最近一直研究,Excel和Word数据交互读取的东西。市面上Word VBA的教程比较少,我学习这个基本是各种百度和遇到实例的摸索总结,可以说是学习和实践的结晶。我尽可能详细的写。 我把我整理的干货分享给大家,希望各取所需。 在实际中还是有很多的应用的,只是大多数人不知道有VBA这种东西,以至于做无谓的重复性工作。比如下面这种情况:把Excel题库导入Word Excel题库 导入Word后的效果 这东西如果手动去做,费时费力,生无可恋。还好有VBA这东西。我们用Excel代码操作Word,直接把Excel中的数据写入Word。(附件后台回复:"试题"获取) Sub 导出题库() 实现代码 看代码,其实很简单。操作Word,最重要的就是要知道Word VBA的对象、属性以及方法。有Excel VBA基础,学习Word VBA很快。 ■知识点一:创建Word程序,新建Word程序对象 Excel程序与Word程序交互,首先要引用Word对象,可以前期绑定,也可以后期。除了和正则、字典对象的前期绑定后期绑定的区别以外,excel操作word,后期绑定还有一点需要 特别注意: 一些属性的应该直接写他的值,而不是写成Word VBA中可以直接用的常量。比如,让段落格式居中,下面这句在Word VBA中运行没问题,但是移植到Excel就出问题了。提示:“无效的过程调用或参数”。 ParagraphFormat.Alignment=wdAlignParagraphCenter 像这种,我们需要把这些常量换成Word程序内部定义的数值。 ParagraphFormat.Alignment = 1 而这种常量的值,直接在Word VBA,msgbox wdAlignParagraphCenter即可。 ·后期绑定:(我用的) Set doc = CreateObject("word.application") '创建Word对象 ·前期绑定:前期绑定需要根据电脑中的Word版本勾选:Microsoft Excel XX.0 Object Library 前期绑定示意 前期绑定,调用Word程序的代码写法: Dim doc As Word.Application ■知识点二:Word程序的对象 Excel VBA有基础以后,Word VBA可以类比来学习,主要是搞清楚对象、属性、方法。然后看帮助文件、具体例子不清楚再百度即可。 Word2010 VBA 离线帮助文件,后台回复“word”获取。 Excel有: Excel.Application ’Excel程序对象 Excel.Application. Workbooks ’工作簿 Excel.Application. Workbooks.Sheets(1) ’工作表 工作表下是Range,区域;Cells(row,col),'单元格 Word有: Word.Application ’Word程序对象 Word.Application.Documents ’文档 文档下有节、段落、句子、单词、字符对象。具体特征见下面表格。 前三个返回Range对象,能直接使用任何区域属性或方法修改该Range 对象。Paragraphs、Sections、Tables返回该集合的单个成员,而不是 Range 对象,不能直接使用区域属性或方法。如:Words(1)后面直接.Copy,而段落要写成Paragraphs(1).Range.Copy。之间多了一个Range。 ■知识点三:向Word中分段写入数据 With doc.Selection 'doc是前面声明的Word程序对象 ·TypeText方法:是在当前光标所在的位置入插要添加的文本内容。·TypeParagraph方法:是在当前光标所在的位置插入一个新的空白的段落,相当于ENTER 键。要在空白的word文档中逐段落的添加文本内容,可以先用TypeText方法插入文本,然后再用TypeParagraph方法插入下一个段落,如此循环即可。 (这里只讲本段代码用到的,具体更详细的用法,可看帮助文件。这里不再累赘)Word数据导入Excel就是一个反过程,创建Word对象、对Word文档的具体内容进行循环提取即可。 下面说个反向的例子,从Word取题目数据到Excel。这里我们只取题目,答案不取。 通过分析发现,用正则表达式再好不过。 Sub test() 还是前面说的,有了VBA基础,学习Word VBA很快,着重熟悉Word VBA的属性对象和方法。代码不会的可在Word中录制宏解决,再移植到Excel中。这样就可以以Excel为遥控器,操控Word进行各种数据交互。 下篇文章说下Word 中的表格Table对象,来总结下如何操控Word的表格数据。
|
|