Combobox apri file



  • Combobox apri file
    di agio80 (utente non iscritto) data: 15/11/2013 00:59:44

    Ciao a tutti

    Volevo chiedervi se è possibile creare un form con delle caselle combinate che funzionino come un "esplora risorse" per aprire un file tramite un commandbutton. Mi spiego meglio, nella prima casella combinata ho l'elenco delle cartelle della directory scelta inizialmente, nella seconda casella combinata ho l'elenco delle cartelle presenti nella cartella selezionata nella prima directory.... e via di seguito fino ad arrivare all'ultima casella combinata dove vedro' il file da aprire, e con un click sul cmdbutton il gioco è fatto.....Si puo'? Vi ringrazio anticipatamente per l'attenzione



  • di patel data: 15/11/2013 07:50:00

    non c'è bisogno di un form per ottenere quanto chiedi, si fa semplicemente con questa macro
     
    Sub Open_File()
    Dim fd As FileDialog, SelFile
    Set fd = Application.FileDialog(msoFileDialogFilePicker)
    Set wb = ActiveWorkbook
    If fd.Show = -1 Then
       SelFile = fd.SelectedItems(1)
       ActiveCell.Value = SelFile
       Workbooks.Open Filename:=SelFile
    End If
    End Sub






  • di Vecchio Frac data: 15/11/2013 18:26:49

    Per completezza di informazione, esiste anche il metodo GetOpenFileName dell'oggetto Application, forse più maneggevole anche se offre meno opzioni.
     
    selFile = Application.GetOpenFilename("Text Files (*.txt), *.txt")
    If fileToOpen <> False Then
        ActiveCell.Value = selFile
        Workbooks.Open Filename:=SelFile
    End If






  • di Vecchio Frac data: 15/11/2013 18:27:56

    Il codice appena postato, ovviamente, presenta il filtro sui file di testo. Bisogna cambiarlo come conviene per aprire altri tipi di file ^_^





  • di agio80 (utente non iscritto) data: 15/11/2013 20:03:40

    Grazie per l'immediata risposta.
    In realtà io volevo fare il form con le caselle combinate che indicano le cartelle nidificate tra loro per evitare di aprire la classica finestra di windows per l'apertura dei files.... mi sa che non si puo'.... ;(
    Grazie lo stesso



  • di Vecchio Frac data: 15/11/2013 20:08:28

    Ma sì che si può fare, solo che è un po' inutile, nel senso che le file dialog sono state messe lì apposta per far risparmiare codice :)
    Comincia a costruire il tuo form.
    Poi crei degli oggetti filesystemobject che leggono drive, folders, subfolders e file e mettono tutti questi dati nelle combo che ti occorrono.





  • di agio80 (utente non iscritto) data: 15/11/2013 20:21:40

    Velocissimo Frac......
    Lo sapevo che la mia era una richiesta bizzarra.....
    Scusa se ti chiedo ma sono alle primissime armi cosa significa:
    "crei degli oggetti filesystemobject che leggono drive, folders, subfolders e file e mettono tutti questi dati nelle combo che ti occorrono." Chiedo tanto se riesci a farmi un esempio? Scusa se ne approfitto. Grazie



  • di patel data: 16/11/2013 06:19:10

    leggi qui
    www.homeandlearn.org/an_excel_picture_viewer_project.html





  • di agio80 (utente non iscritto) data: 16/11/2013 21:16:04

    Grazie Patel

    Ho visto quello che mi hai suggerito ma in realtà non è proprio quello che intendo fare. Forse mi sono spiegato male. Io praticamente intendo realizzare in excel un DMS ( document management system ) dove organizzare i vari documenti digitalizzati (bollette, buste paghe ,referti medici, etc...) in record e per tematiche, con la possibilità dopo aver interrogato l'archivio, di aprire il file del record interessato. Io avevo pensato ai combobox che leggevano il nome delle cartelle (tematiche, esempio cartella bollette contiene tutte le bollette) fino ad arrivare alla combobox che leggeva i files che aprivo con un button, ma se hai una idea migliore è bene accetta. Grazie per la disponibilità



  • di patel data: 17/11/2013 08:36:02

    Ti sei spiegato bene anche prima, ma non ho trovato niente in rete che risponde ai tuoi desideri, aspettiamo che vecchio Frac si spieghi meglio sulla creazione degli oggetti filesystemobject





  • di Vecchio Frac data: 17/11/2013 13:47:35

    Lo scenario è più preciso adesso.
    Se hai la possibilità di usare Access è meglio che ti approcci a questo.
    Un oggetto filesystemobject è semplicemente un oggetto creato mediante un riferimento a Scripting.FileSystemObject ed espone numerosi metodi e proprietà per accedere a dischi, cartelle, sottocartelle e files.
    L'oggetto si istanzia tipicamente così:
    Set fso = CreateObject("Scripting.FileSystemObject")
    e poi al suo interno trovi le proprietà che ti servono.
    Ad esempio, il breve codice

    for each f in fso.GetFolder("path").Files
    s = s & f.name & vbcrlf
    next
    msgbox s

    elenca in una finestra di messaggio tutti i file di una cartella.
    Se serve approfondiamo (quando avrò Excel a disposizione), ma ritengo che con Access ci siano possibilità migliori.





  • di patel data: 17/11/2013 14:18:37

    ma cosa cambia rispetto alle macro già proposte ?





  • di Vecchio Frac data: 17/11/2013 14:24:16

    Con la FileDialog dai la possibilità all'utente di selezionare un preciso file da una certa cartella. L'utente può sfogliare le cartelle e scegliere un file (o più).
    Con i metodi esposti dal file system object invece sei tu (non Excel) a livello di programmazione che offri all'utente l'elenco delle cartelle e dei file presenti in una certa posizione. Ma per fare questo devi prima leggerne il contenuto e memorizzarlo, o riversarlo in apposite list/combobox.
    Il nostro interlocutore vuole, per passaggi successivi, scegliere cartelle, sottocartelle e file ma non tutto in un colpo :)





  • di patel data: 17/11/2013 17:09:17

    intendi qualcosa del genere ? vedi file allegato





  • di agio80 (utente non iscritto) data: 17/11/2013 19:49:26

    Ok vedo che per me la cosa si fa troppo complicata... Vi ringrazio ugualmente per la considerazione avuta...
    Ho pensato di semplificare la cosa (forse....). E' possibile secondo voi, memorizzare il percorso dal filedialog in una cella? Potrebbe essere utile assegnare un campo del record per il percorso e poi usare la formula Collegamento.Iper.... in modo da aprire il file cliccando sulla cella.. Poi c'è un'altro problema, approfitto della vostra disponibilità, siccome io metterei tutto su una chiavetta usb che a secondo del computer in cui la uso cambia lettera (unità), c'è il modo di aggirare l'ostacolo in qualche modo.....

    Grazie ancora