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