【问题标题】:Overwrite access database from excel table using VBA使用VBA从excel表覆盖访问数据库
【发布时间】:2018-06-28 14:14:04
【问题描述】:

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

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

第 1 步:上传初始数据(我为此步骤准备了一个可用的 VBA 宏):

上传excel表格:

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

从访问下载:

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

从 excel 覆盖以访问:

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

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

【问题讨论】:

  • 你应该在上传新数据之前清除表格

标签: excel ms-access-2016 vba


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-15
    • 2011-05-09
    • 2019-08-28
    • 2019-01-15
    相关资源
    最近更新 更多