• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >vc/mfc > [高分请教]VC++2005下导入Excel的TypeLibrary类型库问题

[高分请教]VC++2005下导入Excel的TypeLibrary类型库问题

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-04

佚名通过本文主要向大家介绍了vc++ runtime library,vc++6.0官方下载,vc++,vc++辅助,vc++设置图标等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: [高分请教]VC++2005下导入Excel的Type Library类型库问题
描述:

我在通过自动化调用Excel时遇到了问题,希望高手帮忙解决一下。
开发用的环境是Windows xp sp2, Visual studio 2005, Office2003
以前用Visual studio 2002 和 2003 都没有问题,通过导入类型库调用
Excel一点问题都没有,但是使用VS2005问题就出来,google了半天,
也有人遇到同样问题,但是没有任何有效的解决办法。估计是2005才出来
的原因吧。
问题描述如下:
通过VS2005的添加类功能,选择Typelib类添加,
选择“Microsoft Excel 11.0 Object Library<1.5>”
选择接口_Application, _Workbook, _Worksheet,
由接口生成类CApplication, CWorkbook, CWorksheet.
如果单纯使用这三个类的话也没有什么问题,一切和以前一样没有问题。
但是如果选择接口Workbooks,Worksheets,生成类CWorkbooks, CWorksheets.
这个时候问题就出现了。
由此生成的头文件前面都加上了#import "C:\\Program Files\\Microsoft Office\\OFFICE11\\EXCEL.EXE"
这和以前的版本是不一样的,以前的VS版本没有这一句,应该是VS2005的新特性。
就这么使用的话,一编译会出现大量的错误,
由以前的经验可以知道是由于命名冲突导致的。于是使用rename进行重命名,
以前的错误虽然不出现了,但是又出现新的错误,于是定义namespace,还是不行,
我基本上所有能想到的组合都使用过了,还是错误。
试验中的头文件一部分代码如下:
#import "C:\\Program Files\\Common Files\\Microsoft Shared\\OFFICE11\\MSO.DLL" \
    rename("RGB", "ExclRGB") \
    rename("DocumentProperties", "ExclDocumentProperties") \
    rename("SearchPath", "ExclSearchPath")
#import "C:\\Program Files\\Common Files\\Microsoft Shared\\VBA\\VBA6\\VBE6EXT.OLB" 
#import "C:\\Program Files\\Microsoft Office\\OFFICE11\\EXCEL.EXE" \
    rename("DialogBox", "ExclDialogBox") \
    rename("RGB", "ExclRGB") \
    rename("CopyFile", "ExclCopyFile") \
    rename("ReplaceText", "ExclReplaceText")
using namespace Excel;
察看了自动生成的头文件CWorkbooks.h里面的一个函数
Application get_Application()
{
Application result;
InvokeHelper(0x94, DISPATCH_PROPERTYGET, VT_DISPATCH, (void*)&result, NULL);
return result;
}
而VS2005以前的版本生成的代码如下:
LPDISPATCH get_Application()
{
LPDISPATCH result;
InvokeHelper(0x94, DISPATCH_PROPERTYGET, VT_DISPATCH, (void*)&result, NULL);
return result;
}
当然还有其他的不同。
估计就是由这个新类型Application导致的问题。
如果头文件不做任何修改如下
#import "C:\\Program Files\\Microsoft Office\\OFFICE11\\EXCEL.EXE" no_namespace
那么产生的一部分代表性错误如下:
c:\work\powerpointautomation\autoproject\autoproject\capplication.h(3) : warning C4278: 'RGB': identifier in type library 'C:\\Program Files\\Microsoft Office\\OFFICE11\\msppt.olb' is already a macro; use the 'rename' qualifier
c:\work\powerpointautomation\autoproject\autoproject\debug\msppt.tlh(414) : error C2371: 'FontPtr' : redefinition; different basic types
c:\program files\microsoft visual studio 8\vc\include\comdef.h(312) : see declaration of 'FontPtr'
c:\work\powerpointautomation\autoproject\autoproject\debug\msppt.tlh(1130) : error C2146: syntax error : missing ';' before identifier 'GetRGB'
c:\work\powerpointautomation\autoproject\autoproject\debug\msppt.tlh(1963) : error C2061: syntax error : identifier 'MsoRGBType'
这个问题困扰我很长时间了。微软这套东西是越来越复杂化,这样下去完全跟不上了。
请高手帮组解决这个问题。谢谢大家。


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • VC++2005下导入Excel的TypeLibrary类型库问题
  • [高分请教]VC++2005下导入Excel的TypeLibrary类型库问题

相关文章

  • 2017-06-04 ATLvs2003加变量
  • 2017-06-04 DataGrid和MSChart控件的动态创建不成功
  • 2017-06-04 关于外部程序调用VC++的问题~~~大家来讨论讨论
  • 2017-06-04 如何使用用ATL编写的COM组件Dll?
  • 2017-06-04 大侠救我!!!!!!!关于mediaplayer控件问题
  • 2017-06-05 請VC++高高手討論﹐絕對難得問題﹐結果正確﹐但是就是不知道是怎麼實現的﹐我們公司的高手全上了﹐可是還是沒得出結論﹗﹗
  • 2017-06-05 请问如何制定一个线程完成特定的任务
  • 2017-06-05 关于WaitForSingleObject
  • 2017-06-05 如何使在子线程下创建的定时器在该线程结束后还有效。(应用场合:类似于在辅助扫描线程里发现某些问题后开始报警的应用)3Q!!!!
  • 2017-06-05 MFC镶入的web浏览器如何屏蔽脚本错误信息窗口?

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 关于ComputerSystemHardwareClasses的使用问题
    • 问gina中关于当前域的信息的问题(注册表高手也请帮忙看一看)
    • encodersdk90的问题,来者有分
    • 多线程数据共享的问题。
    • DLL中参数传递问题
    • 如何删除WM_TIMER消息
    • 在扩展dll里面做了一个对话框,可是怎么总是编译说没有定义IDD
    • 我要免费让大家使用我的控件HttpPost,请进!!(就是帮你提交网页,ATL开发)
    • 如何启动一个新线城?在线等待!谢谢!
    • CoCreateInstance在exe中成功调用,但在ActiveX控件中调用总是出错

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有