作者:乔山办公网日期:
返回目录:excel表格制作
说说思路:
这个抄显然要用ADO
1、连接数据袭库,得到连百接对象conn
2、用度下面的问select语句打开表,将数据读入RecordSet
set rs=conn.execute("select * from 表名")
3、用循环将答数据读入二维数组arr
row=0
while not rs.eof
arr[row,0]=rs["id"]
arr[row,1]=rs["year"]
arr[row,2]=rs["mon"]
arr[row,3]=rs["1"]
arr[row,4]=rs["2"]
...
...
...
row=row+1
wend
Dim oc As Object, rs As Object, a()
Set oc = CreateObject("adodb.connection")
oc.open "provider=Microsoft.Jet.OLEDB.4.0; Data Source=e:\tmp\db2.mdb"
Set rs = CreateObject("adodb.recordset")
rs.open "select * from tek", oc, 1, 1
a = rs.getrows
MsgBox "记录集rs已被读入数组a中" & vbCrLf & "共" & UBound(a, 1) + 1 & "列 " & UBound(a, 2) + 1 & "行"
rs.Close
Set rs = Nothing
oc.Close
Set oc = Nothing
以上代码我测试过是可行的。有几点要注意:
1、数组a的类型一定要是Variant型(不定e5a48de588b6e799bee5baa6338类型),而不能指定具体的类型,如String、Integer等;
2、是getrows,不是getrow;
3、数组a赋值后会是个二维数组,其第一维是列数(就是数据表中的字段数),第二维是行数(也就是数据表中的记录数)。
三种e799bee5baa6e78988e69d83335VBA:
方法一:在eccel VBA编辑器编写代码,使用FOR循环导入:
Sub 利用Excel的VBA将数据写入Access()
'定义ADODB 连接Access数据库
Dim Cnn As New ADODB.Connection
Dim Rs As New ADODB.Recordset
Dim strCon As String
Dim strFileName As String '数据库文件名
strFileName = InputBox("请输入文件路径及文件名:", "Excel传递数据至Access", "E:\ExcelTest\Staff.mdb")
'连接字符串,我这里是Access2010,所提供者参数为:Provider=Microsoft.ACE.OLEDB.12.0;
'如果此参数不能使用,根据自己的电脑修改这个字符串
'至于连接至的数据库名,根据自己的电脑修改,或用一个对话框或其他方式将此值传递进程序
strCon = "provider=Microsoft.jet.OLEDB.4.0;" _
& "Data Source=" & strFileName & ";"
Cnn.Open strCon
Rs.ActiveConnection = Cnn
Rs.LockType = adLockOptimistic
Rs.Open "Employee" '假设表为Employee
'定义Excel表中的数据区域以写入Access
Dim Sht As Worksheet
Dim Rn As Long
Dim Cn As Long
Set Sht = ThisWorkbook.Sheets("Sheet1")
'假设将 Sheet1 表的 2-6行的1、2、3列写入Access表
For Rn = 2 To 6
Rs.AddNew
Rs!num = Sht.Cells(Rn, 1) ’num,name,department是数据库中指定表的字段
Rs!Name = Sht.Cells(Rn, 2)
Rs!department = Sht.Cells(Rn, 3)
Rs.Update
Next Rn
MsgBox "完成!"
Rs.Close
Cnn.Close
Set Rs = Nothing
Set Cnn = Nothing
Set Sht = Nothing
End sub
你将 data 声明为 Variant 试试
dim data as Variant