Print Page | Close Window

[RISOLTO] nome mese da data per salvataggio file

Printed From: IALweb
Category: MS Office
Forum Name: Microsoft Excel
Forum Discription: Tutto sui fogli di calcolo e l'automazione d'ufficio
URL: https://forum.ialweb.it/forum_posts.asp?TID=16467244
Printed Date: 23/Feb/2019 at 10:40
Software Version: Web Wiz Forums 10.17 - http://www.webwizforums.com


Topic: [RISOLTO] nome mese da data per salvataggio file
Posted By: antoniomlg
Subject: [RISOLTO] nome mese da data per salvataggio file
Date Posted: 07/Feb/2018 at 15:41
buonasera eccomi nuovamente a chiedere il vostro aiuto

in cella d5 inserisco la data del primo giorno del mese
in cella I2 con la formattazione inserisco il nome del mese
con codice eseguo il salvataggio con nome che è uguale a celal I2
 la copia salvata non mi mantiene l'estensione xlsm perche??

hiedo se è possibile che il nome del mese si incrementa nel senso che se in cella I2 ho come in questo caso "febbraio"  vorrei che il nome dato alla nuova cartella sia marzo.?

è possibile ??

grazie

uploads/17780/gennaio.rar" rel="nofollow - uploads/17780/gennaio.rar





Replies:
Posted By: dodo47
Date Posted: 08/Feb/2018 at 10:53
Ciao
che excel hai???

Il tuo file ha formato xls, pertanto al momento del salvataggio mantiene questo formato.

Ora se lo vuoi salvare come xlsm, aggiungendo un mese a quello scritto in I2, visto che I2 proviene da D5, potresti fare:
Dim mData As Date
    
    Sheets("inserimento dati").Select
   mData = Range("D5")
    mData = DateAdd("m", 1, mData)
    nome = Format(mData, "mmmm") & ".xlsm"
    
    ChDir "C:\Users\Windows7\Desktop\"
    ActiveWorkbook.SaveAs Filename:=nome, _
        FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
        ReadOnlyRecommended:=False, CreateBackup:=False

Tieni presente che ho dettagliato come viene ricavato il nome del mese successivo affinchè sia più chiaro.
Se vuoi, elimina la parte in rosso e la sostituisci con:

nome = Format(DateAdd("m", 1, Range("D5")), "mmmm") & ".xlsm"

saluti


-------------
domenico
win 10- office 2016


Posted By: antoniomlg
Date Posted: 09/Feb/2018 at 06:56
grazie appena rientro al lavoro proverò

grazie


Posted By: antoniomlg
Date Posted: 09/Feb/2018 at 20:12
Originally posted by dodo47 dodo47 wrote:

Ciao
che excel hai???

Il tuo file ha formato xls, pertanto al momento del salvataggio mantiene questo formato.


saluti

la versione di excel è la 2007...

-------
ho inserito le istruzioni suggerite e tutto alla perfezione 

grazie ancora.


Posted By: antoniomlg
Date Posted: 10/Feb/2018 at 10:25
Originally posted by dodo47 dodo47 wrote:

Ciao
che excel hai???

Il tuo file ha formato xls, pertanto al momento del salvataggio mantiene questo formato.

Ora se lo vuoi salvare come xlsm, aggiungendo un mese a quello scritto in I2, visto che I2 proviene da D5, potresti fare:
Dim mData As Date
    
    Sheets("inserimento dati").Select
   mData = Range("D5")
    mData = DateAdd("m", 1, mData)
    nome = Format(mData, "mmmm") & ".xlsm"
    
    ChDir "C:\Users\Windows7\Desktop\"
    ActiveWorkbook.SaveAs Filename:=nome, _
        FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
        ReadOnlyRecommended:=False, CreateBackup:=False

Tieni presente che ho dettagliato come viene ricavato il nome del mese successivo affinchè sia più chiaro.
Se vuoi, elimina la parte in rosso e la sostituisci con:

nome = Format(DateAdd("m", 1, Range("D5")), "mmmm") & ".xlsm"

saluti

-------------------------------
Tutto bene grazie al tuo suggerimento, tuttavia  ti chiedo :

l'esecuzione di questa macro và a buon fine,
 essa duplica la cartella di lavoro e gli dà come nome, il mese della data inserita in cella D5

alla fine della macro mi trovo con la cartella origine chiusa.... è possibile 
rimanere o ritornare sulla cartella di lavoro dalla quale si è lanciato la macro?? 


inserisco il file con solo il foglio interessato

uploads/17780/febbraio.xls" rel="nofollow - uploads/17780/febbraio.xls

grazie



Posted By: dodo47
Date Posted: 10/Feb/2018 at 10:56
Ciao 
basta che tu riapra il documento originale;
Ora, pichè non hai specificato se li vuoi aperti entrambi o solo l'originale:

nel caso li vuoi entrambi:
Sheets("inserimento dati").Select
nome = Format(DateAdd("m", 1, Range("D5")), "mmmm") & ".xlsm"    
mDoc=activeworkbook.path & "\" & activewoekbook.name

    ChDir "C:\Users\Windows7\Desktop\"
    ActiveWorkbook.SaveAs Filename:=nome, _
        FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
        ReadOnlyRecommended:=False, CreateBackup:=False
workbooks.open "mDoc"

nel caso vuoi chiudere quello salvato e riaprire l'originale:
Sheets("inserimento dati").Select
nome = Format(DateAdd("m", 1, Range("D5")), "mmmm") & ".xlsm"    
mDoc=activeworkbook.path & "\" & activewoekbook.name

    ChDir "C:\Users\Windows7\Desktop\"
    ActiveWorkbook.SaveAs Filename:=nome, _
        FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
        ReadOnlyRecommended:=False, CreateBackup:=False
activeworkbook.close
workbooks.open "mDoc"
Tieni presente che ho scritto manualmente e ci potrebbe essere qualche errore di sintassi.

saluti


-------------
domenico
win 10- office 2016


Posted By: antoniomlg
Date Posted: 10/Feb/2018 at 12:08
Grazie del tuo interesse incondizionato 

il mio intendo è chiudere, come in effetti chiude il file appena creato , ritornare al file originale
da dove è stata lanciata la macro.

ho provato il codice proposto, ma non funziona , non dà errori ma non apre nulla.

grazie



Posted By: dodo47
Date Posted: 10/Feb/2018 at 18:03
riporta quanto hai scritto per favore

saluti


-------------
domenico
win 10- office 2016


Posted By: antoniomlg
Date Posted: 11/Feb/2018 at 12:04
Originally posted by dodo47 dodo47 wrote:

riporta quanto hai scritto per favore
saluti

Grazie della tua disponibilità e della tua pazienza
di seguito il codice completo ma considera che anche se metto solo il codice suggerito in un pulsante 
non ritorna dove era.
-----------------
Sub Salva_con_nome()

ThisWorkbook.Save       '<<<salva la cartella aperta prima della duplicazione

azione = MsgBox("PROCEDO CON LA DUPLICAZIONE DEL FILE ?", vbYesNo, "Messaggio da MELIGENI")
If azione = vbNo Then GoTo finesub
    Range("E5:M35,Q5:T35").Select  '<<<seleziona le celle da cui cancellare i dati
    Selection.ClearContents
    '------------------------------ inizia routine per eseguire copia della cartella-------------
    Dim mData As Date
        Sheets("inserimento dati").Select
   mData = Range("D5")
    mData = DateAdd("m", 1, mData)
    nome = Format(mData, "mmmm") & "" & Format(mData, " - yyyy") & ".xls"
    mDoc = ActiveWorkbook.Path & "\" & ActiveWorkbook.Name
    
    ChDir "C:\Users\Windows7\Desktop\contabilità\"
    Application.DisplayAlerts = False '<<< se file già esiste evita di chiedere conferma di sovrascrittura
        ActiveWorkbook.SaveAs Filename:=nome, _
        FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
        ReadOnlyRecommended:=False, CreateBackup:=False
        Application.DisplayAlerts = True
                
        Range("D5").Activate     '<<nella nuova cartella seleziona la cella e cancella i dati
    Selection.ClearContents
                              
Dim obj As Object
Dim strMsg As String
Set obj = CreateObject("WScript.Shell")
strMsg = obj.PopUp("DUPLICAZIONE ESEGUITA CON SUCCESSO!!!", 1, vbOKCancel)
     ThisWorkbook.Close savechanges:=False    '<<<-----------chiude e salva solo questa cartella-----------
     Workbooks.Open "mDoc"
finesub:
End Sub
-------------
grazie ancora


Posted By: dodo47
Date Posted: 11/Feb/2018 at 13:19
Ciao
la macro non apre nulla perchè chiudi il file che la contiene. Inoltre perchè disturbare WScript.Shell per un semplice msgbox?

aggiungi le Dim mancanti e una gestione degli errori.

Saluti

Sub Cancella_Dati()
Dim mData As Date
    ThisWorkbook.Save       '<<<salva la cartella aperta prima della duplicazione
    azione = MsgBox("PROCEDO CON LA DUPLICAZIONE DEL FILE ?", vbYesNo, "Messaggio da MELIGENI")
    If azione = vbNo Then GoTo finesub
    Range("E5:M35,Q5:T35").ClearContents  '<<<seleziona le celle da cui cancellare i dati
    Sheets("inserimento dati").Select
    mData = Range("D5")
    mData = DateAdd("m", 1, mData)
    nome = Format(mData, "mmmm") & "" & Format(mData, " - yyyy") & ".xls"
    mDoc = ActiveWorkbook.Path & "\" & ActiveWorkbook.Name
    mDir = "C:\Users\Windows7\Desktop\contabilità\"
    
    ChDir mDir
    Application.DisplayAlerts = False            '<<<-----------evita di chiedere conferma di sovrascrittura
    ActiveWorkbook.SaveAs Filename:=nome, _
     FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
     ReadOnlyRecommended:=False, CreateBackup:=False
     Application.DisplayAlerts = True
                
    Range("D5").ClearContents         '<<----------nella nuova cartella seleziona la cella da cacellare i dati

    MsgBox "DUPLICAZIONE ESEGUITA CON SUCCESSO!!!" 'inserisce messaggio
    Workbooks.Open mDoc
    Workbooks(nome).Close True
finesub:
End Sub



-------------
domenico
win 10- office 2016


Posted By: antoniomlg
Date Posted: 11/Feb/2018 at 17:13
grazie.....StarStar

Inoltre perchè disturbare WScript.Shell per un semplice msgbox?
------
Set obj = CreateObject("WScript.Shell")
strMsg = obj.PopUp("DUPLICAZIONE ESEGUITA CON SUCCESSO!!!", 1, vbOKCancel)
------

per fare in modo che il messaggio non aspetta una conferma 
ma che sia temporizzato e svanisca da solo...

almeno non conosco altro modo per temporizzare un msgbox.....

sempre grazie per tutto


Posted By: dodo47
Date Posted: 12/Feb/2018 at 11:19
Ok
se il problema è stato superato, ti prego di scrivere [RISOLTO], andando in modifica del tuo primo post aggiungendolo ad inizio titolo.

grazie e saluti


-------------
domenico
win 10- office 2016


Posted By: antoniomlg
Date Posted: 12/Feb/2018 at 17:14
grazie lo farò certamente.

un'ultima cosa 
quale è  quella parte di l'istruzione che nel fare la copia , 
prendendo il nome dalla data mese + 1 & anno
fà in modo che quando prende il nome dalla data 01/12/2018

mi salva il file con il nome "gennaio 2019" ???


grazie


Posted By: dodo47
Date Posted: 12/Feb/2018 at 17:45
Ciao
ti restituisco la macro commentata
Saluti
Sub Cancella_Dati()
Dim mData As Date
    ThisWorkbook.Save       '<<<salva la cartella aperta prima della duplicazione
    azione = MsgBox("PROCEDO CON LA DUPLICAZIONE DEL FILE ?", vbYesNo, "Messaggio da MELIGENI")
    If azione = vbNo Then GoTo finesub
    Range("E5:M35,Q5:T35").ClearContents  '<<<seleziona le celle da cui cancellare i dati
    Sheets("inserimento dati").Select
    mData = Range("D5") '<<<prende da D5 la data
    mData = DateAdd("m", 1, mData) '<<aggiunge 1 mese
    nome = Format(mData, "mmmm") & "" & Format(mData, " - yyyy") & ".xls" '<< formatta la data e aggiungel'estensione
    mDoc = ActiveWorkbook.Path & "\" & ActiveWorkbook.Name '<< mette in una variabile il nome del file attuale per & _
                                                            riaprirlo dopo
    mDir = "C:\Users\Windows7\Desktop\contabilità\"
    
    ChDir mDir
    Application.DisplayAlerts = False            '<<<-----------evita di chiedere conferma di sovrascrittura
    'salva il file con il nome ricavato dalla data
    ActiveWorkbook.SaveAs Filename:=nome, _
     FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
     ReadOnlyRecommended:=False, CreateBackup:=False
     Application.DisplayAlerts = True
                
    
    Range("D5").ClearContents         '<<----------nella nuova cartella seleziona la cella da cacellare i dati

    MsgBox "DUPLICAZIONE ESEGUITA CON SUCCESSO!!!" 'inserisce messaggio
    Workbooks.Open mDoc '<<riapre il file originale
    Workbooks(nome).Close True '<<chiude quello creato
finesub:
End Sub


-------------
domenico
win 10- office 2016


Posted By: antoniomlg
Date Posted: 12/Feb/2018 at 20:03
QUINDI

mData = DateAdd("m", 1, mData) '<<aggiunge 1 mese

oltre ad aggiungere +1 al mese attuale, và anche all'anno dopo.....

grazie


Posted By: dodo47
Date Posted: 13/Feb/2018 at 10:14
và anche all'anno dopo.....:qualora il mese in D5 sia dicembre naturalmente

saluti


-------------
domenico
win 10- office 2016



Print Page | Close Window

Forum Software by Web Wiz Forums® version 10.17 - http://www.webwizforums.com
Copyright ©2001-2013 Web Wiz Ltd. - http://www.webwiz.co.uk