Salve a tutti. Sono nuovo del "settore" e ho subito un bel problema impegnativo da risolvere.
Ve lo espongo brevemente per punti.
1) Un file Excel (un ottimizzatore) contiene un database che di mese in mese viene aggiornato con una nuova riga e i relativi record.
2) Questa nuova riga deve essere "caricata" all'interno di un database Access, per essere disponibile ad altre elaborazioni anche da parte di differenti utenti.
3) Il problema fondamentale da risolvere è come sfruttare ADO per "appendere" solo l'ultima riga disponibile (o meglio, incominciare ad "appendere" solo le righe successive alla più recente già presente nel database Access) e non tutto l'intero database ogni volta.
Ho trovato il seguente codice su un sito, ma non fa altro che trasferire un intero database. Com'è possibile customizzarlo secondo quanto indicato dal punto 3? Sarei eternamente grato al genio che potesse aiutarmi!! Sostanzialmente credo che ci sia qualcosa a che fare con la variabile r o in generale con i Recordset..
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.Jet.OLEDB.4.0; " & _
"Data Source=C:\FolderName\DataBaseName.mdb;"
' open a recordset
Set rs = New ADODB.Recordset
rs.Open "TableName", cn, adOpenKeyset, adLockOptimistic, adCmdTable
' all records in a table
r = 3 ' the start row in the worksheet
Do While Len(Range("A" & r).Formula) > 0
' repeat until first empty cell in column A
With rs
.AddNew ' create a new record
' add values to each field in the record
.Fields("FieldName1") = Range("A" & r).Value
.Fields("FieldName2") = Range("B" & r).Value
.Fields("FieldNameN") = Range("C" & r).Value
' add more fields if necessary...
.Update ' stores the new record
End With
r = r + 1 ' next row
Loop
rs.Close
Set rs = Nothing
cn.Close
Set cn = Nothing
End Sub