读书人

win7出现ActiveX component canamp;#x27;

发布时间: 2013-02-15 15:46:56 作者: rapoo

win7出现ActiveX component can't create object
将listview的内容导出到excel保存,下面这段代码在xp的excel2003下正常导出,可到win7的excel2007
就出现ActiveX component can't create object提示,不知道是怎么回事,网上找了很久,都没有解决方案。


Dim i As Integer
Dim ex As Object
Dim ExWbook As Object
Dim ExSheet As Object
Set ex = CreateObject("Excel.Application")
Set ExWbook = Nothing
Set ExSheet = Nothing
Set ExWbook = ex.Workbooks().Add
Set ExSheet = ExWbook.Worksheets("Sheet1")
ex.Range("A" & 1).Value = ListView1.ColumnHeaders(1).Text
ex.Range("B" & 1).Value = ListView1.ColumnHeaders(2).Text
ex.Range("C" & 1).Value = ListView1.ColumnHeaders(3).Text
ex.Range("D" & 1).Value = ListView1.ColumnHeaders(4).Text
ex.Range("E" & 1).Value = ListView1.ColumnHeaders(5).Text
ex.Range("F" & 1).Value = ListView1.ColumnHeaders(6).Text
ex.Range("G" & 1).Value = ListView1.ColumnHeaders(7).Text
ex.Range("H" & 1).Value = ListView1.ColumnHeaders(8).Text
For i = 2 To ListView1.ListItems.Count + 1
ex.Range("A" & i).Value = ListView1.ListItems(i - 1).Text
ex.Range("B" & i).Value = ListView1.ListItems.Item(i - 1).SubItems(1)
ex.Range("C" & i).Value = ListView1.ListItems.Item(i - 1).SubItems(2)
ex.Range("D" & i).Value = ListView1.ListItems.Item(i - 1).SubItems(3)
ex.Range("E" & i).Value = ListView1.ListItems.Item(i - 1).SubItems(4)
ex.Range("F" & i).Value = ListView1.ListItems.Item(i - 1).SubItems(5)
ex.Range("G" & i).Value = ListView1.ListItems.Item(i - 1).SubItems(6)
ex.Range("H" & i).Value = ListView1.ListItems.Item(i - 1).SubItems(7)
Next i
ExSheet.Columns("A:H").AutoFit
On Error Resume Next
ExWbook.SaveAs App.Path & "\Excel\" & Format(Now, "yyyy-mm-dd") & ".xls"
On Error GoTo 0
ex.Quit
Set ex = Nothing

[解决办法]
在工程中,对excel的引用去除
[解决办法]
首先,确保 Office 2007 是用了完全安装而不是即需安装。
其次,用 regedit 确认一下(手边只有 Office 2003,版本号是推测出来的,以实际为准):
 HKEY_CLASSES_ROOT\Excel.Application\CurVer\ 的默认值应该是 "Excel.Application.12" 吧;


 HKEY_CLASSES_ROOT\Excel.Application.11\CLSID\ 和 HKEY_CLASSES_ROOT\Excel.Application\CLSID\ 的默认值应该相同。
再次,可能是插件问题,参考 http://ju.xin.blog.163.com/blog/static/38296516201010241011775/
还有,用 Word.Application 创建对象试试是否成功,确定是否仅仅是 Excel 的问题。
[解决办法]
你的程序本来就是依赖别人的程序而开发的,这种依存关系对运行环境的要求是很高的,所以出现这种问题一点也不奇怪,应该是在你使用这种技术架构的时候就应该预料到的问题。要想彻底解决这类问题,最好的办法就是不要这样依存别人的程序来开发自己的软件,这就不会受限于别人程序是否安装或安装的版本环境问题。对于Excel 的数据文件应用,其实网上也有很多源码可以直接处理的,比如 WEB 开发上就有可以动态生成 Excel 文件供别人下载数据的东西,而且还开源。起码我见过 PHP 的,支持 Excel、Word、PDF 等等多种文件的动态处理模块,里面有完整的文件格式和相关处理类的代码,如果把这种东西转换成自定义类来处理,就不用担心别人的系统是否安装 Office 或安装的版本是什么而烦恼了,当然也不会出现这种组件、控件的版本或兼容性问题。

读书人网 >VB

热点推荐