大家好今日我们继续讲解VBA数据库解决方案的第22讲:如何利用工作表数据,生成数据库新的数据表。在之前的讲解中我们讲了很多把数据从数据表中导出到工作表的方法,今日我们讲解如何把数据由工作表存储到数据库中的数据表。为什么要有这样的操作呢?我们举个实例:如果您是一个部门的销售人员,每月的销售数据是一个EXCEL表格,如果可以把这些数据放到数据库中,这样会更方便的实现查找和统计。
为什么要借助数据库呢?EXCEL不可以吗?当然,理论上是可以的,但实际不推荐。为什么呢?把数据保存在EXCEL中,容易误操作,而且当数据量大的时候,EXCEL的操作远比数据库操作要慢。这是我多年工作经验的体会。所以我们在学习的时候,该更新自己知识结构的要及时更新。比如有的朋友的EXCEL还是2003版本的甚至是2000版本的,还是建议你尽快的升级吧。
言归正传,我们还是研究如何实现上述的逆运算的过程。实例:在我的EXEL表格中有一份19年2月份的销售记录,我要新建立一个数据表保存它。EXCEL工作表内容如下截图:
导入的数据表名称为"19年销售情况",下面我们看看如何能实现这个过程。
由于可能的方法很多,我要一个一个的给大家讲解,或许有的朋友会说,怎么不用什么方法啊?对的,你的方法也可以,或许我在后续的文章中会讲到你的方案,不要紧,先看我的思路:
代码:
Sub mynzCreateDataTable() '将工作表生成新数据表
Dim cnADO, rsADO As Object
Dim strPath, strSQL, strTable As String
Set cnADO = CreateObject("ADODB.Connection")
Set rsADO = CreateObject("ADODB.Recordset")
strPath = ThisWorkbook.Path & "mydata2.accdb"
strTable = "19年销售情况"
cnADO.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & strPath
Set rsADO = cnADO.OpenSchema(20, Array(Empty, Empty, strTable, Empty))
'如果存在这个数据表,那么删除
If Not rsADO.EOF Then
strSQL = "DROP TABLE " & strTable
cnADO.Execute strSQL
End If
'按工作表创建数据表
strSQL = "SELECT * INTO " & strTable _
& " FROM [Excel 12.0;Database=" _
& ThisWorkbook.FullName & ";].[" & ActiveSheet.Name & "$]"
cnADO.Execute strSQL
MsgBox "已经将工作表数据生成新数据表。