Próbowałem szukać wszędzie odpowiedzi, ale moje niskie umiejętności w VBA naprawdę nie pomagają mi zrozumieć, co próbuję kodować.Kod VBA do aktualizacji/utworzenia nowego rekordu z Excela do dostępu
Mam ten kod do tej pory:
Sub ADOFromExcelToAccess()
' exports data from the active worksheet to a table in an Access database
' this procedure must be edited before use
Dim cn As ADODB.Connection, rs As ADODB.Recordset, r As Long
' connect to the Access database
Set cn = New ADODB.Connection
cn.Open "Provider=Microsoft.ACE.OLEDB.12.0; " & _
"Data Source=\\GSS_Model_2.4.accdb;"
' open a recordset
Set rs = New ADODB.Recordset
rs.Open "Forecast_T", cn, adOpenKeyset, adLockOptimistic, adCmdTable
' all records in a table
For i = 4 To 16
x = 0
Do While Len(Range("E" & i).Offset(0, x).Formula) > 0
' repeat until first empty cell in column A
With rs
.AddNew ' create a new record
.Fields("Products") = Range("C" & i).Value
.Fields("Mapping") = Range("A1").Value
.Fields("Region") = Range("B2").Value
.Fields("ARPU") = Range("D" & i).Value
.Fields("Quarter_F") = Range("E3").Offset(0, x).Value
.Fields("Year_F") = Range("E2").Offset(0, x).Value
.Fields("Units_F") = Range("E" & i).Offset(0, x).Value
.Update
' stores the new record
End With
x = x + 1
Loop
Next i
rs.Close
Set rs = Nothing
cn.Close
Set cn = Nothing
End Sub
Ten kod robi dokładnie to, co chcę tej pory. Wiem, że chcę dodać kawałek, który będzie sprawdzał, czy rekord istnieje w oparciu o 4 reguły: Produkty, Region, Kwartał_F i Rok_F Jeśli pasuje do nich, powinien zaktualizować inne pole (Jednostki_F, ARPU). Jeśli nie, powinien poprawnie uruchomić kod i utworzyć nowy rekord.
Twoja pomoc będzie bardzo doceniona, utknąłem tutaj i nie wiem, jak się wydostać.
Dziękuję
Dziękuję za odpowiedź, rozumiem, jak to robisz, ale naprawdę brakuje mi poleceń, które muszą być użyte, aby wykonać to w VBA ... Jeśli ktoś wie, ja też się cieszę, że cię usłyszę od ciebie . – user2225351
Ostatnim razem, gdy sprawdzałem, LINQ nie mógł być użyty w VBA – MattE