VS 2008中操作Excel 2007的问题。
第一次涉及这个内容,向大家请教一下,在VS2008(VC++)中如何操作excel 2007。
1.过创建基于对话框的APP,然后在添加类中从类型库中导出excel 2007的函数,但是我不知道要导出哪些?
2.参考网上的代码(http://support.microsoft.com/kb/192348)后猜想可能是要导出_Application,所以选择导出了_Application,之后编译器生成了如下代码
- C/C++ code
// 从类型库向导中用“添加类”创建的计算机生成的 IDispatch 包装类#import "D:\\Program Files\\Microsoft Office\\Office12\\EXCEL.EXE" no_namespace// CApplication 包装类class CApplication : public COleDispatchDriver{public: CApplication(){} // 调用 COleDispatchDriver 默认构造函数 CApplication(LPDISPATCH pDispatch) : COleDispatchDriver(pDispatch) {} CApplication(const CApplication& dispatchSrc) : COleDispatchDriver(dispatchSrc) {} // 属性public: // 操作public: // _Application 方法public: LPDISPATCH get_Application() { LPDISPATCH result; InvokeHelper(0x94, DISPATCH_PROPERTYGET, VT_DISPATCH, (void*)&result, NULL); return result; } BOOL get_HighQualityModeForGraphics() { BOOL result; InvokeHelper(0x95b, DISPATCH_PROPERTYGET, VT_BOOL, (void*)&result, NULL); return result; }代码太多,中间的省略掉了。 void put_HighQualityModeForGraphics(BOOL newValue) { static BYTE parms[] = VTS_BOOL ; InvokeHelper(0x95b, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue); } // _Application 属性public:};看不懂是什么意思。
3. 如1,在使用_Application对象的cpp中引用2中定义的头文件后,编译出现错误,在debug文件夹下生成了一个excel.tlh文件,编译器报错,说是在这个文件中重复定义了很多变量。
最后,请教下大家,正确的做法是什么?
[解决办法]
#import "E:\Program Files\Common Files\Microsoft Shared\Office10\MSO.DLL"
#import "E:\Program Files\Common Files\Microsoft Shared\VBA\VBA6\VBE6EXT.OLB" \
rename_namespace("VBIDE")
#import "E:\Program Files\Microsoft Office\Office10\Excel.EXE" \
rename("DialogBox", "DialogBoxXL") \
rename("RGB", "RGBXL") \
rename("ExitWindows", "ExitWindowsXL") \
rename("DocumentProperties", "DocumentPropertiesXL") \
no_auto_exclude
[解决办法]
先导入MSO,VBE6EXT等相关,然后是excel...