Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 9783|回复: 14

[已解决]求助各位VBA专家,如何把数据写入工作表的代码改成写入Microsoft Access数据库

[复制链接]
发表于 2013-3-29 15:17 | 显示全部楼层 |阅读模式
求助A5到S65536的数据是根据生成个人数据按纽(在数据库文件夹中的各个镇文件夹)提取出来的。各位老师能否帮改写成定入2003Microsoft Access数据库。谢谢

2013年3月29日 - 测试.rar (161.45 KB, 下载次数: 89)
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2013-3-29 15:28 | 显示全部楼层
回复

使用道具 举报

发表于 2013-3-29 15:29 | 显示全部楼层
回复

使用道具 举报

 楼主| 发表于 2013-3-29 15:32 | 显示全部楼层
hwc2ycy 发表于 2013-3-29 15:29
数据库里可不会有多级标题的。

你好楼主这个我知道就能写信该写的信息即可  谢谢  因为提到工作表数据量大反应慢
回复

使用道具 举报

发表于 2013-3-29 16:04 | 显示全部楼层
晚上写吧,要下班了,这个还得整理思路。
回复

使用道具 举报

 楼主| 发表于 2013-3-29 16:09 | 显示全部楼层
hwc2ycy 发表于 2013-3-29 16:04
晚上写吧,要下班了,这个还得整理思路。

好的谢谢老师
回复

使用道具 举报

发表于 2013-3-30 22:08 | 显示全部楼层    本楼为最佳答案   
  1. Sub 导出ACCESS()

  2.     Dim AccessFile As String, Database As String, SQL As String
  3.     Dim StrConn$, strSQL$
  4.     Dim lLastrow&
  5.     Dim arr, i&, j As Byte

  6.     Dim AdoxCat As Object
  7.     Dim AdoCmd As Object
  8.     Dim AdoConn As Object
  9.     Dim AdoRst As Object


  10.     On Error GoTo Errcheck
  11.     AccessFile = ThisWorkbook.Path & "\test.mdb"
  12.     Database = "个人数据"
  13.     If Dir(AccessFile) = "" Then
  14.         '检测文件是否存在,不存在则创建数据库
  15.         Set AdoxCat = CreateObject("adox.catalog")
  16.         AdoxCat.Create "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & AccessFile
  17.         Set AdoConn = AdoxCat.ActiveConnection
  18.         Set AdoCmd = CreateObject("ADODB.Command")
  19.         Set AdoCmd.ActiveConnection = AdoConn
  20.         AdoCmd.CommandText = "CREATE TABLE " & Database & _
  21.                              " (序号 text(5),姓名 text(10),生产组 text(20),身份证号码 text(18)," & _
  22.                              "年龄 TINYINT,合计 REAL,正常发放小计 REAL,正常发放基础养老金 REAL," & _
  23.                              "正常发放个人帐户 REAL,补发放小计 REAL,补发放基础养老金 REAL," & _
  24.                              "补发放个人帐户 REAL,账号 text(20),备注 text(100),社会保障号 text(20)," & _
  25.                              "电话号码 text(20),参保性质 text(10),补充说明 text(20),所在社区 text(20));"
  26.         AdoCmd.Execute , , 1 'adCmdText
  27.         Set AdoCmd = Nothing
  28.         Set AdoxCat = Nothing
  29.         Set AdoConn = Nothing
  30.         
  31.     End If

  32.     StrConn = "Provider= Microsoft.Jet.OLEDB.4.0;" & _
  33.               "Data Source=" & AccessFile & ";"""
  34.    
  35.     Set AdoConn = CreateObject("ADODB.Connection")
  36.    
  37.     AdoConn.Open StrConn

  38.     If AdoConn.State <> 1 Then MsgBox "数据库连接失败", vbCritical + vbOKOnly: Exit Sub

  39.     lLastrow = Cells(Rows.Count, 1).End(xlUp).Row
  40.     If lLastrow < 5 Then Exit Sub
  41.     arr = Range("a5:s" & lLastrow)
  42.    
  43.     strSQL = "select * from " & Database
  44.     Set AdoRst = CreateObject("ADODB.Recordset")
  45.     AdoRst.Open strSQL, AdoConn, 2, 3 'adOpenDynamic, adLockOptimistic

  46.     With AdoRst
  47.         For i = LBound(arr) To UBound(arr)
  48.             .AddNew
  49.             For j = 1 To UBound(arr, 2)
  50.                 .Fields(j - 1).Value = arr(i, j)
  51.             Next
  52.             .Update
  53.         Next
  54.     End With
  55.     AdoRst.Close
  56.     Set AdoRst = Nothing
  57.     Set AdoConn = Nothing
  58.     MsgBox "数据改入成功" & vbNewLine & _
  59.             AccessFile & vbNewLine, vbInformation + vbOKOnly
  60.             
  61.     Exit Sub
  62. Errcheck:

  63.     MsgBox Err.Number & vbNewLine & _
  64.            Err.Description
  65. End Sub
复制代码

评分

参与人数 1 +1 收起 理由
qinhuan66 + 1 很给力!

查看全部评分

回复

使用道具 举报

发表于 2013-3-31 13:59 | 显示全部楼层
列的长度如果写入的时候报错了,你就改下,删除原有的MDB文件后人重新建的。
回复

使用道具 举报

发表于 2013-3-31 18:50 | 显示全部楼层
其实可以直接在ACCESS里直接导入的,把标题行处理下就成了。
回复

使用道具 举报

 楼主| 发表于 2013-4-2 10:54 | 显示全部楼层
hwc2ycy 发表于 2013-3-31 18:50
其实可以直接在ACCESS里直接导入的,把标题行处理下就成了。

求助hwc2ycy老师:如何生成浅绿色区域的数据生成到2003Microsoft Access数据库,以委托日期、今收到的姓名和人民币合计金额为准3者相同(如图一)不能重复提交到数据库。
如没数据库自动新建数据库。谢谢。
社会保险基金专用收款收据.rar (10.35 KB, 下载次数: 6)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-19 07:25 , Processed in 0.174323 second(s), 9 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表