Excel VBA到:APPEND只修改logging从Excel到Access

我有一个Excel电子表格,通过ADODB连接从数据库下载最新的logging集。 大部分最新的logging都基于importdate/时间。 一旦信息被加载到Excel电子表格中,我希望分析员/最终用户更新任何他们认为合适的logging。 当分析人员点击提交button时,我只想将修改的logging添加到位于共享驱动器上的MS Access 2007数据库中的同一个表中。 数据库将自动为每个logging添加一个导入date/时间。

我的问题:我只想APPEND新修改的logging 。 因此,我将有什么更新和什么时候的历史logging。 目前我正在将整个logging集附加到MS Access 2007,同时包括今天的date/时间戳记,这导致具有不同时间戳记的冗余logging。

下面的代码代表我目前的过程。 请注意我有公共variables。

Private Sub db_CodeAmendment_Upload Dim cnn As ADODB.Connection Dim rst As ADODB.Recordset Dim i, j, rw, co As Long Dim sh As Worksheet Set cnn = New ADODB.Connection Set rst = New ADODB.Recordset Sheets("sCodeMatrix").Visible = True ThisWorkbook.Worksheets("sCodeMatrix").AutoFilter.Sort.SortFields.Clear For Each sh In Worksheets If sh.Name <> "sCodeMatrix" Then sh.Visible = xlSheetHidden Next Sheets("sCodeMatrix").Select Sheets("sCodeMatrix").Activate rw = Range("A500").End(xlUp).Row co = Range("CZ1").End(xlToLeft).Column With cnn .Provider = "Microsoft.ACE.OLEDB.12.0" .Open TARGET_DB End With rst.CursorLocation = adUseServer rst.Open Source:="tblCodeMatrix", ActiveConnection:=cnn, CursorType:=adOpenDynamic, LockType:=adLockOptimistic, Options:=adCmdTable 'Load all records from Excel to Access.' For i = 2 To rw rst.AddNew For j = 1 To co rst(Cells(1, j).Value) = Cells(i, j).Value Next j rst.Update Next i ' Close the connection ' On Error Resume Next rst.Close cnn.Close Set rst = Nothing Set cnn = Nothing End Sub 

在你的问题中,你没有具体的问题,所以我认为你是在要求如何做到这一点的一般指导。 我会build议以下algorithm:

  • 循环使用电子表格行
    • 检测logging是否已更改。
    • 如果已经改变:
      • 将其添加为Access的新logging。

想到确定logging是否改变了一些选项:

  • 从Access数据库中查询logging并逐字段比较或
  • 将数据插入到Excel工作表时,将其导入两次 (一次进入可见区域,一次进入右侧的隐藏列)。 这使您可以比较Excel单元格以确定是否更改了某些内容。