Copia file su cartella specifica

di il
5 risposte

Copia file su cartella specifica

Ciao a tutti,
ho una routine in pulsante di una maschera singola che genera una finestra di (picker) sulle rissorse del computer permettendo all'utente di selezionare una cartella dalla quale copiare i file in un'altra cartella associata al numero di progetto
Private Sub cmdAddLink_Click()
    Dim strTipoScheda As String, strPath1 As String, strNewPath As String
    Dim dlgPicker As FileDialog
    Dim strName As String
    
    strPath1 = stPrjPathRelease & Forms.frmPrjdet.PrjNr
 
    ' Grab a copy of the Office file dialog
    Set dlgPicker = Application.FileDialog(msoFileDialogFolderPicker)
    With dlgPicker
            ' Set the dialog title
            .title = GetMsgPath(MsgLink.SelectPath)
            ' Make sure the filter list is clear
            .Filters.Clear
                End With
    
    'imposto i parametri comuni del dialogbox
    With dlgPicker
        ' Set the button caption
        .ButtonName = "Select"
        ' Select only one file
        .AllowMultiSelect = False
        ' Set the initial path name
        If IsNothing(gstrPath_last) Then
            .InitialFileName = strPath1
        Else
            .InitialFileName = gstrPath_last
        End If
        ' Show files as thumbnails
        .InitialView = msoFileDialogViewDetails
        ' Show the dialog and test the return
        If .Show = 0 Then
            ' Didn't pick a file - bail
            Exit Sub
        End If
        ' Should be only one filename - grab it
        strNewPath = Trim(.SelectedItems(1))
    End With
    Set dlgPicker = Nothing
    If Not IsNothing(strNewPath) Then
        'memorizzo l'ultima ricerca
        'gstrPath_last = GetParentPath(strPath)
        gstrPath_last = strNewPath
        Call SetCurrentDirectory(stFoldDoc)
        'compongo il nome del file o della cartella per rinominare in FixLink
        strName = "[" & Me.PrjNr & "]" 
        'rinomino il file o la cartella secondo la regola di cui sopra (se possibile)
        strPath1 = FixLinkCopy(strNewPath, strPath1, strName)
    
        'Set an error trap
        On Error Resume Next
        
           End If
End Sub

Tutto funziona tranne il fatto che dalla finestra di dialogo posso vedere le cartelle ma non i file in essa contenuti.. E' forse un problema di parametri al codice che genera il picker? O manca qualche referenza visual basic? Grazie per ogni eventuale consiglio.
Ciao

5 Risposte

  • Re: Copia file su cartella specifica

    Non è che per caso hai usato
    msoFileDialogFolderPicker
    
    (ti seleziona solo la cartella)
    anzichè
    msoFileDialogFilePicker
    comunque ti consiglio di cercare in rete riguardo l'utilizzo di filedialog in late binding anziche in early binding, ti evita il riferimento a Microsoft Access 12.0 (o 11.0) Object Library se devi utilizzare l'applicativo su più pc.
  • Re: Copia file su cartella specifica

    Questo codice non richiede Riferimenti alla LIB OFFICE
    
    Option Compare Database
    Option Explicit
    
    Public Function fFileDialog(Optional Filename = "", Optional FolderOnly As Boolean = False)
       
        Const msoFileDialogFolderPicker = 4
        Const msoFileDialogFilePicker = 3
        Const msoFileDialogViewDetails = 2
        
        Dim fd As Object
        
        Dim varItems As Variant
        Dim flPath As Variant
        If FolderOnly Then
            Set fd = Application.FileDialog(msoFileDialogFolderPicker)
        Else
            Set fd = Application.FileDialog(msoFileDialogFilePicker)
        End If
    
        With fd
           .AllowMultiSelect = True
           .InitialView = msoFileDialogViewDetails
           .InitialFileName = Filename
           If .Show = True Then
               For Each varItems In .SelectedItems
                   flPath = varItems
               Next
           End If
        End With
    End Function
  • Re: Copia file su cartella specifica

    Grazie ad entrambi, ho applicato le due soluzioni e ovviamente funzionano .
    Ciao
  • Re: Copia file su cartella specifica

    Buongiorno,

    un'informazione riguardo a questa funzione, come posso controllare se il file caricato è già esistente?
  • Re: Copia file su cartella specifica

    Il 3D è troppo vecchio per agganciarti a questo... non credi.
    Aprine uno NUOVO ed eventualmente riporta il LINK a questo, aggiungi anche dei dettagli in quanto non si capisce cosa devi controllare e come..., se in tabella o se in cartella o cos'altro...
Devi accedere o registrarti per scrivere nel forum
5 risposte