各位前輩,版主好。
本人在win10 64位家庭版用VB6編的程式在win7上運行不了,在一個同事的win10上也運行不了,具體如下:
本人系統平臺如下:win10家庭版,office 2013
1)我的程式在VB6平臺上撰寫,呼叫呼叫excel在用戶表單上輸入資料,并保存為excel 的xls格式檔案及制表符分隔的.txt檔案。
2)在setup factory 9.1下打安裝包,在大部份的win10下正常安裝運行,但在一個同事的win10家庭版及excel 2010上安裝正常,但運行時打不開我指定的excel檔案模板,回傳錯誤號為:-2147021892 ,程式代碼如下:On Error Resume Next Set ExlWorkBook = Exlapp.Workbooks.Open(App.Path & "\Spec_Upld_Template.xls")
3)在win7正安裝正常,運行時提“未預期錯誤”。
跪求大神指點,感謝,感謝,感謝!
uj5u.com熱心網友回復:
On Error Resume Next
程式中需要用到Excel等“第三方行程”來操作,竟然還敢 On Error Resume Next
用了這個,還想找到“錯誤原因”! 洗洗睡吧…………

uj5u.com熱心網友回復:
如何改進?請前輩指教!!uj5u.com熱心網友回復:
因為你基于2013的環境編譯,于是編譯后的東西呼叫2010出錯了。你要基于2010的環境編譯。然后再呼叫2013就穩了
uj5u.com熱心網友回復:
我覺得不是這么回事。

以前我以為用“靜態庫”程式,不同版本的“excel物件”可能會有問題。
不過前段時間我試了一下(靜態參考tlb,測驗Excel物件行程是否能正常創建):
WinXP+2003 編譯的程式,在Win 7 + 2007運行正常;
Win 7 +2007 編譯的程式,以WinXP + 2003下也同樣正常。
既然Excel物件行程成功創建了,其它操作基本沒什么問題了,
在我的程式中,主要就是讀、寫Excel檔案資料,基本沒有搞什么圖表、Shaps物件之類的。
不過,還是覺得,即使要搞這些操作,問題也應該不大,重點還是行程物件能否創建、啟動這兒。
別的我也不想多說了,反正這些,樓主都是無視的。
uj5u.com熱心網友回復:
試試不直接呼叫 Excel 組件,而是用 Jet Engine 將 Excel 檔案作為外部資料庫來處理。uj5u.com熱心網友回復:
On Error Resume Next之后還報錯,應該已經是程式的第二個錯誤了
看起來這個錯誤像是版本問題,
建議不要靜態參考,改用CreateObject動態創建物件試試
uj5u.com熱心網友回復:
我是用CreateObject, 如下:Private Sub Form_Load() '本應用啟動加載內容
'On Error Resume Next
Set Exlapp = CreateObject("Excel.Application") '新建Excel應用行程
'Set Exlapp = New excel.Application
welcome.inisms.Caption = "正在檢測Micosoft Excel Application 是否安裝..."
If Err Then
MsgBox "檢測到本機尚未安裝或未正確安裝 Micosoft Excel Application! 程式不能斷續運行!" & Chr(13) & "錯誤代碼:" & Err
Err.Clear
Unload welcome
End
End If
welcome.inisms.Caption = "正在加載Florens Datasheet 模板..."
Exlapp.DisplayAlerts = False '關閉Excel所有警告
'On Error Resume Next
Set ExlWorkBook = Exlapp.Workbooks.Open(App.Path & "\Spec_Upld_Template.xls") '打開本應用路徑下的Florens Upload File 模板
If Err Then
MsgBox "在本程式路徑下未找到 Spec_Upld_Template.xls 模板,系統不能初始化!即將終止運行!" & Chr(13) & "錯誤代碼:" & Err
Err.Clear
If welcome.Visible Then Unload welcome
ExlWorkBook.Close
Exlapp.DisplayAlerts = True
Exlapp.Quit
Set ExlWorkBook = Nothing
Set Exlapp = Nothing
End
End If
StatusBar1.Panels(1).Text = "Excel應用實體已創建,Spec_upld_Template.xls 模板已正確加載!"
SSTab1.TabEnabled(1) = False
SSTab1.TabEnabled(0) = True
SSTab1.Tab = 1
SSTab1.TabVisible(1) = True
VScroll1.Max = Cerworkspace.Height - ACspace.Height + 375
VScroll1.Min = 1
VScroll1.SmallChange = 380
VScroll1.LargeChange = 1900
SSTab1.Tab = 0
'Sleep 1000
Unload welcome
End Sub
uj5u.com熱心網友回復:
不一定的,關鍵看呼叫的函式或方法是否兼容。
比如一個 activex dll 1.0版本里面有一個原型為 test( a as string) as long 的函式。在2.0版本里這個函式改為 test( a as string, optional b as string) as long并且專案做了二進制兼容
那么參考了1.0版本的代碼編譯出來的exe放在注冊了2.0版本的電腦上,一切正常。
參考2.0版本編譯出來的,在注冊1.0版本的機器上,創建物件不會出錯,但一旦呼叫這個test就會出問題,即使只傳一個引數。
這種兼容問題曾經困擾我們公司很久,編譯一不小心就會出問題。后來專門寫了個程式來檢查所有com組件的兼容性。
uj5u.com熱心網友回復:
各位前輩,我的程式在個別win10打不開Spec_upld_Template.xls模板問題已解決,是因為同事的excel2010打開此模板提示模板視圖受保護(我的這個模板是加密保護的,防止更改),在打開打模板后確認打開后,再次在excel打開此模板就沒有提示視圖受保護了,再在程式匯入就正常了。謝謝各位的思路指引。感謝。但win7運行不了問題還在。uj5u.com熱心網友回復:
我在一個論壇上看到有其它的前輩說VB程式在win7上運行提示“未預期錯誤”問題是由于程式圖示不兼容32位的圖示,可有此事?我理解不了如此問題!!!uj5u.com熱心網友回復:
vb6在win7上跑因為兼容性問題吧!uj5u.com熱心網友回復:
win7的未預期錯誤有錯誤代碼么?uj5u.com熱心網友回復:
我都是在XP+Excel2003 環境下編譯的,到win7時,最不濟還可選擇 以XP兼容模式運行uj5u.com熱心網友回復:
各位好,本程式在win7平臺運行提示“未預期錯誤"問題已解決,問題歸咎為程式圖示不兼容,把圖示做為24位真彩后編譯,打包,安裝,在win7下運行正常了。謝謝各位。uj5u.com熱心網友回復:
圖示不兼容也會出現這個問題?算是見識了。我還以為是管理員權限問題呢uj5u.com熱心網友回復:
把Win7調整到classic mode可以試試看轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/43638.html
標籤:VB基礎類
