Buongiorno a tutti, tempo fa ho adattato alle mie esigenze un codice dell'amico Sandro Peruz con il quale importo in una tabella dei dati inseriti in un foglio di Excel, che ha le intestazioni di colonna come i campi della tabella di Access.
Ho un campo come chiave primaria chiamato MATRICOLA.
Il tutto è andato bene per poco tempo fino a quando è cambiato il file di Excel dal quale importo i dati, cioè si sono aggiunte nuove colonne di dati che a me non servono e che mi costringono ad operazioni manuali del tipo: eliminare dal File di Excel tutte
le colonne che non mi interessano, riportarlo alla formattazione originale ( cioè con i campi della Tabella1) e poi acquisire i dati.
I campi della tabella1 sono:
MATRICOLA: chiave primaria
GRADO: TESTO 10
COGNOME: TESTO 100
NOME: TESTO 100
RUOLO: TESTO 20
IBAN: TESTO 100
DATAVARIAZIONE: DATA TIPO 01/01/2016.
- Con il vostro aiuto desidererei poter importare i dati dal foglio di Excel senza dover ogni volta eliminare le colonne non di mio interesse dato
che sempre e comunque, nel foglio di Excel ci sono sempre le colonne ( oltre a nuove colonne che elimino e che si chiamano data di nascita; città, cap, indirizzo, ecc.) che riportano i nomi dei campi della Tabella1.
- è possibile poter nel momento in cui si importano i dati nella Tabella1 poterli confrontare con quelli già esistenti e poterli aggiornare (inserendo nel campo DATAVARIAZIONE la data in cui è avvenuta la modifica del dato).
Questo è necessario perché i dati che vengono prelevati dal Foglio di Excel mensilmente riportano (rispetto al mese precedente) per alcuni dipendenti, dei dati variati tipo IBAN, GRADO e a volte anche l'inserimento di nuovi dipendenti assunti o trasferiti
al mio reparto.
Spero di essere stato chiaro, ringrazio chi mi aiuta in questo e resto a disposizione per eventuali chiarimenti.
Questo è il codice che attualmente uso per importare i dati da Excel.
Public Sub importXLS()
On Error GoTo errorHandler
Dim strPathFullPathXlS As String
Dim strTable As String
Dim strRange As String
Dim myCount As Long
Dim myCount2 As Long
strPathFullPathXlS = "C:\Users\xxxxxxx\Desktop\AGGIORNADATI - Copia.xls"
strRange = "A1:F5369"
strTable = "Tabella1"
myCount = DCount("*", "Tabella1")
DoCmd.SetWarnings False
DoCmd.TransferSpreadsheet transfertype:=acImport _
, spreadSheettype:=acSpreadsheetTypeExcel8 _
, tableName:=strTable _
, FileName:=strPathFullPathXlS _
, hasfieldnames:=True _
, range:=strRange _
DoCmd.SetWarnings True
myCount2 = DCount("*", "Tabella1")
If myCount2 - myCount = 0 Then
VBA.MsgBox "nessun record accodato", vbInformation, "avviso"
Else
VBA.MsgBox "accodati," & myCount2 & " records.", vbInformation, "avviso"
End If
ext_errorLoadAccountHandler:
Exit Sub
errorHandler:
With Err
MsgBox "ERR#" & .Number _
& vbNewLine & .Description _
, vbOKOnly Or vbCritical
End With
Resume ext_errorLoadAccountHandler
End Sub
Ciao Nicola.