以前寫的一個VBA腳本,在EXCEL2010中運行正常,可以達成目 標,最近裝了office2013 64位的版本,再運行這個腳 本就提示出錯
錯誤429 ActiveX部件不能創建物件
從網上搜索了一下,有的說是64位的office不支持ActiveX, 如果真這樣就悲劇了
有的說是office2013的一個問題,有專門的fix it, 不過我沒找到.
我也嘗試更新office2013,把所有的更新都安裝了.還是這個錯誤.
所以想再次請教各位,是否有好的解決辦法?

uj5u.com熱心網友回復:
請樓主先看一下這個按鈕背后的宏代碼,貼出來或者將附件上傳
uj5u.com熱心網友回復:
不要提什么dll檔案沒注冊的原因,因為在這臺電腦上,安裝有k3ERP,且可以正常使用,這里只是呼叫K3的組件,之前裝的是office2010,不會出這個錯誤,可以正常的執行VBA腳本,現在是更新到了64位office2013,就出了這個問題
相關的代碼
Public Conn As New ADODB.Connection
Public K3Login As Object
Public strFileName, strBillType As String
'首先呼叫K3的登陸組件做登陸K3的操作,取得連接資料庫的字串,完成與資料庫的連接
'然后打開要匯入的EXCEL表
'再根據打開的表的匯入對應的資料(客戶/供應商,銷售發票/采購發標內容,銷售清單/采購清單)
'最后關閉連接
Sub K3ErpLogin()
Dim strConn As String
Set K3Login = CreateObject("K3Login.ClsLogin")
If Not K3Login.CheckLogin Then
MsgBox "連接不成功"
Set K3Login = Nothing
End
End If
strConn = Split(Split(K3Login.PropsString, "}")(0), "{")(1)
Set K3Login = Nothing
Conn.
uj5u.com熱心網友回復:
還就是這個問題,64位的Excel,無法使用32位的DLL,無解。
uj5u.com熱心網友回復:
不要做A語言代碼修改為B語言代碼的無用功。也不要做用A語言代碼直接呼叫B語言代碼庫這樣復雜、這樣容易出錯的傻事。
只需讓A、B語言代碼的輸入輸出重定向到文本檔案,或修改A、B語言代碼讓其通過文本檔案輸入輸出。
即可很方便地讓A、B兩種語言之間協調作業。
比如:
A將請求資料寫到檔案a.txt,寫完后改名為aa.txt
B發現aa.txt存在時,讀取其內容,呼叫相應功能,將結果寫到檔案b.txt,寫完后洗掉aa.txt,再將b.txt改名為bb.txt
A發現bb.txt存在時,讀取其內容,讀完后洗掉bb.txt
以上A可以替換為任何一種開發語言或開發環境,B可以替換為任何一種與A不同的開發語言或開發環境。
除非A或B不支持判斷檔案是否存在、檔案讀寫和檔案更名。
但是誰又能舉出不支持判斷檔案是否存在、檔案讀寫和檔案更名的開發語言或開發環境呢?
可以將臨時檔案放在RamDisk上提高效率減少磨損磁盤。
資料的結構很復雜的話,文本檔案的格式問題可參考json或xml
共享臨時文本檔案這種行程之間的通訊方法相比其它方法的優點有很多,下面僅列出我現在能想到的:
·行程之間松耦合
·行程可在同一臺機器上,也可跨機,跨作業系統,跨硬體平臺,甚至跨國。
·方便除錯和監視,只需讓第三方或人工查看該臨時文本檔案即可。
·方便在線開關服務,只需洗掉或創建該臨時文本檔案即可。
·方便實作分布式和負載均衡。
·方便佇列化提供服務,而且幾乎不可能發生佇列滿的情況(除非硬碟空間滿)
·……
“跨語言、跨機,跨作業系統,跨硬體平臺,跨國,跨*.*的”苦海無邊,
回頭是“使用共享純文本檔案進行資訊交流”的岸!
請自行將以上A語言替換為64位的Excel,B語言替換為32位的DLL。
uj5u.com熱心網友回復:
我在呼叫wmp時也遇到同樣問題,在excel內預先手動插好activex,然后對這個預先插入的物件進行操作就可以用。這是一種妥協方案。肯定有更好的解法。轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/40423.html
標籤:VBA
