设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 3442|回复: 7
打印 上一主题 下一主题

[ADO/DAO] 求助:从excel导入数据到Access

[复制链接]
跳转到指定楼层
1#
发表于 2009-8-4 23:59:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
困扰我好长时间了,请各位高手帮下忙,说下要求:
1、excel表格与Access表一样,不需新增字段,只需要把excel表格中sheet1中数据导入Access表。
2、请使用ADO
3、如果excel表格中数据ID与Access表数据ID相同,则更新Access,如果没有,则新增。

我这里有一个excel导入Access的代码,速度很快,但我不会转换,用于Access读取excel数据,现贴出来,供大家参考下:

Public Sub 导入数据到ACCESS()
    Dim mydata As String, mytable As String, SQL As String
    Dim cnn As ADODB.Connection
    Dim rs As ADODB.Recordset
    Dim rsx As ADODB.Recordset
    Dim i As Long, n As Long
    mydata = ThisWorkbook.Path & "\成绩.mdb"    '指定数据库
    mytable = "成绩"      '指定数据表
    n = Sheets("Sheet1").Range("A65536").End(xlUp).Row   '指定要保存数据的记录数(行数)
    '建立与数据库的连接
    Set cnn = New ADODB.Connection
    With cnn
        .Provider = "microsoft.jet.oledb.4.0"
        .Open mydata
    End With
    '建立查询
    mysql = "select* from " & mytable
    Set rs = New ADODB.Recordset
    rs.Open mysql, cnn, adOpenKeyset, adLockOptimistic
    For i = 2 To n
        '查询是否已经存在了某条记录
        SQL = "select * from " & mytable & " where 学号='" & Cells(i, 1).Value & "'"
        Set rsx = New ADODB.Recordset
        rsx.Open SQL, cnn, adOpenKeyset, adLockOptimistic
        If rsx.RecordCount = 0 Then
            rsx.AddNew
            For j = 1 To rsx.Fields.Count
                rsx.Fields(Cells(1, j).Value) = Cells(i, j).Value
            Next j
            rsx.Update
        Else
            For j = 2 To rsx.Fields.Count
                rsx.Fields(j - 1) = Cells(i, j).Value
            Next j
            rsx.Update
        End If
    Next i
    MsgBox "数据保存完毕!", vbInformation + vbOKOnly
    rs.Close
    cnn.Close
    Set rs = Nothing
    Set rsx = Nothing
    Set cnn = Nothing
End Sub

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅

点击这里给我发消息

2#
发表于 2009-8-5 09:47:13 | 只看该作者
请说出你的问题在哪里?
3#
 楼主| 发表于 2009-8-5 11:44:24 | 只看该作者
问题就是:我想把一个excel 文件里的数据导入Access里,但不知道 VBA代码如何写?
4#
 楼主| 发表于 2009-8-5 16:12:40 | 只看该作者
各位高手帮忙解答下吧!
5#
 楼主| 发表于 2009-8-5 20:43:10 | 只看该作者
请高手们点拨下吧
6#
 楼主| 发表于 2009-8-6 19:49:21 | 只看该作者
我试了下这段代码,可以实现Access读取excel数据的作用,但关键是只能重复的导入,遇见同一关键号,不能更新,请高手想想办法吧!
Private Sub Command0_Click()
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, "temp", "c:\temp.xls", yes
End Sub
7#
发表于 2010-10-21 23:22:40 | 只看该作者
能否有高人出个办法呵呵{:2_84:}

点击这里给我发消息

8#
发表于 2022-9-24 16:12:34 | 只看该作者
学习
回复

使用道具 举报

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

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-11-29 04:26 , Processed in 0.108326 second(s), 33 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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