2016-07-19 117 views
0

我有一個Excel工作簿。目前有兩張牀單。 1張將行發送到Access數據庫,另一個選項卡顯示來自該數據庫的所有行。我希望能夠根據最後一張表中的更改更新數據庫。跟蹤更改並將其更新到數據庫

我已經做了一些挖掘工作,並且看到了一個選項,通過將它變成共享工作簿並啓用跟蹤更改的內置功能來跟蹤更改。我希望保持工作簿一次只能由一個用戶編輯。 (其他用戶可能不會獲得最新的行)

更新整個工作表不是一個選項,因爲單元格可能沒有意識到而編輯。我只想更新某個列,但問題保持不變,只是較小。

我最正面的情況是,excel會跟蹤更改,只更新這些更改,甚至在將更改發送到數據庫之前突出顯示更改。

這是在VBA中可以做到的嗎?

+0

我要麼將工作表作爲鏈接表添加到數據庫中,要麼使用'Worksheet_Change(ByVal Target As Range)'事件來使用ADO查詢更新數據庫。 –

+0

如果這對你有幫助,請標記爲已解決。 – KyloRen

回答

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