Importare dati da Excel in Access con verifica dei dati variati e da sostituire

Anonimo
2016-02-19T08:10:49+00:00

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.

  1. 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.
  2. è 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.

Microsoft 365 e Office | Access | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

7 risposte

Ordina per: Più utili
  1. Anonimo
    2016-02-20T18:20:26+00:00

    Ciao Mimmo,grazie per il prezioso consiglio. Provo ad applicare quanto mi suggerisci e ti faccio sapere. Ti auguro buon weekend. Ciao Nicola.

    La risposta è stata utile?

    1 persona ha trovato utile questa risposta.
    0 commenti Nessun commento
  2. Anonimo
    2016-02-19T15:15:46+00:00

    Ti dicevo di collegare il foglio Excel piuttosto che importarlo perché così eviti il problema di epurarlo preventivamente.

    Anche se il foglio Excel contiene nuove colonne le puoi ignorare.

    Poi puoi scrivere un codice di bilanciamento tra la vecchia e nuova tabella per verificare le eventuali modifiche o nuovi inserimenti.

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2016-02-19T15:10:01+00:00

    Ciao Mimmo vorrei aggiungere che la Tabella1 fa parte di un DB in rete e sulla quale vengono effettuate interrogazioni, ricerche, modifiche e stampe dei dati ivi riportati, quindi ho la necessità di poter fare quello che ho descritto poco fa.

    Ciao Nicola.

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2016-02-19T15:06:43+00:00

    Ciao Mimmo, grazie innanzitutto per avermi risposto.

    Ti spiego meglio la mia realtà lavorativa.

    Mensilmente (come ho precisato sopra) ricevo un file di Excel contenente dei dati che sovrascrivo a quelli già inseriti nella Tabella1 nel mese precedente.

    1. Prima di sovrascrivere i dati, eseguo più procedure manuali con funzioni del tipo Cerca.vert, formattazioni condizionali ecc. per poter verificare le differenze tra il File nuovo di Excel e quello del mese precedente.
    2. ora come dicevo sopra elimino pure alcune colonne (dal file di Excel nuovo appena ricevuto dal reparto) che non mi servono e lascio solo quelle che come intestazioni di colonna contengono i campi della Tabella1 e cioè:

    MATRICOLA: chiave primaria

    GRADO:        TESTO 10

    COGNOME:  TESTO 100

    NOME:         TESTO 100

    RUOLO:        TESTO 20

    IBAN:           TESTO 100

    DATAVARIAZIONE:  DATA TIPO 01/01/2016

    1. Appena ottenuto il file depurato dai dati a me non utili lo acquisisco nella Tabella1 con il codice di Sandro Peruz.

    Ecco, non si potrebbero automatizzare le procedure che ora eseguo manualmente e che ti ho appena descritto?

    Quindi il mio intento è quello di poter in successione e tramite codice fare queste operazioni:

    1. confrontare i dati del nuovo file di Excel con i dati già presenti nella Tabella1
    2. sostituire eventuali dati cambiati  ( per esempio se è cambiato l'IBAN o altro dati della stessa Matricola "chiave primaria"
    3. aggiungere il nuovo dato se non presente nellaTabella1.

    Spero di essere stato chiaro e comprensibile Mimmo.

    Ciao Nicola.

    La risposta è stata utile?

    0 commenti Nessun commento
  5. Anonimo
    2016-02-19T14:40:42+00:00

    Ciao Nicola,

    piuttosto che importare il foglio Excel lo potresti semplicemente collegare. In tal modo lo vedresti come una qualsiasi tabella Access.

    Mimmo

    La risposta è stata utile?

    0 commenti Nessun commento