Memorizzazione percorso cartella

di il
5 risposte

Memorizzazione percorso cartella

Buonasera a tutti,
uso questo codice per memorizzare il percorso del file allegato ad una commessa:

Public Function cmdFileDialog2() As String

Dim fDialog As Object
Dim strFile As String
Dim varFiles As Variant
Set fDialog = Application.FileDialog(3)
With fDialog

.Title = "Seleziona il file da allegare in PDF:"

.AllowMultiSelect = False
.Filters.Clear
.Filters.Add "files PDF", "*.pdf"
.InitialFileName = strPathPDF
If .show Then
For Each varFiles In .SelectedItems
strFile = strFile & ";" & varFiles
Next
Else
strFile = vbNullString
End If
End With
cmdFileDialog2 = Mid$(strFile, 2)

End Function

vorrei però in un altro programma memorizzare in un campo solo il percorso di dove si trovano i files in modo da aprire la cartella e consultare allegati di varia natura jpg pdf doc ecc.ecc. Non devo memorizzare il percorso del singolo file, ma la cartella.
Come posso fare?
Per aprire la cartella potrei usare il seguente codice

Dim cartella As String
cartella = "C:\temp"
Shell "explorer.exe " + cartella, vbNormalFocus

End Sub


ma devo poter memorizzare il percorso diverso per commessa.
Mi date una mano?
Grazie
Giuseppe

5 Risposte

  • Re: Memorizzazione percorso cartella

    1. In base al regolamento ti suggerisco di racchiudere il codice VBA entro i CODE per farlo apparire con i caratteristici font tipo Courier New, più familiari ai programmatori.

    2.

    giuseppe21965 ha scritto:


    ma devo poter memorizzare il percorso diverso per commessa.
    Non riesco a seguire la logica del codice, nè ho capito come vorresti realizzare ciò.
    Più semplicemente, hai pensato anche all'istruzione
    Application.FollowHyperlink
    con tutti i suoi argomenti?
    Leggi qui per saperne di più
    https://msdn.microsoft.com/en-us/vba/access-vba/articles/application-followhyperlink-method-access
  • Re: Memorizzazione percorso cartella

    Se hai il Percorso INTERO puoi recuperare il Path facendo lo Strip della stringa...
    Come sai il Percorso si ricava leggendo con INSTRREV la posizione del carattere "\" ultimo... e quanto viene prima è il PATH.
    Public Function GetFilePath(strPath As String) As String
        Dim strIn   As String
        strIn = Mid$(strPath, 1, InStrRev(strPath, "\"))
        GetFilePath = strIn
    End Function
    In quel caso avresti risolto.
    Cosa diversa è se hai strutturato una particolare PATH per Commessa, allora questo campo deve essere memorizzato nella Commessa come Campo PATH, ed a quel punto i FIle Allegati alla Commessa avranno solo il NomeFIle, ed il Path completo verrà fatto per concatenazione.
  • Re: Memorizzazione percorso cartella

    Grazie Alex per la risposta, ma magari mi sto perdendo in un bicchiere d'acqua. Io già il file lo memorizzo ma avrei solo bisogno di memorizzare il percorso cartella e non il file in modo esplorarla in un secondo tempo, ovviamente è diverso per commessa.
  • Re: Memorizzazione percorso cartella

    Ho trovato soluzione Vi allego codice che può servire anche ad altri.

    Set fDialog = Application.FileDialog(msoFileDialogFolderPicker)

    'Optional: FileDialog properties
    fDialog.Title = "Select a folder"
    fDialog.InitialFileName = "C:\"

    If fDialog.Show = -1 Then
    Debug.Print fDialog.SelectedItems(1)
    End If
    Dim strFile As String


    strFile = fDialog.SelectedItems(1)

    Me.cartella = strFile
    End Sub



    Ne approfitto per chiedere un consiglio:
    vorrei creare un file .ini dove inserisco i percorsi di partenza senza dover intervenire sul codice quando si cambia.
    Che strada mi consigliate di seguire?
    Grazie ancora.
  • Re: Memorizzazione percorso cartella

    giuseppe21965 ha scritto:


    Ho trovato soluzione Vi allego codice che può servire anche ad altri.
    Mi pare che quello che hai fatto non sia la soluzione alla domanda, ma hai solo impostato la proprietà del FileDialog per ottenere una Folder...!

    E' evidente che il problema è come gestirlo poi...!

    giuseppe21965 ha scritto:


    Ne approfitto per chiedere un consiglio:
    vorrei creare un file .ini dove inserisco i percorsi di partenza senza dover intervenire sul codice quando si cambia.
    Che strada mi consigliate di seguire?
    Grazie ancora.
    Ma non si usa un File INI... hai un Database, e vuoi usare un File INI...????
    Hai almeno 2 Opzioni da usare:
    
    1° Tabella di LocalSettings come normalmente si fa... dentro il Nome del Campo è fruibile come da File INI...[code]
        NomeProperty (Stringa)
        Valore (Stringa)
        Nella Tabella salvi 
        NomeProperty = "StartFolder"
        Valore = "C:\TuaFolder\"
    
    2 Usare il Registro di Access, con GetSettings e SaveSettings
Devi accedere o registrarti per scrivere nel forum
5 risposte