Risultati da 1 a 16 di 16

Discussione: Macro per creazione nuove cartelle con Excel2007+win7



  1. #1
    L'avatar di aldomattana
    Clicca e Apri
    Data Registrazione
    Sep 2015
    Località
    Modena
    Età
    46
    Messaggi
    184
    Versione Office
    Office 2007
    Likes ricevuti
    9
    Likes dati
    33

    Macro per creazione nuove cartelle con Excel2007+win7

    Salve a tutti :D
    Vorrei sapere se possibile e come scrivere una macro che crei delle sottocartelle in windows7.
    Spiego cosa andrei ad indicare nel foglio di excel2007 (file condiviso - "Revisione/Revisioni/Condividi cartella di lavoro") e cosa e dove mi aspetto che crei.
    Il file raccolta.xlsx contiene tra gli altri il foglio "creacartelle" che si presenta così:

    In colonna B/C inserisco manualmente i Cognomi,
    In colonna A trovo o meno il nome della cartella da creare,
    In colonna D decido se in colonna A deve apparire (e quindi dovrà essere creata la cartella)
    Ora io mi aspetto che se copio e incollo il file raccolta.xlsx nella cartella C:\ciao\bello e lancio la macro (con un bottone dedicato?), a fine procedura troverò:
    C:\ciao\bello\RossiMario
    C:\ciao\bello\RossiLuca
    C:\ciao\bello\BianchiRoberto
    C:\ciao\bello\RossiPiero
    C:\ciao\bello\BianchiStefano
    C:\ciao\bello\RossiFlavio

    Servirebbe al limite un unico controllo che verifichi se la cartella es. "C:\ciao\bello\RossiPiero" non sia già esistente e nel caso NON la crei e NON la sostituisca (può essere che la macro possa essere lanciata più volte per errore o per aggiungere successivamente altre cartelle).


    E' possibili con le macro? (la domanda è retorica, sò che per voi è possibile) ;P
    Mi aiutereste a crearla? (sapete che anche questa è retorica, io di VBA non ne capisco nulla e punto ad una "pappa pronta" tipo riscalda/copia/incolla) ;P
    Grazie, Aldo.
    PS: Se la "cosa" ti ha aiutato, mi piace se mi dai un "mi piace" - Se mi hai aiutato tu, ti ringrazio 2 volte ;-)

  2. #2
    L'avatar di Baloon_50
    Clicca e Apri
    Data Registrazione
    Aug 2015
    Località
    Milano - Italy
    Età
    67
    Messaggi
    3339
    Versione Office
    2013 PC
    Likes ricevuti
    483
    Likes dati
    49
    Citazione Originariamente Scritto da aldomattana Visualizza Messaggio
    Salve a tutti :D
    Vorrei sapere se possibile e come scrivere una macro che crei delle sottocartelle in windows7.
    Spiego cosa andrei ad indicare nel foglio di excel2007 (file condiviso - "Revisione/Revisioni/Condividi cartella di lavoro") e cosa e dove mi aspetto che crei.
    Il file raccolta.xlsx contiene tra gli altri il foglio "creacartelle" che si presenta così:

    In colonna B/C inserisco manualmente i Cognomi,
    In colonna A trovo o meno il nome della cartella da creare,
    In colonna D decido se in colonna A deve apparire (e quindi dovrà essere creata la cartella)
    Ora io mi aspetto che se copio e incollo il file raccolta.xlsx nella cartella C:\ciao\bello e lancio la macro (con un bottone dedicato?), a fine procedura troverò:
    C:\ciao\bello\RossiMario
    C:\ciao\bello\RossiLuca
    C:\ciao\bello\BianchiRoberto
    C:\ciao\bello\RossiPiero
    C:\ciao\bello\BianchiStefano
    C:\ciao\bello\RossiFlavio

    Servirebbe al limite un unico controllo che verifichi se la cartella es. "C:\ciao\bello\RossiPiero" non sia già esistente e nel caso NON la crei e NON la sostituisca (può essere che la macro possa essere lanciata più volte per errore o per aggiungere successivamente altre cartelle).


    E' possibili con le macro? (la domanda è retorica, sò che per voi è possibile) ;P
    Mi aiutereste a crearla? (sapete che anche questa è retorica, io di VBA non ne capisco nulla e punto ad una "pappa pronta" tipo riscalda/copia/incolla) ;P
    ciao AldoMattana prova a vedere se ti va bene.
    Adesso sto uscendo e rientro nel tardo pomeriggio - Fammi sapere.

    Codice: 
    Sub CreaCartella()
    
    Dim wsh As Worksheet
    Dim uriga As Long, i As Integer
    Dim nomefile As String
    Dim nomesalva
    
    
    ChDrive "C"                                   ' EVENTUALMENTE CAMBIA DRIVE
    Set wsh = ThisWorkbook.Worksheets("Foglio1")
    uriga = Range("B" & Rows.Count).End(xlUp).Row
    
    
    For i = 2 To uriga
        If wsh.Range("A" & i).Value <> "" Then
            nomefile = "C:\ciao\bello\"                        ' CAMBIA DIRECTORY
            nomesalva = nomefile & wsh.Range("A" & i).Value
            If Len(Dir$(nomesalva)) Then
                GoTo esiste
            Else
                On Error Resume Next
                ActiveWorkbook.SaveAs Filename:=nomesalva, _
                FileFormat:=xlOpenXMLWorkbookMacroEnabled
            End If
        End If
    Next
    GoTo finito
    esiste:
        MsgBox ("IL FILE CHE SI TENTA DI SALVARE ESISTE GIA'")
    finito:
        Set wsh = Nothing
    End Sub
    Ciao.
    File Allegati File Allegati

    A volte basta usare parole inutili come “grazie” e “per favore” per rendere la vita più bella.
    (ELKonigsburg)
    Dice il saggio : "se vuoi essere aiutato devi metter l'allegato"
    (Nick Carter - Ten)

  3. #3
    L'avatar di aldomattana
    Clicca e Apri
    Data Registrazione
    Sep 2015
    Località
    Modena
    Età
    46
    Messaggi
    184
    Versione Office
    Office 2007
    Likes ricevuti
    9
    Likes dati
    33
    Ciao e grazie! :)

    Ho provato a scaricare il tuo file e a metterlo alla prova e purtroppo a mè non funziona:
    l'ho incollato in una cartella a caso ed ho lanciato il tutto con il bottone ma non ho visto nessuna scritta a conferma e controllando sia nella cartella stessa che in c:\.. non ho trovato nessuna cartella nuova ...

    Per quel poco (pochissimo) che ne capisco, ho aperto VBA e ho lanciato "Sub CreaCartella()" che è terminato subito senza nessun risultato, ho allora provato a mettere dei caratteri a caso "XXX" nella riga 2 per unire la tabella e rilanciando la Sub e avanzando con F8 ho notato che ora entrava nel ciclo "for/next" ma nuovamente non produceva alcuna cartella ...

    Cosa posso verificare?

    PS: Alcune precisazioni/richieste:
    Citazione Originariamente Scritto da Baloon_50 Visualizza Messaggio
    ChDrive "C" ' EVENTUALMENTE CAMBIA DRIVE

    nomefile = "C:\ciao\bello\" ' CAMBIA DIRECTORY

    MsgBox ("IL FILE CHE SI TENTA DI SALVARE ESISTE GIA'")
    La macro non deve "forzare" a scrivere sul disco "C" o su "C:\ciao\bello\", ma deve creare le nuove cartelle dentro la cartella in cui è stato incollato il file "Aldomattana - crea cartelle.xlsm".
    Modificherò il MsgBox ("IL FILE CHE SI TENTA DI SALVARE ESISTE GIA'") con MsgBox ("LA CARTELLA CHE SI DESIDERA SALVARE ESISTE GIA'").
    E' possibile avere un altro MgsBox finale con "Creazione terminata" o con "Sono state create le seguenti cartelle: ... , ... , ..." ?
    Grazie, Aldo.
    PS: Se la "cosa" ti ha aiutato, mi piace se mi dai un "mi piace" - Se mi hai aiutato tu, ti ringrazio 2 volte ;-)

  4. #4
    L'avatar di Baloon_50
    Clicca e Apri
    Data Registrazione
    Aug 2015
    Località
    Milano - Italy
    Età
    67
    Messaggi
    3339
    Versione Office
    2013 PC
    Likes ricevuti
    483
    Likes dati
    49
    Citazione Originariamente Scritto da aldomattana Visualizza Messaggio
    Ciao e grazie! :)

    Ho provato a scaricare il tuo file e a metterlo alla prova e purtroppo a mè non funziona:
    l'ho incollato in una cartella a caso ed ho lanciato il tutto con il bottone ma non ho visto nessuna scritta a conferma e controllando sia nella cartella stessa che in c:\.. non ho trovato nessuna cartella nuova ...

    Per quel poco (pochissimo) che ne capisco, ho aperto VBA e ho lanciato "Sub CreaCartella()" che è terminato subito senza nessun risultato, ho allora provato a mettere dei caratteri a caso "XXX" nella riga 2 per unire la tabella e rilanciando la Sub e avanzando con F8 ho notato che ora entrava nel ciclo "for/next" ma nuovamente non produceva alcuna cartella ...

    Cosa posso verificare?

    PS: Alcune precisazioni/richieste:

    La macro non deve "forzare" a scrivere sul disco "C" o su "C:\ciao\bello\", ma deve creare le nuove cartelle dentro la cartella in cui è stato incollato il file "Aldomattana - crea cartelle.xlsm".
    Modificherò il MsgBox ("IL FILE CHE SI TENTA DI SALVARE ESISTE GIA'") con MsgBox ("LA CARTELLA CHE SI DESIDERA SALVARE ESISTE GIA'").
    E' possibile avere un altro MgsBox finale con "Creazione terminata" o con "Sono state create le seguenti cartelle: ... , ... , ..." ?
    Scusa Aldo ma stamattina andavo di fretta e non avevo capito bene il problema.
    Eccoti il tutto riscritto vedi se va bene e fammi sapere.

    Ciao.
    Codice: 
    Sub CreaCartella()
    
    Dim wsh As Worksheet
    Dim uriga As Long, i As Integer, a As Integer
    Dim objFso As Object
    Dim objFolder As Object
    Set objFso = CreateObject("Scripting.FileSystemObject")
    
    
    
    
    ChDrive "D"                                   ' EVENTUALMENTE CAMBIA DRIVE
    Set wsh = ThisWorkbook.Worksheets("Foglio1")
    uriga = Range("B" & Rows.Count).End(xlUp).Row
    
    
    For i = 2 To uriga
        If wsh.Range("A" & i).Value <> "" Then
        
        ' ----------- cambiare il percorso dove andranno le cartelle -------------------
            If objFso.FolderExists("D:\ciao\bello\" & wsh.Range("A" & i).Value) Then
        '-------------------------------------------------------------------------------
                MsgBox ("La cartella esiste : " & wsh.Range("A" & i).Value)
            Else
                Set objFolder = objFso.CreateFolder("D:\ciao\bello\" & wsh.Range("A" & i).Value)
                a = a + 1
                
            End If
        End If
    Next
    MsgBox ("SONO STATE CREATE " & a & " CARTELLE MANCANTI"), vbInformation, "RISULTATO"
        Set wsh = Nothing
        Set objFolder = Nothing
        Set objFso = Nothing
    
    
    End Sub
    File Allegati File Allegati

    A volte basta usare parole inutili come “grazie” e “per favore” per rendere la vita più bella.
    (ELKonigsburg)
    Dice il saggio : "se vuoi essere aiutato devi metter l'allegato"
    (Nick Carter - Ten)

  5. #5

    L'avatar di scossa
    Clicca e Apri
    Data Registrazione
    Jul 2015
    Località
    Verona Provincia
    Età
    57
    Messaggi
    1015
    Versione Office
    .
    Likes ricevuti
    366
    Likes dati
    0
    Ciao,

    Citazione Originariamente Scritto da Baloon_50 Visualizza Messaggio
    Codice: 
    .....
    Dim uriga As Long, i As Integer .....
    ......
    For i = 2 To uriga
    .........
    solo un'appunto: il conflitto tra i due tipi di variabili oltre a comportare, nel migliore dei casi (uriga < 32.768), una conversione implicita del valore di uriga da Long ad Integer, nel caso in cui uriga sia > di 32.767 avresti già all'inizio del ciclo For un errore di Overflow.

    Codice: 
    Codice: 
    Sub prova()
      Dim j As Long, k As Integer
      
      'j = 32710
      j = 32800
      For k = 32700 To j
        Debug.Print k & " " & VarType(k) '2=Integer; 3=Long
      Next
    End Sub
    Bye!
    scossa
    scossa's web site
    ___
    Se tu hai una mela, e io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw)

  6. #6
    L'avatar di Baloon_50
    Clicca e Apri
    Data Registrazione
    Aug 2015
    Località
    Milano - Italy
    Età
    67
    Messaggi
    3339
    Versione Office
    2013 PC
    Likes ricevuti
    483
    Likes dati
    49
    Citazione Originariamente Scritto da scossa Visualizza Messaggio
    Ciao,



    solo un'appunto: il conflitto tra i due tipi di variabili oltre a comportare, nel migliore dei casi (uriga < 32.768), una conversione implicita del valore di j da Long ad Integer, nel caso in cui uriga sia > di 32.767 avresti già all'inizio del ciclo For un errore di Overflow.

    Codice: 
    Codice: 
    Sub prova()
      Dim j As Long, k As Integer
      
      'j = 32710
      j = 32800
      For k = 32700 To j
        Debug.Print k & " " & VarType(k) '2=Integer; 3=Long
      Next
    End Sub
    é stata una svista, di solito sulla riga scrivo quelli dello stesso tipo.
    Comunque non si smette mai di imparare grazie ancora mito.
    :261:

    A volte basta usare parole inutili come “grazie” e “per favore” per rendere la vita più bella.
    (ELKonigsburg)
    Dice il saggio : "se vuoi essere aiutato devi metter l'allegato"
    (Nick Carter - Ten)

  7. #7
    L'avatar di aldomattana
    Clicca e Apri
    Data Registrazione
    Sep 2015
    Località
    Modena
    Età
    46
    Messaggi
    184
    Versione Office
    Office 2007
    Likes ricevuti
    9
    Likes dati
    33
    Citazione Originariamente Scritto da scossa Visualizza Messaggio
    Ciao, solo un'appunto: il conflitto tra i due tipi di variabili oltre a comportare, nel migliore dei casi (uriga < 32.768), una conversione implicita del valore di uriga da Long ad Integer, nel caso in cui uriga sia > di 32.767 avresti già all'inizio del ciclo For un errore di Overflow.
    Ciao, mi sembra d'aver capito che la variabile 'i' non può essere Integer, NON ho però capito come deve essere corretto il tutto per evitare quell'eventuale errore ...:263:

    Citazione Originariamente Scritto da Baloon_50 Visualizza Messaggio
    Scusa Aldo ma stamattina andavo di fretta e non avevo capito bene il problema.
    Eccoti il tutto riscritto vedi se va bene e fammi sapere.
    Ciao e grazie ^__^
    1) Non c'è nulla da scusare, anzi ti ringrazio!
    2) Ora funziona ... MA non come vorrei ;P
    Così funziona solo se vado prima a scrivere nella macro l'indirizzo della cartella che dovrà contenere le cartelle nuove, ma siccome ogni volta io COPIO e INCOLLO questo file di excel in cartelle diverse, non posso entrare e cambiare la macro ogni volta ... sarebbe poco di aiuto ...

    Provo a "modificare idealmente il codice" alla buona per capirci, dopo mi dovresti dire se e come è fattibile ...

    Codice: 
    Sub CreaCartella()
    
    Dim wsh As Worksheet
    Dim uriga As Long, i As Integer, a As Integer
    Dim objFso As Object
    Dim objFolder As Object
    Dim NomeDrive as ???
    Dim Percorso as ???
    Set objFso = CreateObject("Scripting.FileSystemObject")
    Set NomeDrive = LaCartellaDoveIlFile-Aldomattana - crea cartelle - 1.xlsm-ADESSOèStatoIncollato '---Questo indirizzo cambia ogni volta, la macro se la deve controllare e memorizzare in questa variabile---'
    
    ChDrive "NomeDrive"    ' Così non c'è bisogno di entrare nel codice, altrimenti tanto vale aprirsi le cartelle nuove a mano'
    Set wsh = ThisWorkbook.Worksheets("Foglio1")
    uriga = Range("B" & Rows.Count).End(xlUp).Row
    
    For i = 2 To uriga
        If wsh.Range("A" & i).Value <> "" Then
        
        ' -----------il percorso dove andranno le cartelle te lo dirà la variabile 'Percorso'-------------------
            If objFso.FolderExists(Percorso & wsh.Range("A" & i).Value) Then
        '-------------------------------------------------------------------------------
                MsgBox ("La cartella esiste : " & wsh.Range("A" & i).Value)
            Else
                Set objFolder = objFso.CreateFolder(Percorso & wsh.Range("A" & i).Value)
                a = a + 1
    ...
    
    End Sub
    Come si può sistemare?
    Grazie, Aldo.
    PS: Se la "cosa" ti ha aiutato, mi piace se mi dai un "mi piace" - Se mi hai aiutato tu, ti ringrazio 2 volte ;-)

  8. #8
    L'avatar di Baloon_50
    Clicca e Apri
    Data Registrazione
    Aug 2015
    Località
    Milano - Italy
    Età
    67
    Messaggi
    3339
    Versione Office
    2013 PC
    Likes ricevuti
    483
    Likes dati
    49
    Citazione Originariamente Scritto da aldomattana Visualizza Messaggio
    Ciao, mi sembra d'aver capito che la variabile 'i' non può essere Integer, NON ho però capito come deve essere corretto il tutto per evitare quell'eventuale errore ...:263:


    Ciao e grazie ^__^
    1) Non c'è nulla da scusare, anzi ti ringrazio!
    2) Ora funziona ... MA non come vorrei ;P
    Così funziona solo se vado prima a scrivere nella macro l'indirizzo della cartella che dovrà contenere le cartelle nuove, ma siccome ogni volta io COPIO e INCOLLO questo file di excel in cartelle diverse, non posso entrare e cambiare la macro ogni volta ... sarebbe poco di aiuto ...

    Provo a "modificare idealmente il codice" alla buona per capirci, dopo mi dovresti dire se e come è fattibile ...

    Codice: 
    Sub CreaCartella()
    
    Dim wsh As Worksheet
    Dim uriga As Long, i As Integer, a As Integer
    Dim objFso As Object
    Dim objFolder As Object
    Dim NomeDrive as ???
    Dim Percorso as ???
    Set objFso = CreateObject("Scripting.FileSystemObject")
    Set NomeDrive = LaCartellaDoveIlFile-Aldomattana - crea cartelle - 1.xlsm-ADESSOèStatoIncollato '---Questo indirizzo cambia ogni volta, la macro se la deve controllare e memorizzare in questa variabile---'
    
    ChDrive "NomeDrive"    ' Così non c'è bisogno di entrare nel codice, altrimenti tanto vale aprirsi le cartelle nuove a mano'
    Set wsh = ThisWorkbook.Worksheets("Foglio1")
    uriga = Range("B" & Rows.Count).End(xlUp).Row
    
    For i = 2 To uriga
        If wsh.Range("A" & i).Value <> "" Then
        
        ' -----------il percorso dove andranno le cartelle te lo dirà la variabile 'Percorso'-------------------
            If objFso.FolderExists(Percorso & wsh.Range("A" & i).Value) Then
        '-------------------------------------------------------------------------------
                MsgBox ("La cartella esiste : " & wsh.Range("A" & i).Value)
            Else
                Set objFolder = objFso.CreateFolder(Percorso & wsh.Range("A" & i).Value)
                a = a + 1
    ...
    
    End Sub
    Come si può sistemare?
    Ho fatto alcune modifiche guarda se ti va bene (imposti tu la cartella di destinazione ed ho sistemato le due variabili segnalate da Scossa)

    - Nell'impostazione della cartella il valore va inserito così : C:\nome cartella\nome subcartella\
    File Allegati File Allegati

    A volte basta usare parole inutili come “grazie” e “per favore” per rendere la vita più bella.
    (ELKonigsburg)
    Dice il saggio : "se vuoi essere aiutato devi metter l'allegato"
    (Nick Carter - Ten)

  9. #9
    L'avatar di rollis13
    Clicca e Apri
    Data Registrazione
    Nov 2015
    Località
    Cordenons
    Messaggi
    812
    Versione Office
    2016 64bit
    Likes ricevuti
    147
    Likes dati
    53
    Buonasera a tutti,

    Per quanto hai chiesto ho pensato che poteva andar bene utilizzare una macro da mettere nel modulo vba del foglio con l'elenco; può essere abbinata ad un pulsante nel foglio. Sì può mettere anche in un separato modulo vba ma in questo caso per sicurezza bisognerebbe dichiarare il nome del foglio nella macro stessa:
    Codice: 
    Option Explicit
    
    Sub CreaCartella()
         
        Dim uRiga As String     'ultima riga utile
        Dim aPath As String     'attuale percorso
        Dim nCart As String     'nome cartella da creare
        Dim pCart As String     'percorso finale con la cartella
        Dim a As Long           'contatore di riga
        Dim i As Long           'contatore cartelle create
        Dim j As Long           'contatore cartelle già esistenti
        
        aPath = ThisWorkbook.Path                       'rilevo l'attuale path del file aperto
        uRiga = Range("B" & Rows.Count).End(xlUp).Row   'trovo l'ultima riga disponibile in colonna B
        For a = 2 To uRiga
            If Range("A" & a).Value <> "" Then          'verifico se contiene un nome cartella
                nCart = Range("A" & a).Value            'ricavo il nome cartella da creare
                pCart = aPath & "\" & nCart             'creo il nome del percorso finale
                If Dir(pCart, vbDirectory) = "" Then    'verifico se la cartella già esiste
                    MkDir pCart                         'altrimenti la creo
                    i = i + 1
                Else
                    j = j + 1
                End If
            End If
        Next
        pCart = ""
        MsgBox ("Create " & i & " nuove cartelle" & vbLf & "Risultavano già presenti " & j & " cartelle"), vbInformation
    
    End Sub

  10. I seguenti utenti hanno dato un "Like"


  11. #10
    L'avatar di Baloon_50
    Clicca e Apri
    Data Registrazione
    Aug 2015
    Località
    Milano - Italy
    Età
    67
    Messaggi
    3339
    Versione Office
    2013 PC
    Likes ricevuti
    483
    Likes dati
    49
    Grazie a Rollis (ciao) ho eliminato la richiesta del path ma l'ho ricavato direttamente come volevi tu (mi era sfuggito questo particolare)

    Codice PHP: 
    (copio e incollo il file raccolta.xlsx nella cartella C:\ciao\bello
    File Allegati File Allegati

    A volte basta usare parole inutili come “grazie” e “per favore” per rendere la vita più bella.
    (ELKonigsburg)
    Dice il saggio : "se vuoi essere aiutato devi metter l'allegato"
    (Nick Carter - Ten)

  12. I seguenti utenti hanno dato un "Like"


  13. #11

    L'avatar di scossa
    Clicca e Apri
    Data Registrazione
    Jul 2015
    Località
    Verona Provincia
    Età
    57
    Messaggi
    1015
    Versione Office
    .
    Likes ricevuti
    366
    Likes dati
    0
    Ciao rollis,

    Citazione Originariamente Scritto da rollis13 Visualizza Messaggio
    Codice: 
    
        Dim uRiga As String     'ultima riga utile
    
        uRiga = Range("B" & Rows.Count).End(xlUp).Row   'trovo l'ultima riga disponibile in colonna B
        For a = 2 To uRiga
    mi spieghi perché dichari uRiga come String?
    Forse ti è sfuggito il mio precedente post ......
    Bye!
    scossa
    scossa's web site
    ___
    Se tu hai una mela, e io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw)

  14. #12
    L'avatar di rollis13
    Clicca e Apri
    Data Registrazione
    Nov 2015
    Località
    Cordenons
    Messaggi
    812
    Versione Office
    2016 64bit
    Likes ricevuti
    147
    Likes dati
    53
    @scossa, bella domanda !! non ho la più pallida idea di come sia diventata "String", è vero che ho riordinato la lista della variabili (che abitualmente dichiaro proprio anche per evitare errori) mentre preparavo la macro ma da come sia cambiata da "Long" a "String" mi lascia di stucco ... meno male che anche così almeno la macro gira. Grazie della segnalazione, purtroppo ormai non è più possibile rettificare il precedente post.

  15. #13
    L'avatar di aldomattana
    Clicca e Apri
    Data Registrazione
    Sep 2015
    Località
    Modena
    Età
    46
    Messaggi
    184
    Versione Office
    Office 2007
    Likes ricevuti
    9
    Likes dati
    33
    Citazione Originariamente Scritto da rollis13 Visualizza Messaggio
    Per quanto hai chiesto ho pensato che poteva andar bene utilizzare una macro da mettere nel modulo vba...
    Perfecto! :)

    L'unica roba che ho dovuto cambiare è stata la lettera "A" di uriga

    Codice: 
    Sub CreaCartella()
         
        Dim uRiga As String     'ultima riga utile
        Dim aPath As String     'attuale percorso
        Dim nCart As String     'nome cartella da creare
        Dim pCart As String     'percorso finale con la cartella
        Dim a As Long           'contatore di riga
        Dim i As Long           'contatore cartelle create
        Dim j As Long           'contatore cartelle già esistenti
        
        aPath = ThisWorkbook.Path                       'rilevo l'attuale path del file aperto
        uRiga = Range("A" & Rows.Count).End(xlUp).Row   'trovo l'ultima riga disponibile in colonna B
        For a = 2 To uRiga
            If Range("A" & a).Value <> "" Then          'verifico se contiene un nome cartella
                nCart = Range("A" & a).Value            'ricavo il nome cartella da creare
                pCart = aPath & "\" & nCart             'creo il nome del percorso finale
                If Dir(pCart, vbDirectory) = "" Then    'verifico se la cartella già esiste
                    MkDir pCart                         'altrimenti la creo
                    i = i + 1
                Else
                    j = j + 1
                End If
            End If
        Next
        pCart = ""
        MsgBox ("Create " & i & " nuove cartelle" & vbLf & "Risultavano già presenti " & j & " cartelle"), vbInformation
    
    End Sub
    ... oltre a "String" ==>"Long"

    "Mi piace"
    Grazie, Aldo.
    PS: Se la "cosa" ti ha aiutato, mi piace se mi dai un "mi piace" - Se mi hai aiutato tu, ti ringrazio 2 volte ;-)

  16. #14
    L'avatar di aldomattana
    Clicca e Apri
    Data Registrazione
    Sep 2015
    Località
    Modena
    Età
    46
    Messaggi
    184
    Versione Office
    Office 2007
    Likes ricevuti
    9
    Likes dati
    33
    Citazione Originariamente Scritto da Baloon_50 Visualizza Messaggio
    ... ho eliminato la richiesta del path ....
    E togliendo " 'ChDrive "D" ' EVENTUALMENTE CAMBIA DRIVE" funziona egregiamente!

    "Mi piace"

    Grazie a tutti!!! :)
    Grazie, Aldo.
    PS: Se la "cosa" ti ha aiutato, mi piace se mi dai un "mi piace" - Se mi hai aiutato tu, ti ringrazio 2 volte ;-)

  17. #15
    L'avatar di rollis13
    Clicca e Apri
    Data Registrazione
    Nov 2015
    Località
    Cordenons
    Messaggi
    812
    Versione Office
    2016 64bit
    Likes ricevuti
    147
    Likes dati
    53
    Il calcolo è stato fatto sulla colonna B per il semplice fatto che è una colonna sempre popolata. Se per esempio metti NO alle ultime righe il calcolo dell'ultima riga utile non torna anche se nel tuo caso il fatto che le ultime celle di A siano vuote non inficia il risultato che vuoi ottenete, ovvero, le cartelle comunque non verrebbero create.

  18. #16
    L'avatar di Baloon_50
    Clicca e Apri
    Data Registrazione
    Aug 2015
    Località
    Milano - Italy
    Età
    67
    Messaggi
    3339
    Versione Office
    2013 PC
    Likes ricevuti
    483
    Likes dati
    49
    Citazione Originariamente Scritto da aldomattana Visualizza Messaggio
    E togliendo " 'ChDrive "D" ' EVENTUALMENTE CAMBIA DRIVE" funziona egregiamente!

    "Mi piace"

    Grazie a tutti!!! :)
    Grazie a te per il riscontro.
    Per piacere se è tutto ok potresti mettere [RISOLTO] a questa discusione. Vai all'inizio della stessa e clicca su "strumenti discussione"

    Grazie - ciao.

    A volte basta usare parole inutili come “grazie” e “per favore” per rendere la vita più bella.
    (ELKonigsburg)
    Dice il saggio : "se vuoi essere aiutato devi metter l'allegato"
    (Nick Carter - Ten)

Discussioni Simili

  1. Macro Copia Dati In Più Cartelle
    Di Bright nel forum Domande su Excel VBA e MACRO
    Risposte: 5
    Ultimo Messaggio: 01/03/17, 18:07
  2. CARTELLE e SOTTOCARTELLE CON MACRO.
    Di Macteo nel forum Domande su Excel VBA e MACRO
    Risposte: 21
    Ultimo Messaggio: 02/02/17, 10:17
  3. Macro: Confronta e copia solo nuove righe
    Di AntonioP nel forum Domande su Excel VBA e MACRO
    Risposte: 16
    Ultimo Messaggio: 08/11/16, 18:27
  4. [Risolto] Formula matrice Excel 2007
    Di Sasyjoe nel forum Domande su Excel in generale
    Risposte: 16
    Ultimo Messaggio: 08/02/16, 16:06
  5. Macro (codice VBA) attiva per tutte le cartelle di lavoro (file)
    Di Gerardo Zuccalà nel forum Domande su Excel VBA e MACRO
    Risposte: 19
    Ultimo Messaggio: 21/10/15, 14:14

Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •