cherrycdh 发表于 2021-8-23 16:22

TAT关于修改了excel数据后vba同步到access中

不好意思,小白又来求指教了
没学过数据库的小白,在操作access中问题好多,
这次需要做一个文件,要求是这样的,当点击了7列或者17列的单元格(激活了)并且是修改了其中一列的数据后,同步到相应的access中
思路有了,但是好像代码不对:rggrg,如果有大佬有这方面的指导文件,希望给一个,如果会的,也希望指导一下,谢谢了

Private Sub Worksheet_Change(ByVal Target As Range) '这里是当点击该单元格(定位)

    Dim SQL As String
    Dim sqltext(5)
   
    If Target.Column = 7 Or Target.Column = 14 Then'其实我这里更想做的是,只是激活不更改数据的时候后面不操作,只有当更改7列或者9列的时候动

    '定义ADODB 连接Access数据库
    Dim cnn As New ADODB.Connection
    Dim Rs As New ADODB.Recordset
    Dim strCon As String
    Dim strFileName As String '数据库文件名
    strFileName = "E:\临时文件\培训管理.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
   
    sqltext(0) = Cells(Target.Row, 1): sqltext(1) = Cells(Target.Row, 2): sqltext(2) = Cells(Target.Row, 3): sqltext(3) = Cells(Target.Row, 4): sqltext(4) = Cells(Target.Row, 7): sqltext(5) = Cells(Target.Row, 14)
   

    SQL = "SELECT 培训记录.日期, 培训记录.培训时间, 培训记录.培训主题, 培训记录.姓名    FROM 培训记录WHERE (((培训记录.日期) = sqltext(0)) And ((培训记录.培训时间) = sqltext(1)) And ((培训记录.培训主题) = sqltext(2)) And ((培训记录.姓名) = sqltext(3)))"
   
    Rs.AddNew               '这里我不知道哪里错了,:'(weeqw,因为运行之后,变成了在数据库最后增加了一条数据,而不是在原有的基础上修改
    Rs!参加与否 = sqltext(4)
    Rs!培训考评 = sqltext(5)
    Rs.Update
    MsgBox "数据已更新"
    End If
   
    Rs.Close
   
    cnn.Close
    Set Rs = Nothing
    Set cnn = Nothing
    Set sht = Nothing
End Sub

cherrycdh 发表于 2021-8-24 10:53

{:1_923:}没有大神回答么
页: [1]
查看完整版本: TAT关于修改了excel数据后vba同步到access中