salvare in sottocartelle



  • salvare in sottocartelle
    di tupu (utente non iscritto) data: 07/08/2017 10:40:07

    ciao ragazzi,
    con il codice seguente io estraggo dati nel file excel A corrente (che si trova in una sottocartella di PRIMO chiamata SECONDO) da un'altro file excel B che si trova nella cartella principale PRIMO.
    Se volessi estrarre quei dati da un foglio che si trovasse nella cartella generale ZERO (che contiene sia la sottocartella PRIMO che la sua sottocartella di SECONDO), come dovrei modificare il codice?
     
    Sub estrazione()
    Dim sPath As String
    Dim Nome As String
    
    sPath = ActiveWorkbook.Path
    p = InStrRev(sPath, "/")
    oPath = Left(sPath, p)
    
    With ActiveWorkbook.Sheets(1)
        Nome = .Range("A1")
        .Range("A2").Formula = "='" & oPath & "[" & Nome & "]Foglio1'!$A$2"
    End With



  • di Vecchio Frac data: 07/08/2017 11:38:38

    A parte che a rigore dovresti dichiarare tutte le variabili in gioco; mi meraviglio che funzioni visto che il separatore del path è "" e non "/" (perciò p è sempre zero se non peggio visto che non hai imposto Option Explicit, quindi è Variant, quindi è String).
    Comunque per esempio: ragiona su oPath e pensa semplicemente che devi ricavare il percorso del penultimo slash. Puoi per esempio splittare la stringa in corrispondenza degli slash e ricavare il penultimo valore (valore di UBound -1). Oppure effettuare una seconda ricerca a ritroso con InstrRev partendo dall'indice precedente.
    Comunque io farei una Function non una Sub ^_^
     
    Option Explicit
    
    Sub estrazione1()
    Dim sPath As String
    Dim p As Long
    Dim opath As String
    
        sPath = ActiveWorkbook.Path
        p = InStrRev(sPath, "")
        p = InStrRev(sPath, "", p - 1)
        opath = Left(sPath, p)
    
    End Sub
    
    
    
    
    Sub estrazione2()
    Dim sPath As String
    Dim oPath As String
    Dim v As Variant
    
        sPath = ActiveWorkbook.Path
        v = Split(sPath, "")
        ReDim Preserve v(UBound(v) - 2)
        oPath = Join(v, "")
    
    End Sub






  • di tupu (utente non iscritto) data: 07/08/2017 11:54:27

    giuste osservazioni. La fretta fa i figli cechi.
    Ad ogni modo, FUNZIONA. Grazie mille, Vecchio Frac



  • di Vecchio Frac data: 07/08/2017 13:35:07

    cit. "La fretta fa i figli cechi. "
    ---> ...e se fossero slovacchi?
    ROTFL!
    Ok, battuta pessima.