MFC操作office通用分析方法
序
Word和Excel都是我们在日常中常常用到的工具,当然大部分的操作都可以手动完成。但是有时候,有的重复性的统计操作是很繁琐的,比如如下的例子:
我们图一的Excel表格存储了很多人员信息,要利用这个Excel做成图二的准考证,如果只有1,2个人还好办,如果有很多人,我们可能就需要利用VB,VC的帮助了。
图一
图二
一.MFC操作Office的通用分析方法:
Offcie系列的API函数超级多,而且MSDN上的解释都是VB的,所以为了应对各种各样的操作,我们有一种通用的方法,就是利用宏,宏录制的代码是VB的,但VB的函数和VC的通常都差不多,唯一比较麻烦的是宏的值,但是可以利用MsgBox来查看。下面是一个例子:
比如图二的图,我想要复制多份,
第一步:点击Word的工具->宏->录制新宏,然后进行复制操作。
第二步:点击Word的工具->宏->Visual Basic编辑器,就可以看到刚才录制的宏:
- Selection.MoveDown Unit:=wdLine, Count:=10, Extend:=wdExtend
- Selection.Copy
- Selection.MoveDown Unit:=wdLine, Count:=1
- Selection.TypeParagraph
- Selection.MoveUp Unit:=wdLine, Count:=1
- Selection.PasteAndFormat (wdPasteDefault)
- Selection.PasteAndFormat (wdPasteDefault)
- End Sub
这里有很多宏,比如wdLine,wdExtend,wdPasteDefault,我们可以在VB代码中加入MsgBox wdPasteDefault来看到wdPasteDefault对应的值是多少。
第三步:对照word引入的API函数可以看到对应的函数原型:
- long MoveDown(VARIANT* Unit, VARIANT* Count, VARIANT* Extend);
- void Copy();
- void TypeParagraph();
- long MoveUp(VARIANT* Unit, VARIANT* Count, VARIANT* Extend);
- void PasteAndFormat(long Type);
下面将VB代码改造为VC代码:
- Selection m_selection = ……(前期初始化)
- m_selection.MoveDown(COleVariant(5), COleVariant((short)10),COleVariant((short)1));
- m_selection.Copy();
- m_wdSel.MoveDown(COleVariant(5), COleVariant((short)1),COleVariant((short)0));
- m_wdSel. TypeParagraph();
- m_wdSel.MoveUp(COleVariant(5), COleVariant((short)1),COleVariant((short)0));
- m_wdSel.PasteAndFormat(0);
- m_wdSel.PasteAndFormat(0);
记住,宏变量用MsgBox来查看。
三.如何使用 Office 类型库
类型库与 C/C++ 头文件类似。它包含服务器发布的接口、方法和属性。您可以使用Visual C++ 附带的 OLE/COM 对象查看器 (Oleview.exe) 来查看类型库。下面列出了Microsoft Office 95、Microsoft Office 97、Microsoft Office 2000 和 Microsoft Office XP的类型库文件名:
Office 应用程序 | 类型库 |
Word 95 及更低版本 | wb70en32.tlb |
Excel 95 及更低版本 | xl5en32.olb |
PowerPoint 95 及更低版本 | PowerPoint.tlb |
Access 95 及更低版本 | msaccess.tlb |
Binder 95 | binder.tlb |
Schedule+ | sp7en32.olb |
Project | pj4en32.olb |
Team Manager | mstmgr1.olb |
Word 97 | msword8.olb |
Excel 97 | excel8.olb |
PowerPoint 97 | msppt8.olb |
Access 97 | msacc8.olb |
Binder 97 | msbdr8.olb |
Graph 97 | graph8.olb |
Outlook 97 | msoutl8.olb |
Outlook 98 | msoutl85.olb |
Word 2000 | msword9.olb |
Excel 2000 | excel9.olb |
PowerPoint 2000 | msppt9.olb |
Access 2000 | msacc9.olb |
Outlook 2000 | msoutl9.olb |
Word 2002 | msword.olb |
Excel 2002 | excel.olb |
PowerPoint 2002 | msppt.olb |
Access 2002 | msacc.olb |
Outlook 2002 | msoutl.olb |
Office Word 2003 | msword.olb |
Office Excel 2003 | excel.exe |
Office PowerPoint 2003 | msppt.olb |
Office Access 2003 | msacc.olb |
Office Outlook 2003 | msoutl.olb |
三.参考网站
在开发过程中,有很多网站都有参考价值,这是我收集的一些网站:
MSDN官方参考:http://msdn.microsoft.com/zh-cn/library/y1xatbkd(v=vs.80).aspx
WPS API参考:http://www.wps.cn/wpsapi/treeshow/tree-ET.htm
Excel操作参考:http://blog.sina.com.cn/s/blog_6c3d32da0100u9dw.html
Word操作参考:http://www.vckbase.com/document/viewdoc/?id=1174
VARIANT、COleVariant 和_variant_t类型:http://blog.csdn.net/whf727/article/details/1883663