首页 > 解决方案 > 使用VBA从excel表覆盖访问数据库

问题描述

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

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

第 1 步:上传初始数据(我有一个可用于此步骤的 VBA 宏):

上传excel表格:

上传excel表格

第 2 步:从访问 excel 下载数据(我为此步骤使用了 VBA 宏)

从访问下载:

从访问下载

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

从 excel 覆盖以访问:

从excel覆盖到访问

请帮助我完成此步骤的 VBA 程序或任何网站链接。

我无法在此处附加 Excel 表。

标签: excelms-access-2016vba

解决方案


终于从其他来源找到宏,为任何其他初学者分享代码

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

推荐阅读