原由:
在学习VBA的ADO功能时,经常需要把Excel中的数据导入Access中;实现这样的方法有很多种:
1),使用Access的导入功能直接实现;
2),使用ADO的Recordset对象实现,不过由于Access中没有Excel中的表,需要创建表,需要设计表的结构,很繁琐。
在学到SQL查询语句,Select查询生成表功能后,突发奇想,能否利用Select查询生产表功能实现呢。先测试一下代码:
Sub ADO连接Excel和Access生成表查询() Dim con As New ADODB.Connection With con .Provider = "Microsoft.ACE.OLEDB.12.0" .Open ThisWorkbook.Path & "\学生管理.accdb" End With Dim sql As String sql = "select * into 数据 from [" & ThisWorkbook.Path & "\数据.xlsx" & "].[数据$]" con.Execute sql con.Close Set con = Nothing End Sub
运行代码后提示不可识别的数据库格式。查询资料后原代码改为以下:
Sub ADO连接Excel和Access生成表查询() Dim con As New ADODB.Connection With con .Provider = "Microsoft.ACE.OLEDB.12.0" .Open ThisWorkbook.Path & "\学生管理.accdb" End With Dim sql As String sql = "select * into 数据 from [Excel 12.0;Database=" & ThisWorkbook.Path & "\数据.xlsx" & "].[数据$]" con.Execute sql con.Close Set con = Nothing End Sub
自此,功能实现。