vb调用excel提示自动化错误,对象库未注册

[复制链接]
查看11 | 回复9 | 2021-1-27 06:05:16 | 显示全部楼层 |阅读模式
写了一个数据库的小应用,会调用excel显示数据库数据,在自己的电脑一切正常(WIN764位,office2010),到客服机上就报错:自动化错误,对象库未注册错误处:SetXlsObj=CreateObject("Excel.Application")'创建EXCEL对象
客服机是win732位,office2007精简版,然后我卸载office,安装office2010后,故障依旧,怀疑是精简版的问题,网上找了很久也没有解决,求高手指点
分 -->
回复

使用道具 举报

千问 | 2021-1-27 06:05:16 | 显示全部楼层
应该是那个Office2010的问题。
大概一年前,我的一个程序也是遇到这种问题,以为是“不兼容”。
我的办公电脑: Win732位专业版+Office2007,没有问题;
同事的办公电脑:Win732位专业版+Office2010,不能创建对象。
操作系统Win7是正版的,Office是盗版(07是一个通用的序列号;10是注册机激活)
但是在我自己家的电脑上(系统、Office,大家都懂的………… 

):
Win10(64位专业版)+Office2010(64位),程序仍然是运行正常。
可见并不存在“VB6不能兼容Office2010”的问题。
在安装“Office精减版”的电脑上,都是不能“创建对象”的,
  这个不用怀疑,因为它的“COM组件接口”被精减掉了的。
不知道你的“客户”安装的Office是32位还是64位的,实在不行你就让他安装Office2007算了。


回复

使用道具 举报

千问 | 2021-1-27 06:05:16 | 显示全部楼层
哦,客户的是Win732位,只能是Office2010 32位的。


回复

使用道具 举报

千问 | 2021-1-27 06:05:16 | 显示全部楼层
现在问题是无论装哪个版本都提示对象库未注册,重装office,精简的com组件接口不重新安装的么?怎么重装或者注册COM组件接口?
回复

使用道具 举报

千问 | 2021-1-27 06:05:16 | 显示全部楼层
在64位Windows下:
64位exe和dll在目录c:\windows\system32目录下;
32位exe和dll在目录c:\windows\syswow64目录下;
所以要注意:
在win64位系统下注册32位ocx或dll需要将32位ocx或dll拷贝到c:\windows\syswow64\目录下。
且注册要用c:\windows\syswow64\regsvr32xxxxxxx.ocx或dll

回复

使用道具 举报

千问 | 2021-1-27 06:05:16 | 显示全部楼层
精减版的应该是没有COM组件及相关注册信息的。
你先卸载,然后用注册表工具清理一下注册表,再重新启动计算机后,安装Office2007试下。


回复

使用道具 举报

千问 | 2021-1-27 06:05:16 | 显示全部楼层
好像楼上说的都不太对。
如果你用的是:dimaaasexcel.application这样的,那么你的程序中引用的就是你机子上的excel,并且类库是固定的,在vb编译的时候是固定的类。
所以,你在自己机子上写程序的时候可以这么用,在把程序分发到其他计算机(主要是office版本不同之类),需要修改那个dim,
修改为:
dimaaaasobject
setaaa=createobjec("excel.application"),这样在编译的时候exe里面并没有固定的引用,运行的时候系统会找到叫做excel的类去加载。
这个问题在msdn里面有说明,叫做前期绑定和后期绑定。
此外,office提供的对象具有差不多相同的接口,因此后期绑定的对象可以通用不同的office版本
回复

使用道具 举报

千问 | 2021-1-27 06:05:16 | 显示全部楼层
这都几个月前的贴了,createobjec("excel.application"),也不一定有用,精简版一弄,系统都搞不正常了。
回复

使用道具 举报

千问 | 2021-1-27 06:05:16 | 显示全部楼层
引用1楼Chen8013的回复:应该是那个Office2010的问题。
大概一年前,我的一个程序也是遇到这种问题,以为是“不兼容”。
我的办公电脑: Win732位专业版+Office2007,没有问题;
同事的办公电脑:Win732位专业版+Office2010,不能创建对象。
操作系统Win7是正版的,Office是盗版(07是一个通用的序列号;10是注册机激活)
但是在我自己家的电脑上(系统、Office,大家都懂的………… 

):
Win10(64位专业版)+Office2010(64位),程序仍然是运行正常。
可见并不存在“VB6不能兼容Office2010”的问题。
在安装“Office精减版”的电脑上,都是不能“创建对象”的,
  这个不用怀疑,因为它的“COM组件接口”被精减掉了的。
不知道你的“客户”安装的Office是32位还是64位的,实在不行你就让他安装Office2007算了。

+1
基本上是这个问题。
回复

使用道具 举报

千问 | 2021-1-27 06:05:16 | 显示全部楼层
这个就林靠哪些人把那个COM接口给恢复一下了,比如正常安装OFFICE记下注册表项,然后再精简安装OFFICE,,把正常的注册表项复制过来,然后一个一个删除,,再重新引用,要是删除了打开引用的VB就不能用了,说明这一项是有用的。
反正不是个简单的事
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行