寫了一個資料庫的小應用,會呼叫excel顯示資料庫資料,在自己的電腦一切正常(WIN764位,office2010),到客服機上就報錯:自動化錯誤,物件庫未注冊 錯誤處: Set XlsObj = CreateObject("Excel.Application") '創建EXCEL物件
客服機是win732位,office2007精簡版,然后我卸載office,安裝office2010后,故障依舊,懷疑是精簡版的問題,網上找了很久也沒有解決,求高手指點
uj5u.com熱心網友回復:
應該是那個Office 2010的問題。大概一年前,我的一個程式也是遇到這種問題,以為是“不兼容”。
我的辦公電腦: Win 7 32位專業版 + Office 2007,沒有問題;
同事的辦公電腦:Win 7 32位專業版 + Office 2010,不能創建物件。
作業系統Win 7是正版的,Office 是盜版(07是一個通用的序列號;10是注冊機激活)
但是在我自己家的電腦上(系統、Office ,大家都懂的…………
):Win 10( 64位專業版) + Office 2010(64位),程式仍然是運行正常。
可見并不存在“VB6不能兼容 Office 2010”的問題。
在安裝“Office精減版”的電腦上,都是不能“創建物件”的,
這個不用懷疑,因為它的“COM組件介面”被精減掉了的。
不知道你的“客戶”安裝的Office是32位還是64位的,實在不行你就讓他安裝Office 2007算了。

uj5u.com熱心網友回復:
哦,客戶的是 Win7 32位,只能是Office 2010 32位的。
uj5u.com熱心網友回復:
現在問題是無論裝哪個版本都提示物件庫未注冊,重裝office,精簡的com組件介面不重新安裝的么?怎么重裝或者注冊COM組件介面?uj5u.com熱心網友回復:
在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\regsvr32 xxxxxxx.ocx或dll
uj5u.com熱心網友回復:
精減版的應該是沒有COM組件及相關注冊資訊的。你先卸載,然后用注冊表工具清理一下注冊表,再重新啟動計算機后,安裝Office 2007試下。
uj5u.com熱心網友回復:
好像樓上說的都不太對。如果你用的是:dim aa as excel.application這樣的,那么你的程式中參考的就是你機子上的excel,并且類別庫是固定的,在vb編譯的時候是固定的類。
所以,你在自己機子上寫程式的時候可以這么用,在把程式分發到其他計算機(主要是office版本不同之類),需要修改那個dim,
修改為:
dim aaa as object
set aaa=createobjec("excel.application"),這樣在編譯的時候exe里面并沒有固定的參考,運行的時候系統會找到叫做excel的類去加載。
這個問題在msdn里面有說明,叫做前期系結和后期系結。
此外,office提供的物件具有差不多相同的介面,因此后期系結的物件可以通用不同的office版本
uj5u.com熱心網友回復:
這都幾個月前的貼了,createobjec("excel.application"),也不一定有用,精簡版一弄,系統都搞不正常了。uj5u.com熱心網友回復:
+1基本上是這個問題。
uj5u.com熱心網友回復:
這個就林靠哪些人把那個COM介面給恢復一下了,比如正常安裝OFFICE記下注冊表項,然后再精簡安裝OFFICE,,把正常的注冊表項復制過來,然后一個一個洗掉,,再重新參考,要是洗掉了打開參考的VB就不能用了,說明這一項是有用的。反正不是個簡單的事
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/60957.html
標籤:控件
