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

2024-06-09 47

本文首发于2023年8月23日其他同名平台,更多文章案例搜索关注!

执行摘要

将Excel数据导入Access数据库

大家好,我用冷水泡茶。

可以选择多个表同时导入到Access数据库中,当然默认是这些表的名称和结构都是相同的。

我还发表过一篇文章【将ExcelVBAExcel表数据导入Access数据库/数据验证入门研究】,主要讲的是导入数据的验证。

今天我们就来详细介绍一下Excel导入Access的过程:

基本流程

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

2、准备一些数据,从我的测试数据【财务管理系统】中选择“凭证tb”表,会计凭证表。

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

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

5执行代码并导入成功:

代码

1模块1,DataImport流程,数据导入:

IsDataImport()DimconnAsObjectDimstrCnnAsStringDimrsAsObjectDimdataFileAsString,excelFileAsStringDimstrSQLAsStringDimarrData()DimiAsInteger,jAsIntegerSetconnCreateObject('SetConntegerSetconnCreateObject)(JointReportJointSetting')'通过查询将Excel数据读取到excelFileThisWorkbook数组中。ProviderMicrosoftACEOLEDB120;数据源'excelFile';扩展属性''Excel120Xml;HDRYES'';'strSQL'SELECT*O[tbcredential$]'rsOpenstrSQL,conn,3,3arrDatarsGetRowsrsClose'打开Access数据库连接,将数组数据导入到凭证表tbdataFileThisWorkbookPath'/Accessdatabaseaccdb'strCnn'ProviderMicrosoftACEOLEDB120;DataSource'dataFile';'connOpenstrCnnrsOpen'tb凭证',conn,1,3Fori0ToUBound(arrData,2)IfarrData(1,i)''ThenExitForrsAddNewForj1ToUBound(arrData,1)rsFields(j)arrData(j,i)NextrsUpdateNextClose并清除对象rsCloseconn

代码分析:

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

(2)第13~19行,将Excel表格数据读入数组:

(a)connopen~:建立与excel文件的连接;

(b)rsopen~:打开记录集;

(c)arrDatarsGetRows将记录集对象数据存储在数组中。

(3)第21~32行,将数组中的数据写入记录集对象并更新。记录集和数组的下标都是从0开始的。当写入记录集时,我们从j1开始,以便跳过自动更新的第一个字段ID。

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

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

PrivateSubCmdImportClick()CallDataImportEndSub

3、注意事项:

(1)导入的数据表需要与目标数据表具有相同的结构和数据类型,否则导入可能会失败。

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

(3)Excel数据导入Access还有其他方法,由于时间有限,我们就不展开了,等以后使用的时候再讨论。最简单的,我们可以将Excel表格中的数据复制并粘贴到Entry表格中。

~~~~~~结束~~~~~~

喜欢的话就点个赞、点击观看、留言吧!分享出去,让自己变得更强大!感激的!

本站文章均由用户上传或转载而来,该文章内容本站无法检测是否存在侵权,如果本文存在侵权,请联系邮箱:2287318951@qq.com告知,本站在7天内对其进行处理。