excel插入图片的问题(十万火急),高分等待

时间:2022-01-31 14:34:38
我现在要在EXCEL下面做一个小的插件。使用的是ATL,开发工具为VC6。现在界面已经实现了。但现在遇到了问题。

1、我以前加入按钮的方法是用的类假代码
CComPtr < Office::_CommandBars> spCmdBars; 
CComQIPtr <MSExcel::_Application> spApp(Application); 
ATLASSERT(spApp);

并未利用从类型库中导入EXCEL.EXE生成的那些类,现在我想用同样的方法如果CComPtr或CComQIPtr 来取得当前的WorkSheet,不知道如何处理,spApp->GetActiveSheet()返回的值有问题,无法转换成我需要的类型。即如何用智能指针获取到我需要的各种
类型,如WorkBooks,WorkBook,WorkSheets,WorkSheet,Range,Picture等类型。(从VBA相关资源中大概能推出相应的函数名称,但我不知道如何找到他们各自己的引用前缀,如Office, MSExcel,...)。
2、实现第一步后,如何插入一个图,且是透明的。该图片不会被EXCEL中的任何东西给挡住,能透过文字与线条显示出来。并能被鼠而移动,但不能被编辑。



关于第一个问题,因为我要生成一个DLL,我不清楚从excel.exe中导入类的方法是否更适合于我这个程序。
第二个问题,我知道有点麻烦,如果能有人提示下,将不盛感激。
忘高手指点一二。

5 个解决方案

#1


顶上去

#2


没有人遇到过这种问题吗???难道都是通过导入类型库,生成相关的类后,进行操作的吗?

#3


好多天啦,不过,俺不懂VC6,帮顶吧


不过,瞎说了:
1、range的前缀是worksheet,而worksheet的前缀是workbook,workbook的前缀是excel.application
在vba里,先创建一个excel.application对象,可以用createobject,也可以用new的方法(在vc6里不知怎么做),然后再创建workbook对象以及worksheet对象等等...


2、在excel里好像无法直接设置图片对象的透明度,需要通过其它类型的shape,如先画一个矩形,然后再设置自定义填充效果及透明度... ...

建议:先在vba里录制宏,然后再“翻译”成vc6的代码

#4


谢谢ChinaOBS,总算有人帮顶了....VC里面是可以用这些对象,但我看好像都是OLE方式的.需要生成一个EXCEL文件,然后对该文件进行各种操作.我的是一个插件,在EXCEL一运行就能操作的.我不清楚,怎么将这些WorkBook,WorkSheet,Shape,Range等对象与ATL中的那些智能指针联系起来.特别是Application这个对象,我如果不通过创建EXCEL文件的方式,该怎么从智能指针CComQIPtr获取呢?

#5


第一个问题我基本知道该怎么处理了,第二个问题该如何处理呢?如何生成一个透明的图片呢?

#1


顶上去

#2


没有人遇到过这种问题吗???难道都是通过导入类型库,生成相关的类后,进行操作的吗?

#3


好多天啦,不过,俺不懂VC6,帮顶吧


不过,瞎说了:
1、range的前缀是worksheet,而worksheet的前缀是workbook,workbook的前缀是excel.application
在vba里,先创建一个excel.application对象,可以用createobject,也可以用new的方法(在vc6里不知怎么做),然后再创建workbook对象以及worksheet对象等等...


2、在excel里好像无法直接设置图片对象的透明度,需要通过其它类型的shape,如先画一个矩形,然后再设置自定义填充效果及透明度... ...

建议:先在vba里录制宏,然后再“翻译”成vc6的代码

#4


谢谢ChinaOBS,总算有人帮顶了....VC里面是可以用这些对象,但我看好像都是OLE方式的.需要生成一个EXCEL文件,然后对该文件进行各种操作.我的是一个插件,在EXCEL一运行就能操作的.我不清楚,怎么将这些WorkBook,WorkSheet,Shape,Range等对象与ATL中的那些智能指针联系起来.特别是Application这个对象,我如果不通过创建EXCEL文件的方式,该怎么从智能指针CComQIPtr获取呢?

#5


第一个问题我基本知道该怎么处理了,第二个问题该如何处理呢?如何生成一个透明的图片呢?