Condividi tramite

Popolare colonna con lista file presente in una cartella

Anonimo
2023-02-23T10:56:32+00:00

Buongiorno,

vorrei chiedere il vostro supporto in quanto non riesco ad impostare correttamente un foglio di lavoro.

La mia esigenza è quella di leggere i nomi di file pdf presenti all'interno di una directory e popolare una colonna del mio file excel con la lista estratta.

Purtroppo sto incontrando due problemi che vi riporto di seguito.

Ho provato a fare quanto segue:

  1. Ho inserito nella cella B2 un path con due file pdf, C:\DATI\**********\Desktop\TEST_SCRIPTS\*pdf
  2. In Definisci Nomi ho creato una formula chiamata ListaPDF in questo modo, =FILE.IN.DIRECTORY(CONCAT!$B$1)
  3. Nella cella A4 ho scritto la formula =INDICE(ListaPDF;A1) per estrarre il contenuto dell'array che spero di creare correttamente al punto 2

Primo problema: Estrae un solo file nella cella A5 mentre nella cella A4 riporta ND.

Secondo problema: Salvo il file in formato Cartella di lavoro con attivazione macro di Excel (*.xlsm), quando lo riapro se clicco nella cella B2 dove ho inserito il path e provo a cambiarlo, le celle A4 e A5 dove mi aspetto i nomi dei file si resettano e mi restituiscono ?NOME.

Potreste cortesemente aiutarmi a capire cosa non va?

Grazie mille

Alberto

Microsoft 365 e Office | Excel | Per il lavoro | 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

Risposta accettata dall'autore della domanda

Anonimo
2023-02-24T13:57:30+00:00

Ciao Alberto,

Ciao Norman,

ho capito il problema, le macro erano disattivate dalla mia organizzazione tramite le gpo.

Me le sono fatte attivare ed ora riesco a far funzionare i file anche dopo averli salvati e non ho più l'errore con il path.

Solo che non capisco come far uscire tutti i file presenti in una cartella seguendo il tuo esempio.

Inserendo come nel tuo caso sempre la stessa formula in ogni cella mi viene estratto sempre e solo il primo file e non tutti quelli presenti nella cartella.

Immagine

Ho visto che tu hai inserito delle matrici nel tuo file, è possibile farlo funzionare anche senza?

Grazie mille ancora per il tuo preziosissimo aiuto!

Utilizzando Excel 365, come faccio io, inserendo la formula suggerita in una singola cella creerà automaticamente l'elenco completo dei file, uno sotto l'altro, , nelle celle sottostanti.

Non ho o utilizzo Excel 2019, ma potrebbe essere necessario inserire esplicitamente la formula in modalità matriciale, ossia confermando la formula con la combinazione di tasti CTRL+MAIUSC+INVIO.

A proposito, tornando, almeno momentaneamente, alla funzione macro di Excel 4 che hai descritto nel tuo post di apertura, a causa delle nuove funzionalità di sicurezza di Microsoft, oltre all'abilitazione delle macro, questa richiede l'abilitazione esplicita delle macro di Excel 4:

  • File
  • Opzioni
  • Centro protezione
  • Impostazione Centro protezione
  • Attiva macro di Excel 4.0 quando sono attivate macro VBA
       [![Immagine](https://learn-attachment.microsoft.com/api/attachments/f5abd9ee-be2b-43fb-95ca-73f80237f275?platform=QnA"https://learn-attachment.microsoft.com/api/attachments/132d94c7-657a-4d24-a1ac-7eaa36850e86?platform=QnA" rel="ugc nofollow">Immagine

La risposta è stata utile?

1 persona ha trovato utile questa risposta.
0 commenti Nessun commento

10 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2023-02-23T15:43:38+00:00

    Ciao Norman,

    ho visto, ma non so come sono riuscito a rompere anche il tuo file :)

    Ho fatto doppio clic sulla cella A1 dove si trova il path e la colonna con i nomi dei file è sparita ed è comparso solo #NOME?.

    Forse è qualche impostazione che ho nel mio pc?

    Ho controllato e prima ho utilizzato un file nuovo senza funzioni macro excel 4.

    Grazie mille

    Alberto

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2023-02-23T15:22:36+00:00

    Ciao Alberto,

    ti ringrazio infinitamente per queste preziose informazioni.

    Ho provato a configurare il mio foglio di lavoro in questo modo e devo dire che funziona molto meglio delle funzioni 4.0 ma vedo che dopo il salvataggio quando riapro il file ho ancora lo stesso problema.

    Appena clicco nella cella B4 le celle A8 e A9 diventano #NOME?.

    Sembra quasi che quando apro il file dopo averlo salvato non capisce più che nella cella B4 c'è un path.

    Immagine

    Inoltre appena scrivo la formula mi da solo il primo file dei due ho messo nella cartella, non mi estrae gli altri file.

    Usando l'UDF che ho pubblicato, non riscontro nessuno dei problemi che descrivi. L'unica potenziale difficoltà che potrei immaginare potrebbe verificarsi se avessi creato un nome definito, utilizzando la tua funzione macro di Excel 4, e non l'avessi cancellato.

    Potresti scaricare il mio file di prova Albert20230223.xlsm

    ===

    Regards,

    Norman

    Immagine

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2023-02-23T14:54:01+00:00

    Ciao Norman,

    ti ringrazio infinitamente per queste preziose informazioni.

    Ho provato a configurare il mio foglio di lavoro in questo modo e devo dire che funziona molto meglio delle funzioni 4.0 ma vedo che dopo il salvataggio quando riapro il file ho ancora lo stesso problema.

    Appena clicco nella cella B4 le celle A8 e A9 diventano #NOME?.

    Sembra quasi che quando apro il file dopo averlo salvato non capisce più che nella cella B4 c'è un path.

    Appena apro il file dopo il salvataggio in xlsm

    Dopo che clicco nella cella B4

    Immagine

    Inoltre appena scrivo la formula mi da solo il primo file dei due ho messo nella cartella, non mi estrae gli altri file.

    Grazie mille
    Alberto

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2023-02-23T13:14:47+00:00

    Ciao Alberto,

    vorrei chiedere il vostro supporto in quanto non riesco ad impostare correttamente un foglio di lavoro.

    La mia esigenza è quella di leggere i nomi di file pdf presenti all'interno di una directory e popolare una colonna del mio file excel con la lista estratta.

    Purtroppo sto incontrando due problemi che vi riporto di seguito.

    Ho provato a fare quanto segue:

    1. Ho inserito nella cella B2 un path con due file pdf, C:\DATI\**********\Desktop\TEST_SCRIPTS\*pdf
    2. In Definisci Nomi ho creato una formula chiamata ListaPDF in questo modo, =FILE.IN.DIRECTORY(CONCAT!$B$1)
    3. Nella cella A4 ho scritto la formula =INDICE(ListaPDF;A1) per estrarre il contenuto dell'array che spero di creare correttamente al punto 2

    Primo problema: Estrae un solo file nella cella A5 mentre nella cella A4 riporta ND.

    Secondo problema: Salvo il file in formato Cartella di lavoro con attivazione macro di Excel (*.xlsm), quando lo riapro se clicco nella cella B2 dove ho inserito il path e provo a cambiarlo, le celle A4 e A5 dove mi aspetto i nomi dei file si resettano e mi restituiscono ?NOME.

    Potreste cortesemente aiutarmi a capire cosa non va?

    Anch'io ho riscontrato vari problemi con l'uso di questa antica funzione Excel 4.

    Pertanto, preferisco usare un UDF (funzioni utente) del seguente genere:

    • Alt+F11 per aprire l'editor di VBA
    • Alt+IM per inserire un nuovo modulo di codice
    • Nel nuovo modulo vuoto, incolla il seguente codice:

    '========>>

    Option Explicit

    Option Compare Text

    '-------->>

    Public Function Elenca_File(ByVal sFolderPath As String, Optional sEstensione As String = "pdf") As Variant

    Dim oFile As Object 
    
    Dim oFSO As Object 
    
    Dim oFolder As Object 
    
    Dim oFiles As Object 
    
    Dim arrFile() As Variant 
    
    Dim sFileExt As String 
    
    Dim i As Long 
    
    Set oFSO = CreateObject("Scripting.FileSystemObject") 
    
    Set oFolder = oFSO.GetFolder(sFolderPath) 
    
    Set oFiles = oFolder.Files 
    
    For Each oFile In oFiles 
    
        sFileExt = oFSO.GetExtensionName(oFile) 
    
        If sFileExt Like sEstensione Then 
    
            i = i + 1 
    
            ReDim Preserve arrFile(1 To i) 
    
            arrFile(i) = oFile.Name 
    
         End If 
    
    Next oFile 
    
    Elenca\_File = Application.Transpose(arrFile) 
    

    End Function

    '<<========

    • Alt+Q per chiudere l'editor di VBA e tornare a Excel.
    • Salva il file con l'estensione xlsm

    Questa funzione può essere utilizzata come una funzione nativa di Excel e gli esempi tipici potrebbero essere:

     **=Elenca\_File(A1;"pdf")**
    
     **=Elenca\_File(A1;"csv")**
    
     **=Elenca\_File(A1;"xlsx")**
    
     **=Elenca\_File(A1;"xlsm")**
    
     **=Elenca\_File(A1;"xls?")**
    

    ===

    Regards,

    Norman

    Immagine

    La risposta è stata utile?

    0 commenti Nessun commento