三种VBA:
方法一:在eccel VBA编辑器编写代码,使用FOR循环导入:
Sub 利用Excel的VBA将数据写入Access()
'定义ADODB 连接Access数据库
Dim Cnn As New ADODBConnection
Dim Rs As New ADODBRecordset
Dim strCon As String
Dim strFileName As String '数据库文件名
strFileName = InputBox("请输入文件路径及文件名:", "Excel传递数据至Access", "E:\ExcelTest\Staffmdb")
'连接字符串,我这里是Access2010,所提供者参数为:Provider=MicrosoftACEOLEDB120;
'如果此参数不能使用,根据自己的电脑修改这个字符串
'至于连接至的数据库名,根据自己的电脑修改,或用一个对话框或其他方式将此值传递进程序
strCon = "provider=MicrosoftjetOLEDB40;" _
& "Data Source=" & strFileName & ";"
CnnOpen strCon
RsActiveConnection = Cnn
RsLockType = adLockOptimistic
RsOpen "Employee" '假设表为Employee
'定义Excel表中的数据区域以写入Access
Dim Sht As Worksheet
Dim Rn As Long
Dim Cn As Long
Set Sht = ThisWorkbookSheets("Sheet1")
'假设将 Sheet1 表的 2-6行的1、2、3列写入Access表
For Rn = 2 To 6
RsAddNew
Rs!num = ShtCells(Rn, 1) ’num,name,department是数据库中指定表的字段
Rs!Name = ShtCells(Rn, 2)
Rs!department = ShtCells(Rn, 3)
RsUpdate
Next Rn
MsgBox "完成!"
RsClose
CnnClose
Set Rs = Nothing
Set Cnn = Nothing
Set Sht = Nothing
End sub
用vba可以实现。
下面提供我给客户写的程序一部分,你可以参考。
Sub FYMXDL() ‘这个是导入数据库的
Dim XQID As Integer
Dim JZID As Integer
Dim FYID As Integer
Dim FBXZ As String '分包性质
Dim DW As String
Dim SARR(1 To 31) As Double
Dim rst As New ADODBRecordset
mYpath = ThisWorkbookPath & "\jzfydataaccdb"
Set cONn = CreateObject("ADODBConnection")
cONnConnectionString = "Provider=MicrosoftAceOleDB120;Data Source=" & mYpath
cONnConnectionString = cONnConnectionString & ";Jet OLEDB:Database "
cONnOpen
XQID = Cells(3, 2)Value
JZID = Cells(3, 5)Value
'清空改小区-建筑的费用明细
Sql = "delete from fymxb where 小区ID=" & XQID & " AND 建筑ID = " & JZID
cONnExecute Sql
Const kshh = 7
hh = kshh
Do While Cells(hh, 3)Value > 0
FYID = Cells(hh, 3)Value
FBXZ = Cells(hh, 11)Text
For i = 1 To 31
SARR(i) = Round(Cells(hh, 13 + i - 1)Value, 2)
Next i
Sql = "INSERT INTO fymxb(小区ID,建筑ID,费用ID,分包性质,工作量,单价合计_中标,人工费_中标, 主材费_中标, 辅材费_中标, 机械费_中标, 管理费_中标, 利润_中标,规费_中标,税金_中标,合价_中标,单价合计_标准成本,人工费_标准成本,主材费_标准成本,辅材费_标准成本,机械费_标准成本,管理费_标准成本,利润_标准成本,规费_标准成本,税金_标准成本,合价_标准成本,单价合计_实际成本,人工费_实际成本,主材费_实际成本,辅材费_实际成本,机械费_实际成本,管理费_实际成本,利润_实际成本,规费_实际成本,税金_实际成本,合价_实际成本) VALUES (" & XQID & ", " & JZID & ", " & FYID & ", '" & FBXZ & "'"
For i = 1 To 31
Sql = Sql & "," & SARR(i)
Next i
Sql = Sql & " )"
cONnExecute Sql
hh = hh + 1
Loop
End Sub
Sub FYMXDc() '导出费用明细
Dim jgarr(1 To 5, 1 To 2) As String '存放各级名称:1-id 2-名称
Dim XQID As Integer
Dim JZID As Integer
Dim FYID As Integer
Dim FBXZ As String '分包性质
Dim DW As String
Dim SARR(1 To 31) As Double
Dim rst As New ADODBRecordset
Const kshh = 7
mYpath = ThisWorkbookPath & "\jzfydataaccdb"
Set cONn = CreateObject("ADODBConnection")
cONnConnectionString = "Provider=MicrosoftAceOleDB120;Data Source=" & mYpath
cONnConnectionString = cONnConnectionString & ";Jet OLEDB:Database "
cONnOpen
XQID = Cells(3, 2)Value
JZID = Cells(3, 5)Value
'清空EXCEL
Range("A7:AQ1000")ClearContents
Sql = "SELECT from fymxb where 小区ID=" & XQID & " AND 建筑ID = " & JZID
rstOpen Sql, cONn, adopenkeyset, adlockoptimistic
If rstRecordCount > 0 Then
ARR = rstGetRows
Else
Exit Sub
End If
rstClose
Set rst = Nothing
hh = UBound(ARR, 2)
lh = UBound(ARR, 1)
For i = 0 To hh
Cells(kshh + i, 2) = ARR(0, i) 'ID
Cells(kshh + i, 3) = ARR(3, i) '费用ID
myid = ARR(3, i)
For j = 4 To 36
Cells(kshh + i, j + 7) = ARR(j, i) '分包性质后
Next j
'rstClose
'Set rst = Nothing
Sql = "select 名称,fid,SID,LEV,特征描述 from kmmxb where id = " & myid
rstOpen Sql, cONn, adopenkeyset, adlockoptimistic
ARR2 = rstGetRows
myfid = ARR2(1, 0)
mysid = ARR2(2, 0)
mylev = ARR2(3, 0)
mytzms = ARR2(4, 0)
MYSIDARR = Split(mysid, "-")
For k = 1 To mylev
jgarr(k, 1) = MYSIDARR(k - 1)
Next k
rstClose
For k = 1 To mylev
Sql = "select 名称 from kmmxb where id = " & jgarr(k, 1)
rstOpen Sql, cONn, adopenkeyset, adlockoptimistic
ARR2 = rstGetRows
jgarr(k, 2) = ARR2(0, 0)
rstClose
Next k
HH2 = kshh + i
'Cells(hh2, 3) = myid
Cells(HH2, 1) = myfid
For k = 1 To mylev
Cells(HH2, 4 + k - 1) = jgarr(k, 2)
Next k
Cells(HH2, 9) = mytzms
Next i
Call gs
End Sub
一些程序员需要将Excel中的数据导入Access数据库中,编写一个另外的程序,因为excel和access都是office产品,是可以实现excel数据导入access数据库的。
工具原料:excel、Access
1、首先准备好需要导入的excel表,并查看数据无误。
2、打开Access数据库,在数据库上方有一个外部数据,点击外部数据存在一个“导入Excel表格功能”,点击该功能开始执行导入 *** 作。
3、找到自己的Excel,明确路径,就可以开始了。点击确定进入下一个步骤。
4、在开始导入的时候,根据自己的需要勾选第一行是否包含标题。勾选:代表Excel中的第一栏就是数据库中的字段名,不勾选:代表Excel所有的数据成为数据库中的数据。
5、接下来可以根据自己的需要修改“字段名称”和“数据类型”。
6、进入下一页面,可以修改数据库中的主键,可以用Access的默认主键,也可以自定义主键,也可以不要主键。
7、完成主键的设置过后,就完成了数据的导入,但是还没有完,自己要为导入的数据命名。最后就完成了将Excel中的数据导入到Access数据库中的 *** 作。
1在Access中创建对Excel工作簿的链接:在Access中选择“外部数据——导入——Excel”。
2在“获取外部数据”对话框中选择“通过创建链接表来链接到数据源”。
必须为每个Excel工作簿重复该过程直到将它们都链接到数据库。结果如下图所示。
3在SQL视图中开始新的查询,单击“创建——其他——查询设计”。
4选择“查询工具-设计”中的“SQL视图”
5在SQL视图中,为所有链接的Excel表输入Select语句,在每个Select语句间使用Union *** 作符,在SQL视图中输入选择查询语句。
6运行查询后,结果将是包含从所有链接的文件中获取并合并后的数据。
只要链接的Excel文件在相同的位置,每次打开数据库时Access将自动刷新链接以获取最新数据。这意味着只需设置一次,然后在每次需要重新组合Excel文件时运行联合查询。
然而,默认情况下,UNION *** 作符会移除数据中的任何重复行。如果知道数据中有重复行,并且想保留它们,那么需要使用UNION ALL,以允许传递重复行。
导入方法如下:
1、打开access软件,新建空白桌面数据库。
2、在外部数据面板中点击EXCEL。
3、在选择数据源面板的文件名中选择目标文件,并在下方选择将数据源导入当前数据库的新表中,确定。
4、接下来选择现实工作表,显示整个工作表,然后下一步。
5、选择第一行包含标题,这样EXCEL表格的第一行成了标题行,相当于筛选栏,下一步。
6、可以选中某列,设置该列的名称,下一步。
7、可以选择自己的主键,这里选择手机品牌为主键,下一步。
8、下面一直下一步,完成后可以看到EXCEL插入access中。
*** 作方法
1、新建数据库,开始执行 *** 作。
2、在数据库上方有一个外部数据,点击外部数据存在一个“导入Excel表格功能”,点击该功能开始执行导入 *** 作。
3、找到自己的Excel,明确路径,就可以开始了。点击确定进入下一个步骤。
4、在开始导入的时候,根据自己的需要勾选第一行是否包含标题。
勾选:代表Excel中的第一栏就是数据库中的字段名
不勾选:代表Excel所有的数据会成为数据库中的数据
5、在下一个页面,可以根据自己的需要修改“字段名称”和“数据类型”。
6、进入下一页面,可以修改数据库中的主键,可以用Access的默认主键,也可以自定义主键,也可以不要主键。
7、完成主键的设置过后,就完成了数据的导入,但是还没有完,自己要为导入的数据命名。最后就完成了将Excel中的数据导入到Access数据库中的 *** 作。
以上就是关于如何将excel里的数据批量导入ACCESS全部的内容,包括:如何将excel里的数据批量导入ACCESS、如何将Excel表单数据自动导入导出Access数据库、如何将Excel中的数据导入到Access数据库中等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)