我有一个Excel工作簿。目前有2张。 1个工作表将行发送到Access DB,另一个选项卡显示此DB中的所有行。我希望能够根据最后一页中的更改来更新数据库。
我已经做了一些挖掘,并看到了一个跟踪更改的选项,它使其成为共享工作簿并启用跟踪更改的内置功能。我想保持工作簿只能由一个用户一次编辑。 (否则其他用户可能无法获得最新的行)
更新整个工作表不是一个选项,因为可能在没有意识到的情况下编辑单元格。我只考虑更新某个列,但问题保持不变,只是更小。
我最积极的方案是excel会跟踪更改,只更新这些更改,甚至可能会在将更改发送到数据库之前突出显示更改。
这是否可以在VBA中进行?
答案 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