Access与Excel结合使用常用代码

Access与Excel结合使用常用代码


2024年2月17日发(作者:)

Excel使用灵活但是处理数据量小(数据一多就会卡)Access能数据量大(相对于Excel)但是使用不灵活。Excel与Access结合使用能相互弥补不足。如用Access用为后台数据库对表进行筛选、汇总等一系列处理后再以Excel为前台导出数据,会比直接用Excel表刷选、汇总一个上万行的数据表快的多。以下是几种access与Excel结合使用常用方法与代码。

1. Access导入表格代码

Sub 导入材料出库表()

nings False '取消警告

"DELETE FROM 材料出库表" '删除材料出库表

erSpreadsheet acImport, 8, "材料出库表", _

“F:材料出库明细.xls", _

True, "sheet1!a2:ag20000" '导入材料出库明细表中的sheet1表a2:ag20000区域的数据

nings True

End Sub '恢复警告

注:erSpreadsheet acImport, 8, "材料出库表", “F:材料出库明细.xls", True,

"sheet1!a2:ag20000" 此句代码中的"材料出库表"是表明导入到Access中的材料出库表中,参数true表明以导入数据的第一行作为列字段如将true改false 数据导入access中后表的列字段为“F1、F2、F3.....”。

2. 创建Access窗体与按钮

1. 创建窗体

点创建-窗体设计即调出窗体设计窗体界面。

2. 创建按钮

点设计-按扭即可用鼠标在窗体中插入按钮。

按钮做好后会自动弹出“命令按钮向导”直接点取消。

右击按钮-事件生成器-代码生成器即进入此按钮的代码编辑区。

将光标放到Private Sub Command3_Click() 下面粘贴以下代码

nings False

"DELETE FROM 材料出库表"

erSpreadsheet acImport, 8, "材料出库表", _

“F:材料出库明细.xls", _

True, "sheet1!a2:ag20000"

nings True

关闭代码界面回到窗体设计界面,点右下角窗体视图,

再点刚做好的按钮,“192.168.1.32成本ERP导出表导入access材料出库明细.xls”的数据就会导入到access中的材料出库表中,

将不同的代代码放入按钮中就能实现不同功能的按钮。

3. Access导出到Excel表

Access导出Excel表方法很多(最简单的方法直接在Access点导出)这里介绍以Excel作为前台Access作为后台取数据的方法。

新建一个Excel打开Alt+F11 打开VBE窗口

点右键-插入-模块

这时会弹出模块1的界面并且光标在此界面闪。将以下代码贴入此模块,按F5即可运行此模块就可从Access导出数据(注运行时出现警告“用户类型未定义”这是没有对Microsoft

ActiveX Data Object X Library 2.8 引用点工具-引用将Microsoft ActiveX Data Object X

Library2.8打下勾即可)

Sub 导出材料汇总()

Dim mydata$, SQL$, hh%

Dim rs As set

Dim cnn As tion

Range("d2:l10000").Clear

mydata = "192.168.1.32成本ERP导出表基础数据.accdb"

Set cnn = New tion

With cnn

.Provider = ".12.0"

.Open mydata

End With

SQL = "SELECT DISTINCT 材料出库表.工单号, 材料出库表.仓库, 材料出库表.领料部门,

材料出库表.物料类型," _

& " 材料出库表.物料名称, 材料出库表.单位, Sum(材料出库表.实发数量) AS 实发数量之总计, Sum(材料出库表.金额)" _

& " AS 金额之总计, 材料出库表.领料用途 FROM 材料出库表 GROUP BY 材料出库表.领料部门, 材料出库表.仓库, 材料出库表.工单号, " _

& " 材料出库表.物料类型, 材料出库表.物料名称,材料出库表.单位, 材料出库表.领料用途"

Set rs = e(SQL)

With Range(Cells(1, 1), Cells(1, ))

.HorizontalAlignment = xlCenter

End With

Range("d2").CopyFromRecordset rs

Range("A1:l10000"). = 10

Columns("g:k").Style = "Comma"

Set rs = Nothing

Set cnn = Nothing

End Sub

注:Set cnn = New tion

With cnn

.Provider = ".12.0"

.Open mydata

End With

这段代码是建立与Access文件的连接。(access文件不用打开通过后台连接Access的数据)

SQL = "SELECT DISTINCT 材料出库表.工单号, 材料出库表.仓库, 材料出库表.领料部门, 材料出库表.物料类型," _

& " 材料出库表.物料名称, 材料出库表.单位, Sum(材料出库表.实发数量) AS 实发数量之总计, Sum(材料出库表.金额)" _

& " AS 金额之总计, 材料出库表.领料用途 FROM 材料出库表 GROUP BY 材料出库表.领料部门, 材料出库表.仓库, 材料出库表.工单号, " _

& " 材料出库表.物料类型, 材料出库表.物料名称,材料出库表.单位, 材料出库表.领料用途"

这段代码是SQL查询命令,修改这段代码可将各种所需的表导出。

代码Range("d2").CopyFromRecordset rs是表导出的起始位置,Range("d2")就是以d2单元格开始如改Range(“a2”)则从a2单元格开始。

复杂的SQL查询语句可以在Access中创建查询表,做符合要求的查询表后再将查询语句复制贴到Excel的代码中的SQL=” ” 双引号中,但要注意的是SQL=之所以加双引号是因为SQL=后面是接字符串的,access的查询语句中包含引号要用字符串连接形式处理代码才能在Excel的VBA运行。


发布者:admin,转转请注明出处:http://www.yc00.com/web/1708178655a1544475.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信