da access2003 a 2016



  • da access2003 a 2016
    di antycapp (utente non iscritto) data: 15/09/2017 15:29:08

    Buongiorno a tutti,

    ho una piccola vecchia routine di access che dovrebbe leggere dal foglio2 di
    più file excel chiusi in una directory,
    due righe di dati contenuti in A1:V2 (comprese le intestazioni).
    Funzionava perfettamente in access 2003. Ora in access 2016 mi dà errore
    dopo avermi fatto scegliere la directory con i file dentro,
    su application.filesearch.

    C'è qualcuno che può aiutarmi per favore?

    Incollo qui le routine che provvedono a fare gli import dei vari files e che
    non funzionano più.


    GRAZIE MILLE per qualsiasi info al riguardo
    Antonio
     
    Public Function importa_dati()
    
    Dim FD As FileDialog     'Dichiarazione della variabile "fd" come una variabile FileDialog object.
    Set FD = Application.FileDialog(msoFileDialogFolderPicker)     'creiamo l'oggetto FileDialog come finestra di dialogo per le cartelle e lo 'assegniamo alla variabile "fd"
    
    'Sotto: dichiarariamo la variabile "CartellaSelezionata" che conterrà il percorso della cartella selezionata. Sebbene il percorso sia una 'Stringa la variabile deve essere Variant perché il Ciclo For Each... Next lavora solo con variabili Variant o Objects
    Dim CartellaSelezionata As Variant
    
    With FD   'Usiamo  l'istruzione With...End With per eseguire una serie di istruzioni  con l'oggetto FileDialog.
    
    'Usiamo il metodo Show per mostrare la dialog box ed usiamo la condizione If per verificare se l'utente ha premuto il pulsante (di azione, 'di conferma) "OK"
    
    If .Show = -1 Then  'se è stato premuto il pulsante di conferma che restituisce  -1 (il pulsante di annullamento restituirebbe 0) allora:
    
    'iniziamo un ciclo For Each Next necessario per scorrere l'insieme delle cartelle (la Colletion del FileDialogSelectedItems) nella finestra '"Sfoglia".
    For Each CartellaSelezionata In .SelectedItems
    
    miaCartella = CartellaSelezionata  'assegniamo alla variabile "miaCartella" il percorso della cartella che avremo selezionato
    
    Next
    Else          'se invece avremo premuto annullamento
    Exit Function          'usciamo dalla routine.
    End If       'fine della condizione da verificare
    End With    'fine istruzione With
    
    Set cercafile = Application.FileSearch
    With cercafile
        .LookIn = miaCartella
        .FileName = "*.XLS"
        .FileName = "*.ODS"
        .FileName = "*.XLSX"
        If .Execute > 0 Then
            MsgBox "Processerò " & .FoundFiles.Count & _
                " file(s)."
            For i = 1 To .FoundFiles.Count
                DoCmd.TransferSpreadsheet acImport, , _
        "REFE", .FoundFiles(i), True, "Foglio2!A1:V2"
                'MsgBox .FoundFiles(i)
            Next i
        Else
            MsgBox "NESSUN FILE NELLA DIRECTORY"
        End If
    End With
            
    
    
    
        
            
    
    
    
    End Function
    
    
    
    
    Sub SelezionaCartella_CaricaNomiFiles()
    
    Dim FD As FileDialog     'Dichiarazione della variabile "fd" come una variabile FileDialog object.
    Set FD = Application.FileDialog(msoFileDialogFolderPicker)     'creiamo l'oggetto FileDialog come finestra di dialogo per le cartelle e lo 'assegniamo alla variabile "fd"
    
    'Sotto: dichiarariamo la variabile "CartellaSelezionata" che conterrà il percorso della cartella selezionata. Sebbene il percorso sia una 'Stringa la variabile deve essere Variant perché il Ciclo For Each... Next lavora solo con variabili Variant o Objects
    Dim CartellaSelezionata As Variant
    
    With FD   'Usiamo  l'istruzione With...End With per eseguire una serie di istruzioni  con l'oggetto FileDialog.
    
    'Usiamo il metodo Show per mostrare la dialog box ed usiamo la condizione If per verificare se l'utente ha premuto il pulsante (di azione, 'di conferma) "OK"
    
    If .Show = -1 Then  'se è stato premuto il pulsante di conferma che restituisce  -1 (il pulsante di annullamento restituirebbe 0) allora:
    
    'iniziamo un ciclo For Each Next necessario per scorrere l'insieme delle cartelle (la Colletion del FileDialogSelectedItems) nella finestra '"Sfoglia".
    For Each CartellaSelezionata In .SelectedItems
    
    miaCartella = CartellaSelezionata  'assegniamo alla variabile "miaCartella" il percorso della cartella che avremo selezionato
    
    Next
    Else          'se invece avremo premuto annullamento
    Exit Sub          'usciamo dalla routine.
    End If       'fine della condizione da verificare
    End With    'fine istruzione With
    
    End Sub