龙空技术网

ADO连接EXCEL实现数据汇总

VBA语言専攻 623

前言:

此时小伙伴们对“ado连接excel慢”都比较关切,我们都想要知道一些“ado连接excel慢”的相关文章。那么小编在网上网罗了一些关于“ado连接excel慢””的相关文章,希望咱们能喜欢,大家快快来了解一下吧!

【分享成果,随喜正能量】多赚点钱,可以解决人生大部分问题。赚钱的能力像其他能力一样,是可以不断学习、练习、提升的。薪水不够的话,试试兼职、副业。拿你有的,换你要的。这个世界一直如此,很残酷,也很公平。从来没有一劳永逸的选择。关键是选择之后,你该做些什么。 ​​

《VBA数据库解决方案》教程是我推出的第二套教程,目前已经是第一版修订了。这套教程定位于中级,是学完字典后的另一个专题讲解。数据库是数据处理的利器,教程中详细介绍了利用ADO连接ACCDB和EXCEL的方法和实例操作,教程第一版的修订内容主要是完成所有程序文件的32位和64位OFFICE系统测试。

这套教程共两册,八十四讲,今后一段时间会给大家陆续推出修订后的教程内容。今日的内容是第36讲:ADO连接EXCEL实现数据汇总

第三十六讲 利用ADO连接EXCEL,实现数据的复杂计算

大家好,今日我们继续VBA数据库解决方案的学习,最近的讲解是ADO与EXCEL的连接,从而实现许多方便快捷的操作,这里的EXCEL是作为数据库应用的,在本书数据库的讲解中,连接详细讲解的就只有accdb数据库和excel数据库了,两者各有不同,对于EXCEL而言是非常大众化的数据处理软件,利用的非常广泛,而accdb数据库是一个专门的数据库。两个可以相互的取长补短,比如excel数据库我在讲解的时候,尽可能的不去执行实际打开的操作,只是提取数据的处理。这样可以发挥EXCEL的优点,而避开文件容易改动的缺点。

1 应用场景的具体分析

今日讲解的是如何利用ADO完成相对复杂的数据运算,我们先看下面的EXCEL数据:

这时几种药品在1到6月份的销售情况,记录在15年.xlsx的工作表sheet3中,我们要提出数据,但我们关心的不是每月的销售情况,而关心的是每月销售的增加情况,和每种药品在上半年的销售总额是多少,我们要把每月销售的增减和半年的销售总额汇总出来,而不打开文件,这个程序用ADO连接该怎么写呢?

2 ADO实现EXCEL工作表数据计算的代码及代码解读

看下面的代码:

Sub mynz_36()

'第36讲,利用ADO,实现EXCEL工作表数据的复杂计算

【代码见教程】

End Sub

代码截图;

代码讲解:

1) strTable = "[sheet3$a2:G9]" 这里设定了数据库的取值范围是A2:G9的单元格

2) strSQL = "select F1,F3-F2,F4-F3,F5-F4,F6-F5,F7-F6,F2+F3+F4+F5+F6+F7 from " & strTable 在这句中,就SQL语句我们分别定义了几个列的值分别来自上述的数据范围,这几个列的值是F1: 数据源工作表的第一列;F3-F2: 数据源工作表的第3列减去第2列;F4-F3: 数据源工作表的第4列减去第3列;F5-F4, 数据源工作表的第5列减去第4列;等等,最后的一列是F2+F3+F4+F5+F6+F7,是数据源工作表的6列数值相加。

3) Range("a1:g1") = Array("药品名", "2月-1月", "3月-2月", "4月-3月", "5月-4月", "6月-5月", "半年合计") 这句是把上述数据提取出来后要再安上列的标题。

下面看我们的运行情况:

最后的运行结果:

大家要清楚,为什么要引入ADO来操作数据库和EXCEL呢?操作速度是非常快的。

今日内容回向:

1 如何利用ADO 实现多数据的复杂计算?

2 上述代码是否真的清楚了呢?

本讲内容参考程序文件:VBA与数据库操作(第一册).xlsm

我20多年的VBA实践经验,全部浓缩在下面的各个教程中:

【分享成果,随喜正能量】不要去要求别人理解你、共情你、尊重你。这是弱者的思维。强者不会这样做。所谓强者,就是能承受更多压力,能接受更多不公,能忍受更多委屈。不怕被利用,就怕你没用。多表达,少争论,别站队。。

标签: #ado连接excel慢