Condividi tramite

macro per salvare in una cartella dal nome variabile

Anonimo
2017-09-07T09:09:37+00:00

Buongiorno,

Ho un file excel contenente più sheet. Di una di queste sheet vorrei che, attraverso una macro,

mi fosse fatta una copia; la copia in questione, però, non dovrà rimanere all'interno del

file di origine ma dovrà essere salvata come file a parte con estensione .xlsb

Fin qui, in realtà, ci sono arrivato. Il problema nasce dal fatto che il nuovo file da salvare (quello con estensione .xlsb)

dovrebbe chiamarsi in base al contenuto di una specifica cella e dovrà essere salvato all'interno di una cartella (già esistente) chiamata col nome

dell'anno in corso.

Esempio: visto che siamo nel 2017, il nuovo file dovrà essere salvato all'interno della cartella 2017;

con l'avvento dell'anno nuovo, invece, al ripetere di tale operazione, il file dovrà essere salvato nella cartella 2018 e così via dicendo di anno in anno.

Qualcuno sa suggerirmi come fare?

Ho scritto questo codice:

ActiveSheet.Name = ActiveSheet.Range("A1025")

nome = Range("A1025").Value

ActiveWorkbook.Save

ChDir "I:\Nuova cartella\2017"

    ActiveWorkbook.SaveAs Filename:="I:\Nuova cartella\2017" & nome, _

        FileFormat:=xlExcel12, Password:="", WriteResPassword:="", _

        ReadOnlyRecommended:=False, CreateBackup:=False

Fin qui tutto bene: la macro funziona. La sheet in questione prende il nome della casella A1025 e viene salvata come file a parte (con estensione xlsb) dentro la cartella 2017. Il punto è che io vorrei rendere "variabile" la sottocartella in cui salvare (in questo caso 2017 poiché siamo in tale anno). In pratica, anziché specificare il nome della sottocartella in cui salvare (come da esempio di cui sopra) vorrei che il salvataggio fosse effettuato nella sottocartella recante il nome dell'anno in corso (adesso siamo ancora nel 2017 ma tra pochi mesi saremo nel 2018).

Un modo semplice per ovviare il problema sarebbe quello di andare a modificare manualmente la suddetta macro scrivendo 2018 al posto di quel 2017 ma io vorrei che tutto avvenisse automaticamente senza, pertanto, fare modifiche manuali alla macro.

La versione di Excel utilizzata è la 2007.

Grazie in anticipo a chi saprà e vorrà aiutarmi

Microsoft 365 e Office | Excel | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

Risposta accettata dall'autore della domanda

Anonimo
2017-09-07T14:05:21+00:00

Ciao Luca,

Ho provato ma mi da errore:

Errore di run-time '1004'

Impossibile accedere al file "I:\NuovaCartella\2017\F0C35100". I motivi possono essere:

Il nome o il percorso del file non esiste.

Il file è utilizzato da un altro programma.

Il nome della cartella di lavoro che si sta tentando di salvare

corrisponde a quello di una cartella di lavoro attualmente aperta.

Si riscontrerebbe questo errore se non ci fosse stata trovata la directory

I:\NuovaCartella\2017\

Nelle mie prove, hi sostituito il percoso di questo directory con il percorso valido sul mio pc:

    **X:\Archivio\2017**"

e non  ho riscontrato alcun problema.

Non ho capito cosa sia quel "F0C35100" dopo \2017 nel percorso file. Comunque mi da errore.

Questo suggerirebbe che il contenuto della cella A1025 sul foglio di interesse sia 

F0C35100. 

Nel mio file di prova avevo immessso il valore Pippo in questa cella e, di conseguenza, il nuovo file è stato salvato nella mia directory  X:\Archivio\2017con il nome di file Pippo.xlsb :

Quindi, controlla che la directory esiste e controlla il contenuto della cella A1025.

===

Regards,

Norman

La risposta è stata utile?

1 persona ha trovato utile questa risposta.
0 commenti Nessun commento

Risposta accettata dall'autore della domanda

Anonimo
2017-09-07T12:09:30+00:00

Ciao Luca,

macro per salvare in una cartella dal nome variabile

Prova qualcosa del genere:

'=========>>

Option Explicit

'--------->>

Public Sub Tester()

    Dim sNome As String

    Dim sPath As String

    Const sCella As String = "A1025"                            '<<=== Modifica

    Const sPercorso As String = "**I:\NuovaCartella**"     '<<=== Modifica

    sPath = sPercorso & CStr(Year(Now)) & Application.PathSeparator

    With ActiveSheet

        sNome = .Range(sCella).Value

        .Copy

    End With

    With ActiveWorkbook

        .SaveAs Filename:=sPath & sNome & ".xlsb", _

                FileFormat:=50

        .Close SaveChanges:=False

    End With

End Sub

'<<=========

===

Regards,

Norman

La risposta è stata utile?

1 persona ha trovato utile questa risposta.
0 commenti Nessun commento

3 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2017-09-07T22:33:58+00:00

    Ciao Luca,

    Caro Norman,

    Hai ragione! La cartella "NuovaCartella" si chiama, in realtà, "Nuova Cartella" cioè con lo spazio tra Nuova e Cartella ma avendo riportato (nella macro) il nome tutto attaccato mi dava errore. Adesso che ho corretto funziona perfettamente. Grazie ancora per l'aiuto e il tempo concessomi.

    ;)

    Mi fa piacere che tu abbia risolto il problema e ti ringrazio per il cortese riscontro.

    Alla prossima.

    ===

    Regards,

    Norman

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2017-09-07T17:39:30+00:00

    Caro Norman,

    Hai ragione! La cartella "NuovaCartella" si chiama, in realtà, "Nuova Cartella" cioè con lo spazio tra Nuova e Cartella ma avendo riportato (nella macro) il nome tutto attaccato mi dava errore. Adesso che ho corretto funziona perfettamente. Grazie ancora per l'aiuto e il tempo concessomi.

    ;)

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2017-09-07T13:19:38+00:00

    Ciao Norman,

    Ho provato ma mi da errore:

    Errore di run-time '1004'

    Impossibile accedere al file "I:\NuovaCartella\2017\F0C35100". I motivi possono essere:

    Il nome o il percorso del file non esiste.

    Il file è utilizzato da un altro programma.

    Il nome della cartella di lavoro che si sta tentando di salvare

    corrisponde a quello di una cartella di lavoro attualmente aperta.

    Non ho capito cosa sia quel "F0C35100" dopo \2017 nel percorso file. Comunque mi da errore.

    Grazie ugualmente della risposta

    ;)

    La risposta è stata utile?

    0 commenti Nessun commento