使用VBA从excel表覆盖访问数据库

时间:2018-06-28 14:14:05

标签: excel excel-vba ms-access-2016 vba

我已经在这个网站上搜索了我的问题,但是无法找到解决方案。 我是excel VBA的初学者,需要一些帮助,以使用excel-VBA用excel电子表格中的新数据更新访问数据库中的旧数据。

我已经从互联网创建了以下步骤。

第1步:上传初始数据(此步骤中有一个正常工作的VBA宏):

上传excel表:

Upload excel table

第2步:从访问权限下载数据到excel(此步骤中,我正在使用VBA宏)

从访问权限下载:

Download from access

第3步:现在,我想用excel表中的修订数据覆盖整个访问表。我无法在此步骤中找到宏。

从excel覆盖以访问:

Overwrite from excel to access

请为此步骤提供VBA程序或任何网站链接,以帮助我。

我无法在此处附加excel工作表。

1 个答案:

答案 0 :(得分:0)

最终从其他来源找到了宏,并与其他任何初学者共享代码

Sub Modify()

Dim dbs As ADODB.Connection
Dim rset1 As ADODB.Recordset
Dim sql As String
Dim ws As Worksheet
Dim lr As Long
Dim FName As String
Dim i As Long, j As Integer

FName = "C:\Users\temp\Database - Copy.accdb" 'change as needed
Set dbs = New ADODB.Connection
 dbs.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & _
 "Data Source=" & FName
Set rset1 = New ADODB.Recordset: rset1.CursorLocation = adUseClient

Set ws = Worksheets("Import") 'update sheet name as needed.
lr = ws.Range("B" & Rows.Count).End(xlUp).Row
For i = 10 To lr
    rset1.Open "SELECT * FROM [DB] WHERE [ID] = " & ws.Range("B" & i).Value, dbs, , adLockOptimistic
    With rset1
        For j = 1 To rset1.Fields.Count - 1
            .Fields(j).Value = ws.Range("B" & i).Offset(0, j).Value
        Next j
        .Update
        .Close
    End With
Next i

Set rset1 = Nothing
dbs.Close: Set dbs = Nothing

End Sub