access怎么将excel导入到数据库,access数据库入门教程

首页 > 实用技巧 > 作者:YD1662023-10-31 21:15:00

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

内容提要

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

access怎么将excel导入到数据库,access数据库入门教程(1)

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

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

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

基本过程

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

access怎么将excel导入到数据库,access数据库入门教程(2)

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

access怎么将excel导入到数据库,access数据库入门教程(3)

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

access怎么将excel导入到数据库,access数据库入门教程(4)

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

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

access怎么将excel导入到数据库,access数据库入门教程(5)

程序代码

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

Sub DataImport() DimconnAsObject Dim strCnn As String Dim rs As Object Dim dataFile As String, excelFile As String Dim strSQL As String DimarrData() 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 EndSub

代码解析:

(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 DataImport EndSub

3、注意事项:

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

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

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

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

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

栏目热文

文档排行

本站推荐

Copyright © 2018 - 2021 www.yd166.com., All Rights Reserved.