小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

Excel VBA Excel表數(shù)據(jù)導(dǎo)入Access數(shù)據(jù)庫

 冷茶視界 2023-11-15 發(fā)布于江蘇

快速瀏覽

往期合集:【2023年3月】【2023年4月】【2023年5月】【2023年6月2023年7月

實用案例
|收費管理系統(tǒng)|中醫(yī)診所收費系統(tǒng)|
|日期控件|簡單的收發(fā)存|
|電子發(fā)票管理助手|Excel表格拆分神器|
|Excel多種類型文件合并|
|電子發(fā)票登記系統(tǒng)(Access版)|
|批量生憑證抽查底稿|
收費使用項目
|財務(wù)管理系統(tǒng)|

內(nèi)容提要

  • Excel數(shù)據(jù)導(dǎo)入Access數(shù)據(jù)庫

大家好,我是冷水泡茶,今天群里有人問Excel是否能導(dǎo)入Access數(shù)據(jù)庫的問題,這當(dāng)然是可以的,在我的【財務(wù)管理系統(tǒng)】中,就有數(shù)據(jù)導(dǎo)入的功能:

可以選擇多個表一次性導(dǎo)入Access數(shù)據(jù)庫,當(dāng)然,前提是這些表的名稱、結(jié)構(gòu)都完全相同。

我也曾經(jīng)發(fā)過一篇文章【Excel VBA Excel表格數(shù)據(jù)導(dǎo)入Access數(shù)據(jù)庫/數(shù)據(jù)校驗初探】,主要談導(dǎo)入數(shù)據(jù)的校驗問題。

今天我們就來詳細捋一捋Excel導(dǎo)入Access的操作:

基本過程

1、首先,我們創(chuàng)建兩個文件,一個叫access數(shù)據(jù)庫,一個叫excel數(shù)據(jù)源,再創(chuàng)建一個啟用宏的Excel工作簿“Excel數(shù)據(jù)導(dǎo)入Access.xlsm”。

2、準(zhǔn)備點數(shù)據(jù),就從我的【財務(wù)管理系統(tǒng)】測試數(shù)據(jù)中選一張表“tb憑證”,記賬憑證表

3、在“Access數(shù)據(jù)庫.accdb”中創(chuàng)建一張表,名字與數(shù)據(jù)源保持一致,當(dāng)然不一致也沒有關(guān)系,我們在導(dǎo)入的時候直接指定表名就可以。之所以有“保持一致”的要求,是因為在我的財務(wù)管理系統(tǒng)】中,是批量循環(huán)導(dǎo)入的,其中導(dǎo)入代碼的數(shù)據(jù)表名是一個變量,是不直接指定的,我們選中哪個就相應(yīng)導(dǎo)入哪個。我們要建立一個“tb憑證”表,方便起見,直接復(fù)制財務(wù)管理系統(tǒng)】中表的結(jié)構(gòu)。

4、在“Excel數(shù)據(jù)導(dǎo)入Access”中編寫導(dǎo)入代碼。

5、執(zhí)行代碼,成功導(dǎo)入:

程序代碼

1、模塊1,DataImport,導(dǎo)入數(shù)據(jù):

Sub DataImport() Dim conn As Object    Dim strCnn As String    Dim rs As Object    Dim dataFile As String, excelFile As String    Dim strSQL As String Dim arrData()    Dim i As Integer, j As Integer    Set conn = CreateObject("ADODB.Connection")    Set rs = CreateObject("ADODB.Recordset")        '把Excel數(shù)據(jù)通過查詢讀入數(shù)組    excelFile = ThisWorkbook.Path & "/Excel數(shù)據(jù)源.xlsx"    conn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & excelFile & ";Extended Properties=""Excel 12.0 Xml;HDR=YES"";"    strSQL = "SELECT * FROM [tb憑證$]"    rs.Open strSQL, conn, 3, 3    arrData = rs.GetRows    rs.Close    conn.Close    '打開Access數(shù)據(jù)庫連接,把數(shù)組數(shù)據(jù)導(dǎo)入tb憑證表    dataFile = ThisWorkbook.Path & "/Access數(shù)據(jù)庫.accdb"    strCnn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & dataFile & ";"    conn.Open strCnn    rs.Open "tb憑證", conn, 1, 3    For i = 0 To UBound(arrData, 2)        If arrData(1, i) = "" Then Exit For        rs.AddNew        For j = 1 To UBound(arrData, 1)            rs.Fields(j) = arrData(j, i)        Next        rs.Update    Next    '關(guān)閉并清空對象    rs.Close    conn.Close    Set rs = Nothing    Set conn = Nothing    End Sub
?

代碼解析:
(1)定義一些變量,conn數(shù)據(jù)庫連接對象,rs記錄集對象。
(2)line13~19,把Excel表數(shù)據(jù)讀入數(shù)組:

(a)conn.open~:建立與excel文件的連接;

(b)rs.open~:打開記錄集;

(c)arrData = rs.GetRows把記錄集對象數(shù)據(jù)存入數(shù)組。

(3)line21~32,把數(shù)組中的數(shù)據(jù)寫入記錄集對象,并更新。記錄集、數(shù)組的下標(biāo)都是從0開始,在寫入記錄集的時候,我們從j=1開始,目的是跳過第一個自動更新字段ID。
(4)最后,關(guān)閉conn、rs對象。

2、其他過程:CmdImport,數(shù)據(jù)導(dǎo)入命令按鈕

Private Sub CmdImport_Click()    Call DataImportEnd Sub

3、注意事項:

(1)要求導(dǎo)入的數(shù)據(jù)表與目標(biāo)數(shù)據(jù)表的結(jié)構(gòu)、數(shù)據(jù)類型要保持一致,否則可能導(dǎo)入失敗。
(2)這三張表是放在同一個目錄下,如果改變路徑,可在代碼中修改excelFile 、dataFile的值
(3)Excel數(shù)據(jù)導(dǎo)入Access,還有其他的方法,時間關(guān)系,我們不做展開,等以后用到的時候再說。最簡單的,我們可以把Excel表中的數(shù)據(jù)復(fù)制,粘貼到Access表中。
~~~~~~End~~~~~~

喜歡就點個、點在看留個言唄!分享一下更給力!感謝!

需要示例文件的朋友請稍微留意一下:

  • 寫文不易,分享免費,請關(guān)注、點贊、點在看、點廣告、留言如果不愿走上面的“流程”,打賞也行,萬分感謝!

    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多