日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

VB 6.0中如何访问EXCEL 2007及EXCEL 2010

發布時間:2025/7/14 73 豆豆
生活随笔 收集整理的這篇文章主要介紹了 VB 6.0中如何访问EXCEL 2007及EXCEL 2010 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

問題及分析過程


最近一段時間在使用VB 6.0開發一個OFFICE考試系統,理想的情況是支持WINDOWS XP,WINDOWS 7,WINDOWS 8,Office 2003和Office 2010。之所以,選擇VB 6主要原因是使用VBA錄制的宏可以經過簡單精簡即可應用于VB6程序中。另外,VB6的體積也小,而且其他幾位老師都易于上手。

但是,在使用VB6導入EXCEL 2010數據時卻發現了問題。直接的想法是,在窗體上添加一個ADODC控件,通過其屬性設置來訪問EXCEL 2010。于是,第一個想到的是使用Microsoft Jet 4.0 OLE DB Provider。但是,在測試連接時,總是出現錯誤提示“找不到可安裝的ISAM”,相應的英文提示是“Could not find installable ISAM”。于是搜索了許多參考答案,但是由于例子中都是訪問EXCEL 2003或者以下版本,始終找不到答案-總是出現上面的提示。根據有些網站提示,安裝了最新的VB6的SP6,也根本無濟于事。

最后,還是英文搜索幫了忙。在MSDN一個地方(http://social.msdn.microsoft.com/Forums/en-US/ae6f73a1-011f-4d8e-bcf5-80917e39ef97/could-not-find-installable-isam),描述如下:

“Jet OLEDB does not support Excel 2007 and Excel 2010 file formats. You need to install ACE OLEDB provider for it.”

這是微軟的MVP給出的描述,自然錯誤可能性很小。循著這個思路和其中提供的鏈接(http://www.microsoft.com/en-us/download/confirmation.aspx?id=13255)。我下載并安裝了其提供的Microsoft Access Database Engine 2010 Redistributable。

結果,也是令人失望。在VB6的ADODC屬性鏈接對話框中根本沒有出現上面一條,如下圖所示:




結合上述情況,我又使用中文搜索("VB 6.0如何訪問EXCEL 2010"),終于在地址http://blog.sina.com.cn/s/blog_6e001be701016yi8.html找到比較明確的參考答案。當然,這個結論與上面那個MVP提供的信息是一致的。


結論

在VB6中目前不能通過ADODC控件方式借助JET引擎訪問EXCEL 2010,即使安裝了上述新的訪問工具(這個工具是用于VB.NET訪問新版本的EXCEL使用的)。但是,在上圖中可以使用如圖中所示的另外一種方式(Microsoft OLE DB provide for ODBC DRIVER)直接在ADODC控件中訪問EXCEL 2010(我現在就使用了這種方式)。盡管花費了不少時間,終于有一個結果,還算欣慰一些……

[補充]

很遺憾很疑惑,我在通過代碼使用ADODC控件訪問EXCEL 2010時,還是出現錯誤。相關代碼如下:

CommonDialog1.CancelError?=?FalseCommonDialog1.InitDir?=?App.Path?&?\"\\Data\"Me.CommonDialog1.Filter?=?\"Excel?2010(*.xlsx)|*.xlsx|Excel?2003(*.xls)|*.xls\"CommonDialog1.FilterIndex?=?1CommonDialog1.ShowOpen\'e.g.?\'single.xls\'strName?=?CommonDialog1.FileTitleAdodc1.ConnectionString?=?\"Provider=MSDASQL.1;Persist?Security?Info=False;Data?Source=Excel?Files;Initial?Catalog=\"?&?App.Path?&?strNameAdodc1.CommandType?=?adCmdTextAdodc1.RecordSource?=?\"Select?*?from?[Sheet1$]\"Adodc1.Refresh

運行過程中出現具體錯誤提示如下圖所示(答案正在尋找中……)




[問題解決]

其實,上面的表達方式基本沒有問題,只是最后一句不能在此調用。典型情況下,上述代碼應當是在Form_Load方法中調用的。于是,應當在Form_Activate方法中調用Adodc1.Refresh方法。如此,一切OK!

當然,如果你想使用Adodc1.CommandType?=?adCmdTable,那么Adodc1.RecordSource?=”[Sheet1$]"也可以。

至此,問題解決!最終實現了使用VB6(+SP6)訪問EXCEL 2010,對于EXCEL 2007雖然沒有試驗,但估計也是沒有問題的!


[補充]

文章http://www.excelpx.com/thread-228696-1-1.html處提供了較細致的訪問方法,只可以估計是針對VB.NET的方案,根本不適合VB6.


總結

以上是生活随笔為你收集整理的VB 6.0中如何访问EXCEL 2007及EXCEL 2010的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。