跟踪更改并将其更新到数据库

时间:2016-07-19 06:48:03

标签: excel vba excel-vba ms-access

我有一个Excel工作簿。目前有2张。 1个工作表将行发送到Access DB,另一个选项卡显示此DB中的所有行。我希望能够根据最后一页中的更改来更新数据库。

我已经做了一些挖掘,并看到了一个跟踪更改的选项,它使其成为共享工作簿并启用跟踪更改的内置功能。我想保持工作簿只能由一个用户一次编辑。 (否则其他用户可能无法获得最新的行)

更新整个工作表不是一个选项,因为可能在没有意识到的情况下编辑单元格。我只考虑更新某个列,但问题保持不变,只是更小。

我最积极的方案是excel会跟踪更改,只更新这些更改,甚至可能会在将更改发送到数据库之前突出显示更改。

这是否可以在VBA中进行?

1 个答案:

答案 0 :(得分:1)

我这样做的方法是每次更改数据时都会触发事件。然后将该数据插入数据库。如果数据库位于本地,则性能不会成为问题。

如下所示,您必须修改范围以适合您的范围,并且还必须通过一些if语句处理不同的数据类型。这只是一些示例代码,因为我不知道您尝试更新哪种数据,它只处理两种数据类型。

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim strSQL As String

        If Not Intersect(Target, Range("A1:Z100")) Is Nothing Then
           If IsNumeric(Target.Value) Then
              strSQL = "INSERT INTO MyTable (Field_1) VALUES (" & Target.Value & ")"
           Else
              strSQL = "INSERT INTO MyTable (Field_1) VALUES ('" & Target.Value & "')"
           End If
        End If


End Sub