importazone file csv

Anonimo
2021-04-27T18:27:07+00:00

Buongiorno, dovrei importare in access i dati contenuti in file csv, generati ogni settimana da un sistema operativo.

I dati andrebbero in una tabella ed ad ogni aggiornamento non devo re importare record già presenti nella tabella.

Potete darmi un aiuto

grazie mille

Antonio

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

31 risposte

Ordina per: Più utili
  1. domenico laurenza 9,900 Punti di reputazione Moderatore volontario
    2021-04-29T09:19:44+00:00

    Per quanto riguarda la query:

    INSERT INTO REGISTRO_ESP ( [Tipo di Documento], Protocollo, [Data Protocollazione], Mittente, Oggetto, Titolario, Protocollo)

    SELECT [Export esposti].Campo1, [Export esposti].Campo2, [Export esposti].Campo5, [Export esposti].Campo7, [Export esposti].Campo8, [Export esposti].Campo11, REGISTRO_ESP.Protocollo

    FROM [Export esposti] LEFT JOIN REGISTRO_ESP ON [Export esposti].Campo2 = REGISTRO_ESP.Protocollo

    WHERE (((REGISTRO_ESP.Protocollo) Is Null));

    Perchè ripeti due volte Protocollo ?

    Mimmo

    La risposta è stata utile?

    0 commenti Nessun commento
  2. domenico laurenza 9,900 Punti di reputazione Moderatore volontario
    2021-04-29T08:40:24+00:00

    Ciao,

    per quanto riguarda il modulo, dal menu di Vba seleziona:

    Strumenti -> Riferimenti e aggiungi la libreria "Microsoft Office xxxx Object Library".

    Mimmo

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2021-04-29T05:15:20+00:00

    Ciao,

    prova in questo modo:

    1) effettua una importazione manuale di un file Csv salvando le specifiche di importazione.

    Nel mio esempio le ho denominate "Specifica di importazione" come vedrai in seguito nel codice Vba.

    2) Crea un modulo incollando il seguente codice Vba:

    Option Compare Database

    Option Explicit

    Function fImportaFile()

       Dim fDialog As Office.FileDialog

       Dim varFile As Variant

       Dim nomeFile As String

       

       Set fDialog = Application.FileDialog(msoFileDialogFilePicker)

     

       With fDialog

          .AllowMultiSelect = False

          .Title = "Selezionare il file da importare"

          .Filters.Clear

          .Filters.Add "CSV", "*.CSV"

          .Filters.Add "Tutti i files", "*.*"

     

          If .Show = True Then

              For Each varFile In .SelectedItems

                  nomeFile = varFile

              Next

          End If

       End With

       ' Elimino la tabella temporanea prima di importare il file csv 

       DoCmd.RunSQL "Drop Table Importato

       

       DoCmd.TransferText acImportDelim, "Specifica di importazione", "Importato", nomeFile, False

       

       DoCmd.SetWarnings False

       DoCmd.OpenQuery "qryAccodaImportato", acViewNormal

       DoCmd.SetWarnings True

    End Function

    Il codice ti consente di selezionare il file da importare. Utilizzando le specifiche di importazione di cui al punto 1 carica la tabella temporanea denominata Importato preventivamente eliminata.

    3) Crea una query d i accodamento del tipo seguente:

    INSERT INTO MOVCON ( Protocollo, ANNREG, NUMREG, SOCIETA, SIGLA, ANNO, Incassi, Uscite, [DESC], Data, DATREG, ANNOCOMPETENZA, CAUSALE )

    SELECT Importato.Campo1, Importato.Campo2, Importato.Campo3, Importato.Campo4, Importato.Campo5, Importato.Campo6, Importato.Campo7, Importato.Campo8, Importato.Campo9, Importato.Campo10, Importato.Campo11, Importato.Campo12, Importato.Campo13

    FROM Importato LEFT JOIN MOVCON ON Importato.Campo1 = MOVCON.Protocollo

    WHERE (((MOVCON.Protocollo) Is Null));

    Dal codice puoi vedere che ho chiamato la queryqryAccodaImportato

    Facci sapere se hai problemi e se ho dimenticato io qualcosa :-)

    Ciao Mimmo

    Questa è la query se utile

    INSERT INTO REGISTRO_ESP ( [Tipo di Documento], Protocollo, [Data Protocollazione], Mittente, Oggetto, Titolario, Protocollo )

    SELECT [Export esposti].Campo1, [Export esposti].Campo2, [Export esposti].Campo5, [Export esposti].Campo7, [Export esposti].Campo8, [Export esposti].Campo11, REGISTRO_ESP.Protocollo

    FROM [Export esposti] LEFT JOIN REGISTRO_ESP ON [Export esposti].Campo2 = REGISTRO_ESP.Protocollo

    WHERE (((REGISTRO_ESP.Protocollo) Is Null));

    Questo è il modulo modificato secondo le mie denominazioni

    Option Compare Database

    Option Explicit

    Function fImportaFile()

       Dim fDialog As Office.FileDialog

       Dim varFile As Variant

       Dim nomeFile As String

       Set fDialog = Application.FileDialog(msoFileDialogFilePicker)

       With fDialog

          .AllowMultiSelect = False

          .Title = "Selezionare il file da importare"

          .Filters.Clear

          .Filters.Add "CSV", "*.CSV"

          .Filters.Add "Tutti i files", "*.*"

          If .Show = True Then

              For Each varFile In .SelectedItems

                  nomeFile = varFile

              Next

          End If

       End With

       ' Elimino la tabella temporanea prima di importare il file csv

       DoCmd.RunSQL "Drop Table Export Esposti"

       DoCmd.TransferText acImportDelim, "Importa-exportespostii", "Export Esposti", nomeFile, False

       DoCmd.SetWarnings False

       DoCmd.OpenQuery "qryAccodaImportato", acViewNormal

       DoCmd.SetWarnings True

    End Function

    .....non ho capito come attivare il modulo al netto di quanto ti ho segnalato nel precedente post

    grazie mille

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2021-04-29T04:54:56+00:00

    Ciao Mimmo ho provato a creare il modulo, ma si blocca alla prima riga

    Dim fDialog As Office.FileDialog

    restituendomi questo messaggio

    errore di compilazione -Tipo definito dall'utente non definito

    Grazie

    Antonio

    La risposta è stata utile?

    0 commenti Nessun commento
  5. Anonimo
    2021-04-28T19:54:28+00:00

    Mimmo pro vo se funziona domani

    Ti sono molto grato comqunue per l'attenzione

    Antonio

    La risposta è stata utile?

    0 commenti Nessun commento