台灣最大程式設計社群網站
線上人數
1131
 
會員總數:245228
討論主題:189098
歡迎您免費加入會員
討論區列表 >> office VBA / WinOS >> Excel VBA 執行階段錯誤
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
Excel VBA 執行階段錯誤
價值 : 20 QP  點閱數:275 回應數:6

樓主

Noah Levitt
門外漢
0 1
10 2
發送站內信

捐贈 VP 給 Noah Levitt
請問我的電腦使用Office2016,
在使用一個過去版本編輯的Excel檔,在Auto_Open就出現執行階段錯誤32809,若另存為xlsm檔則出現執行階段錯誤57121
(1) runtime error 32809 應用程式或物件定義上的錯誤
(2) runtime error 57121 應用程式或物件定義上的錯誤

爬文試過不少解決方案還是無法解決,包含下載更新檔
DLL及OCX重新在syswow64/system32註冊,確認引用項目沒有遺漏

目前使用過兩台Office2016的電腦都這樣,用另一台Office2007的則會說檔案毀損已修復,然後VB的Code全沒了。
感覺是跟控制項相關的問題,但應該是我電腦設定遺漏了什麼,可以請益版上各位大神嗎? 感恩

檔案連結如下:
http://easywin.yuantafutures.com.tw/download/%E4%BA%A4%E6%98%93APIExcel%E7%AF%84%E4%BE%8B.zip

搜尋相關Tags的文章: [ VBA ] , [ 控制項 ] , [ 執行階段錯誤 ] , [ 32809 ] , [ 57121 ] ,
本篇文章發表於2019-08-27 22:34
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
回應

P陳
檢舉此回應
1.堶惘釩雃h按鈕要按那一個
2.我按登入後被告知 沒有->YuantaOrd1
本篇文章回覆於2019-08-28 08:31
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
作者回應

Noah Levitt
捐贈 VP 給 Noah Levitt 檢舉此回應
YuantaOrd1 是要註冊DLL後才能使用的裡面函式,需要到元x期貨官網下載http://easywin.yuantafutures.com.tw/api/download.html
不過,要讓大大去試那個就太麻煩了
我主要是想問: 在按登入按鈕就發生錯誤,就是ThisWorkBook裡面Private Sub Workbook_Open() 逐行偵的話第一行就32809了

大大可以進行到按登入的步驟,是不是代表您Workbook_Open那邊沒有runtime error呢? 若是沒錯的話,請問是不是我的控制項或引用
部分出了什麼問題,感謝大大。

P.S. Excel已用管理者權限執行,安全性調到最低,啟用全部巨集與控制項
本篇文章回覆於2019-08-28 11:31
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
作者回應

Noah Levitt
捐贈 VP 給 Noah Levitt 檢舉此回應
暫時解決 runtime error 32809與57121,是從壓縮檔打開就把引用設好再另存,其實也不知道為什麼,誤打誤撞

但後續又有新問題是,登入後出現runtime error 424
如下2019/8/28 下午 04:57:41:424:此處需要物件,該段程式碼如下:
錯誤出現在result=YuantaOrd這行,請問如果瀏覽物件找的到YuantaOrd 以及其成員的說明,是不是就代表有引用成功
為什麼又會出現424此處需要物件呢? 感謝各位大大

Private Sub LogonBt_Click()
Dim result As Long
On Error GoTo ErrHandler
edErrHandler.Text = ""
WaitFlag = True
checkio = False
totalcancelflag = False

result = YuantaOrd.SetFutOrdConnection((LogonID.Text), (LogonPass.Text), (ConnIP.Text), (ConnPort.Text))

ConnResult.Text = Now & ":" & CStr(result)

ErrHandler:
If Err.Number <> 0 Then
edErrHandler.Text = Now & ":" & CStr(Err.Number) & ":" & Err.Description
End If
End Sub
本篇文章回覆於2019-08-28 17:02
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
回應

P陳
檢舉此回應
分二個狀況:
1.在壓縮檔中直接執行的話 是可以到 YuantaOrd1 那句,有沒有經過 BookWork_open 我就不知道了。

2.要存檔被告知版本問題,某些 actx 不會存檔,存檔後。再執行就出現 32809的問題。
本篇文章回覆於2019-08-28 17:44
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
回應

P陳
檢舉此回應
另一個沒有物件的問題
((LogonID.Text), (LogonPass.Text), (ConnIP.Text), (ConnPort.Text))
是指 Logonid.TexT LogonPass.Text ... 等等的其中之一找不到
本篇文章回覆於2019-08-28 17:45
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
回應

羅伯斯
檢舉此回應
從樓主的描述,若是Office 2007版開啟時,跳出訊息指出"檔案毀損已修復",但在Office 2016版出現"程式或物件定義上的錯誤"訊息。
有兩種可能:
1. 檔案確實毁損,但修復時並不完整,以至於VBA程式碼全沒了。
2. 檔案版本太老舊,Office 2016無法相容。(因為2007版的檔案與2010年版之後的檔案格式,並並不一樣。)

若是第一種狀況,除非檈主有辦法取得原有的程式碼貼回去,或是樓主本身有能力重新撰寫程式碼,否則是無解的,因為要救回來的可能性等於0。
若是第二種狀況,樓主可以試試改用與Office 2007年代相差較小的版本,如Office 2010版執行看看,若是與Office 2016的狀況相同,同樣是無解。反之若可以正常開啟,且程式碼也在,那就先另存一份Office 2010版的檔案。(Office 2010版以後的檔案格式是一樣的)

PS. 個人推斷第一種狀況的可能性較高,樓主的檔案是下載取得的嗎?若是的話,重新下載看看,有時候下載的檔案會因網路傳輸問題,造成下載的檔案有問題,若檔案沒有問題,重新下載一般都可以解決。
本篇文章回覆於2019-10-17 03:02
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.