首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

win7出现ActiveX component can't create object,该怎么处理

2013-02-15 
win7出现ActiveX component can't create object将listview的内容导出到excel保存,下面这段代码在xp

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 或安装的版本是什么而烦恼了,当然也不会出现这种组件、控件的版本或兼容性问题。

热点排行