Vba Directory

di il
9 risposte

Vba Directory

Devo sviluppare il seguente script:

Questa è la directory C:\Output

1) Nella directory ci sono delle sotto cartelle C:\Output\sottocartella1\sottocartella2, all'interno della sotto cartella 2 c'è un file .txt
Questo file devo spostare è riportare esattamente in C:\Output\sottocartella1
2) La sottocartella 2 lo devo eliminare
3) La sottocartella1 si deve rinominare e richiamare esattamente sottocartella1sottocartella2

Hai qualche esempio come si svolge?
Qualche suggerimento?

9 Risposte

  • Re: Vba Directory

    Utilizza il File Scripting Object
  • Re: Vba Directory

    Ho trovato su internet questo FileSystemObject in VBA?
  • Re: Vba Directory

    È una domanda? La fai a te stesso?
  • Re: Vba Directory

    Si era una domanda, chiedevo sa hai qualche esempio simile, in base al mio script da realizzare?
  • Re: Vba Directory

    Volevi dire questo con quella domanda? Mah ...

    No non ho esempi per il tuo problema (sarebbe una soluzione pronta del tuo problema, non un esempio... che senso avrebbe?) ma esiste tanta documentazione in giro per usare quel componente. Cerca e studia poi prova a scrivere del codice
  • Re: Vba Directory

    Mi puoi aiutare almeno su questa funzione?
    In pratica, deve cercare tutte le sottocartelle è all'interno ci sono i file
    Purtroppo il vba non mi piace è sono costretto di utilizzare per motivo di lavoro.
    
    Sub getFromSubFolder()
    
    Dim fso As Object
    Dim folder As Object
    Dim subfolders As Object
    
     Set fso = CreateObject("Scripting.FileSystemObject")
     Set folder = fso.GetFolder(Range("inputForm").Value)
     Set subfolders = folder.subfolders
     MyFile = "*.csv"
     
        For Each subfolders In subfolders
        
        Set CurrFile = subfolders.Files
            
            For Each CurrFile In CurrFile
                If CurrFile.Name = MyFile Then
                    
                    .........
                End If
            Next
           
        Next
         
        Set fso = Nothing
        Set folder = Nothing
        Set subfolders = Nothing
    End Sub
    
    

    Questo è il restante del codice
    
    Function BrowseFolder(Optional str As String) As String
        With Application.FileDialog(msoFileDialogFolderPicker)
            If str <> "" Then .InitialFileName = str
            .AllowMultiSelect = False
            If .Show = -1 Then
                BrowseFolder = .SelectedItems(1)
            End If
        End With
    End Function
    
    Sub GetToFolder()
        Dim res As String
        res = BrowseFolder(Range("OutputForm").Value)
        If res <> "" Then
            Range("OutputForm").Value = res
        End If
    End Sub
    
    Sub Move_XL_Files()
    
        Dim sourcePath As String
        Dim extn, fil
        Dim filCount As Long
        
        If Range("inputForm").Value <> "" And Range("OutputForm").Value <> "" Then
            If Range("inputForm").Value <> Range("OutputForm").Value Then
                If Right(Range("inputForm").Value, 1) = "\" Then
                    sourcePath = Left(Range("inputForm").Value, Len(Range("inputForm").Value) - 1)
                Else
                    sourcePath = Range("inputForm").Value
                End If
                
                extn = Array("*.csv", "*.xls")
                filCount = 0
                For Each ext In extn
                    fil = Dir(sourcePath & "\" & ext)
                    Do While fil <> ""
                        FileCopy sourcePath & "\" & fil, Range("OutputForm").Value & "\" & fil
                        Kill sourcePath & "\" & fil
                        fil = Dir(sourcePath & "\" & ext)
                        filCount = filCount + 1
                    Loop
                Next ext
                MsgBox "File successo", vbInformation, "Success!"
            Else
                MsgBox "File non ha avuto successo"
            End If
        Else
            MsgBox "Path non trovato", vbExclamation, "Empty Path"
        End If
        
        ActiveWorkbook.Save
        ActiveWorkbook.Save
        ActiveWorkbook.Save
        Range("H4:K4").Select
        ActiveCell.FormulaR1C1 = "C:\Output"
        Range("H5:K5").Select
        ActiveWorkbook.Save
        Range("L9").Select
        ActiveSheet.Shapes.Range(Array("Button 1")).Select
        Selection.OnAction = "Move_XL_Files"
        Range("J11").Select
        
    End Sub
    
    
  • Re: Vba Directory

    Ma che devi fare? All'inizio hai chiesto altro...

    E comunque forse hai capiro male, qui si danno consigli non si scrive codice al posto tuo, questo ti è chiaro? Anche se il VBA non ti piace, non è un problema del forum.
  • Re: Vba Directory

    
    Sub GetFilesInFolder()
    
       Dim fso, f, fc, subf, fs, subfs, fcs, lf, ff, origineFile
       Set fso = CreateObject("Scripting.FileSystemObject")
       Set f = fso.GetFolder(Range("input").Value)
       Set fc = f.Subfolders
       For Each subf In fc
        Set fs = fso.GetFolder(Range("input").Value + "\" + subf.Name) ' sotto cartelle
        Set fcs = fs.Subfolders
            For Each subfs In fcs
                MsgBox subfs.Name
                Set lf = subfs.Files
                For Each ff In lf
                Set origineFile = fso.GetFolder(Range("input").Value + "\" + subf.Name + "\" + subfs.Name) 'files'
                 ff.MoveFile Source:=origineFile.Path & "\", Destination:=fs.Path & "\"
                     MsgBox "Trasferimento File Completato " + origineFile.Path & "\" & "*.*" + " - " + fs.Path & "\" & "*.*"
                     
                Next
                MsgBox subf.Name + subfs.Name
            Next
       Next
    
    End Sub
    
    
    MoveFile, non mi sposta i file, come mai?mi puoi aiutare grazie
  • Re: Vba Directory

    Tutto risolto. Grazie a tutti
Devi accedere o registrarti per scrivere nel forum
9 risposte