龙空技术网

Excel VBA Excel表数据导入Access数据库

Excel活学活用 259

前言:

当前同学们对“如何把表导入数据库”大概比较讲究,朋友们都想要了解一些“如何把表导入数据库”的相关资讯。那么小编同时在网络上收集了一些关于“如何把表导入数据库””的相关文章,希望我们能喜欢,各位老铁们一起来了解一下吧!

本文于2023年8月23日首发于本人同名公众号:Excel活学活用,更多文章案例请搜索关注!

内容提要

Excel数据导入Access数据库

大家好,我是冷水泡茶,今天群里有人问Excel是否能导入Access数据库的问题,这当然是可以的,在我的【财务管理系统】中,就有数据导入的功能:

可以选择多个表一次性导入Access数据库,当然,前提是这些表的名称、结构都完全相同。

我也曾经发过一篇文章【Excel VBA Excel表格数据导入Access数据库/数据校验初探】,主要谈导入数据的校验问题。

今天我们就来详细捋一捋Excel导入Access的操作:

基本过程

1、首先,我们创建两个文件,一个叫access数据库,一个叫excel数据源,再创建一个启用宏的Excel工作簿“Excel数据导入Access.xlsm”。

2、准备点数据,就从我的【财务管理系统】测试数据中选一张表“tb凭证”,记账凭证表。

3、在“Access数据库.accdb”中创建一张表,名字与数据源保持一致,当然不一致也没有关系,我们在导入的时候直接指定表名就可以。之所以有“保持一致”的要求,是因为在我的【财务管理系统】中,是批量循环导入的,其中导入代码的数据表名是一个变量,是不直接指定的,我们选中哪个就相应导入哪个。我们要建立一个“tb凭证”表,方便起见,直接复制【财务管理系统】中表的结构。

4、在“Excel数据导入Access”中编写导入代码。

5、执行代码,成功导入:

程序代码

1、模块1,DataImport过程,导入数据:

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数据通过查询读入数组    excelFile = ThisWorkbook.Path & "/Excel数据源.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数据库连接,把数组数据导入tb凭证表    dataFile = ThisWorkbook.Path & "/Access数据库.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    '关闭并清空对象    rs.Close    conn.Close    Set rs = Nothing    Set conn = Nothing    End Sub

代码解析:

(1)定义一些变量,conn数据库连接对象,rs记录集对象。

(2)line13~19,把Excel表数据读入数组:

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

(b)rs.open~:打开记录集;

(c)arrData = rs.GetRows把记录集对象数据存入数组。

(3)line21~32,把数组中的数据写入记录集对象,并更新。记录集、数组的下标都是从0开始,在写入记录集的时候,我们从j=1开始,目的是跳过第一个自动更新字段ID。

(4)最后,关闭conn、rs对象。

2、其他过程:CmdImport,数据导入命令按钮

Private Sub CmdImport_Click()    Call DataImportEnd Sub

3、注意事项:

(1)要求导入的数据表与目标数据表的结构、数据类型要保持一致,否则可能导入失败。

(2)这三张表是放在同一个目录下,如果改变路径,可在代码中修改excelFile 、dataFile的值。

(3)Excel数据导入Access,还有其他的方法,时间关系,我们不做展开,等以后用到的时候再说。最简单的,我们可以把Excel表中的数据复制,粘贴到Access表中。

~~~~~~End~~~~~~

喜欢就点个、点在看留个言呗!分享一下更给力!感谢!

标签: #如何把表导入数据库 #excel vba 连接access 2013