Importare i nomi dei file in una ListBox da un percorso conosciuto (Path).

Anonimo
2015-02-28T11:54:12+00:00

Carissimi amici, avrei bisogno del vostro utilissimo aiuto......

in un percorso definito e conosciuto (Path), come faccio a visualizzare in una listbox tutti i nomi dei file PDF contenuti in una determinata cartella?

Esempio

percorso:  "C:\Prova\Contatti"

da questo percorso vorrei importare e visualizzare in una listbox tutti i nomi dei file pdf contenuti nel citato percorso.....

Grazie sempre, aspetto le vostre preziosi suluzioni...

Un abbraccio e buona domenica

Carlo Raffaele

Microsoft 365 e Office | Excel | 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
Risposta accettata dall'autore della domanda
Anonimo
2015-02-28T23:32:53+00:00

Ciao Carlo,

Carissimi amici, avrei bisogno del vostro utilissimo aiuto......

in un percorso definito e conosciuto (Path), come faccio a visualizzare in una listbox tutti i nomi dei file PDF contenuti in una determinata cartella?

Esempio

percorso:  "C:\Prova\Contatti"

da questo percorso vorrei importare e visualizzare in una listbox tutti i nomi dei file pdf contenuti

Ciao Carlo,

l'ho già aperto un nuovo thread, dal titolo "Importare i nomi dei file in una ListBox da un percorso conosciuto (Path)."

ma non ho ricevuto risposte....

per questo mi ero rivolto a te personalmente......

Grazie sempre

Carlo Raffaele

Nel modulo di codice della tua Userform, prova:

'=========>>

Option Explicit

'--------->>

Private Sub UserForm_Initialize()

    Dim arrFile() As Variant

    Dim i As Long

    Dim sPath As String, sStr As String

    Dim sFileName As String

    Const sPercorso As String = "C:\Carlo"                         '<<==== Modifica

    Const sExt As String = "*.pdf"

    sStr = Application.PathSeparator

    If Right(sPercorso, 1) <> sStr Then

        sPath = sPercorso & sStr

    Else

        sPath = sPercorso

    End If

    sFileName = Dir(sPath & sExt)

    Do While sFileName <> ""

        i = i + 1

        ReDim Preserve arrFile(1 To i)

        arrFile(i) = sFileName

        sFileName = Dir

    Loop

    If CBool(i) Then

        Me.ListBox1.List = arrFile

    End If

End Sub

'<<=========

===

Regards,

Norman

La risposta è stata utile?

0 commenti Nessun commento

2 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2015-03-01T10:41:54+00:00

    Ciao Carlo,

    Norman, grazie infinite i tuoi costrutti sono eccezionali, ne approfitto per chiarirmi un'ultima cosa a questo problema:

    una volta importati i nomi dei file PDF nella ListBox, dove, l'utente selezionando da questa listbox un file, esso viene visualizzato in una AcroPDF (ho importato  l'ActiveX di Acrobat) attraverso la routine ListBox_Change...tutto bene fin qui, ma . . . se alla listbox cambio la proprietà MultiSelect  da

    0 - fmMultiSelectSingle  in  1 - fmMultiSelectMulti, la routine in ListBox_Change non visualizza il file PDF selezionato in listbox, detta routine è questa:

    Private Sub ListBox1_Change()

    With UserForm6

         FileDaVis$ = .ListBox1.Text

         FileDaVis$ = "C:\clienti\prov" & FileDaVis$

         .AcroPDF1.LoadFile FileDaVis$

     End With

    End Sub

    In definitiva la riga "FileDaVis$ = .ListBox1.Text" esce con variabile vuota (FileDaVis$=""), di conseguenza la stringa non è completa e non visualizza niente pur non dandomi nessun errore....

    Spero di essere stato chiaro....

    Un abbraccio e grazie ancora

    Carlo Raffaele

    P.S. In listbox3 la proprietà  ListStyle  è  impostata su  "1 - fmListStyleOption" (Ho necessita di far selezionare anche più file all'utente, per poi allegarlo/i ad una mail)

    A titolo di esempio, prova qualcosa del genere:

    '=========>>

    Option Explicit

    '--------->>

    Private Sub CommandButton1_Click()

        Dim sStr As Variant

        Dim i As Long, j As Long

        Dim ArrOut() As Variant

        With Me.ListBox1

            For i = 0 To .ListCount - 1

                If .Selected(i) = True Then

                    j = j + 1

                    ReDim Preserve ArrOut(1 To j)

                    ArrOut(j) = .List(i)

                End If

            Next i

            If j = 0 Then

                sStr = "Non hai selezionato alcun file"

            ElseIf CBool(j) Then

                sStr = Join(ArrOut, ",")

            Else

                sStr = .Value

            End If

            Call MsgBox(Prompt:=sStr, _

                        Buttons:=vbInformation, _

                        Title:="DEMO")

        End With

    End Sub

    '--------->>

    Private Sub UserForm_Initialize()

        Dim arrFile() As Variant

        Dim i As Long

        Dim sPath As String, sStr As String

        Dim sFileName As String

        Dim res As Variant

        Const sPercorso As String = "**C:\Users\NDJ\Documents**"          '<<==== Modifica

        Const sExt As String = "*.pdf"

        With Me

            .ListBox1.MultiSelect = fmMultiSelectMulti

            .CommandButton1.Caption = "Crea Elenco"

            sStr = Application.PathSeparator

            If Right(sPercorso, 1) <> sStr Then

                sPath = sPercorso & sStr

            Else

                sPath = sPercorso

            End If

            sFileName = Dir(sPath & sExt)

            Do While sFileName <> ""

                i = i + 1

                ReDim Preserve arrFile(1 To i)

                arrFile(i) = sFileName

                sFileName = Dir

            Loop

            If CBool(i) Then

                .ListBox1.List = arrFile

            End If

        End With

    End Sub

    '<<=========

    Io non utilizzo Acrobat, ma chiaramente, invece di utilizzare un MsgBox, potresti utilizzare un'istruzione del genere:

         Me .AcroPDF1.LoadFile sStr

    Potresti scaricare il mio file di prova Carlo20150301.xlsm a:

                                      http://1drv.ms/1G5WDhG

    ===

    Regards,

    Norman

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2015-03-01T02:14:18+00:00

    Norman, grazie infinite i tuoi costrutti sono eccezionali, ne approfitto per chiarirmi un'ultima cosa a questo problema:

    una volta importati i nomi dei file PDF nella ListBox, dove, l'utente selezionando da questa listbox un file, esso viene visualizzato in una AcroPDF (ho importato  l'ActiveX di Acrobat) attraverso la routine ListBox_Change...tutto bene fin qui, ma . . . se alla listbox cambio la proprietà MultiSelect  da

    0 - fmMultiSelectSingle  in  1 - fmMultiSelectMulti, la routine in ListBox_Change non visualizza il file PDF selezionato in listbox, detta routine è questa:

    Private Sub ListBox1_Change()

    With UserForm6

         FileDaVis$ = .ListBox1.Text

         FileDaVis$ = "C:\clienti\prov" & FileDaVis$

         .AcroPDF1.LoadFile FileDaVis$

     End With

    End Sub

    In definitiva la riga "FileDaVis$ = .ListBox1.Text" esce con variabile vuota (FileDaVis$=""), di conseguenza la stringa non è completa e non visualizza niente pur non dandomi nessun errore....

    Spero di essere stato chiaro....

    Un abbraccio e grazie ancora

    Carlo Raffaele

    P.S. In listbox3 la proprietà  ListStyle  è  impostata su  "1 - fmListStyleOption" (Ho necessita di far selezionare anche più file all'utente, per poi allegarlo/i ad una mail)

    La risposta è stata utile?

    0 commenti Nessun commento