环境:VS2008 SP1+Excel 2007
加入OLE Type Library
随便建立一个MFC程序,选添加类,Typelib中的MFC类,出来一个对话,可用类型库选“Microsoft Excel 12.0 Object Library”
一般来说,添加下边这些类就够了,当然也可以全部添加
CApplication
CWorkbook
CWorkbooks
CWorksheet
CRange
CWorksheets
CPicture
CPictures
CBorder
CBorders
CFont0
Cnterior
包含头文件的时候,把CApplication.h放到最前面
一个操作的例子

void CExcelTest2Dlg::OnBnClickedButton1()














































































































接下来开始编译,哇,一大堆错误...
e:\myprograms3\exceltest2\exceltest2\debug\excel.tlh(1461) : error C2371: “FontPtr”: 重定义;不同的基类型 等等
把CApplication.h里的#import "C:\\Program Files\\Microsoft Office\\Office12\\EXCEL.EXE" no_namespace
改为#import "C:\Program Files\Microsoft Office\OFFICE12\excel.exe" exclude("IFont", "IPicture") rename("RGB", "ignorethis"), rename("DialogBox", "ignorethis"), rename("VBE", "GREATWSVBE")
rebuild all
e:\myprograms3\exceltest2\exceltest2\debug\excel.tlh(2036) : error C2504: “_IMsoDispObj”: 未定义基类
应该是接口没定义,mso.dll这个接口,在CApplication.h最上面加入#import "C:\Program Files\Common Files\Microsoft Shared\OFFICE12\mso.dll"
rebuild all 错误少多了
还有VBE之类的错误,改法:
加入
#import "C:\Program Files\Common Files\Microsoft Shared\VBA\VBA6\VBE6EXT.OLB" raw_interfaces_only, rename("Reference", "ignorethis"), rename("VBE", "GREATWSVBE")
注意自己机器的路径!
剩下还有一些rename 的警告,可以在相关import后面几上rename("XXX","XXXXX")
本人也是初学OLE操作excel,希望能和大家一起讨论。