(前年11月就说要写这篇技术日志了,一直拖到今天,直到自己觉得再不写会忘掉的时候。唉,现在自己果然是很懒啊,争取以后能一个星期写一篇,我是不是应该到CSDN去写呢?总是感觉在校内写技术日志不伦不类……)
---------------------------------------
首先,把我参考的两个地址放上来,博主写到很好,我这里只是把学到的东西做记录自己备查而已。
用Visual C++操纵MS Word:
http://www.cnblogs.com/scq2099yt/archive/2008/01/07/1028697.html
MFC/VC++调用word进行报表制作:
http://www.cnblogs.com/scq2099yt/archive/2008/01/07/1028717.html
其次,说说重点:
重点就是怎么把VBA_Sub MyReporter.bas里的VBA代码转换成WORD.OLE代码,上面的两篇文章写的很好,照着一步一步做就成了。
下面,一步一步开始吧:
1. 首先,要打开Word的宏记录功能。
备注:在Word中,使用VBA为脚本的宏,可以使文件具有一定逻辑处理功能。例如自动生成及处理数据等。
2. 然后创建一个新宏
3. 记录一个宏,在记录好以后,可以对宏进行简单的编辑,想调试看运行结果时,点击“运行”按钮。这一步很重要,在把这个VBA脚本翻译成C++可执行的代码前,这里的逻辑就是最后生成Word文档的逻辑,因此,要仔细调试,把其中没有必要的步骤去除,尽量精简生成文档的步骤。
4. 在最终获得一个这样的脚本后,就可以准备开始C++的编程了,这里,贴出我完成的脚本(为了不公开项目里的数据,这里我稍做改动,把数据相关的内容全部替换了)
Sub MyReporter()
Documents.Add DocumentType:=wdNewBlankDocument ' //生成一个空文档
Selection.TypeText Text:="某某报表" ' //输入第1行内容
Selection.TypeParagraph ' //换行
Selection.TypeText Text:="行1:" ' //输入第2行内容
Selection.TypeParagraph ' //换行
Selection.TypeText Text:="行2:" ' //输入第3行内容
Selection.TypeParagraph ' //换行
Selection.TypeText Text:="行3:" ' //输入第4行内容
Selection.TypeParagraph ' //换行
Selection.TypeText Text:="行4:" ' //输入第5行内容
Selection.TypeParagraph ' //换行
Selection.TypeText Text:="行5" ' //输入第6行内容
Selection.TypeParagraph ' //换行
' //添加一个6行4列的表格,使用默认样式
ActiveDocument.Tables.Add Range:=Selection.Range, NumRows:=6, NumColumns:= _
4, DefaultTableBehavior:=wdWord9TableBehavior, AutoFitBehavior:= _
wdAutoFitFixed
' //添加表的内容并设置表的格式
' //输入表内第1行内容
Selection.TypeText Text:="列1" ' //输入第1列内容
Selection.MoveRight Unit:=wdCharacter, Count:=1 ' //向右移动鼠标到下一列
Selection.TypeText Text:="列2" ' //输入第2列内容
Selection.MoveRight Unit:=wdCharacter, Count:=1 ' //向右移动鼠标到下一列
Selection.TypeText Text:="列3" ' //输入第3列内容
Selection.MoveRight Unit:=wdCharacter, Count:=1 ' //向右移动鼠标到下一列
Selection.TypeText Text:="列4" ' //输入第4列内容
' //输入表内第2行内容
Selection.MoveDown Unit:=wdLine, Count:=1 ' //向下移动鼠标到下一行
Selection.MoveLeft Unit:=wdCharacter,