Condividi:        

Macro Word per inserire data in nome file

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

Macro Word per inserire data in nome file

Postdi ranxerox » 24/06/15 12:57

Ciao a tutti/e,

chiede cortesemente una mano per poter impostare una macro con la quale ogni volta che si salva un documento word, viene aggiunto al nome del documento la data in cui si effettua il nuovo salvataggio/modifica.
Cercando on-line ho trovato questo esempio abbastanza in linea con la mia richiesta che però serve a creare una copia del documento originale, con nel nome la data e l'ora relative.
http://sienadgt.blogspot.it/2008/12/sal ... -word.html

Mentre a me, possibilmente, interesserebbe rinominare ogni volta l'originale senza crearne copie.

Spero di essere stato sufficientemente chiaro.

Ringrazio in anticipo chiunque abbia voglia di perderci un pò del suo tempo.
ranxerox
Newbie
 
Post: 6
Iscritto il: 24/06/15 12:42

Sponsor
 

Re: Macro Word per inserire data in nome file

Postdi Iccapot » 24/06/15 21:54

Da un punto di vista logico e operativo NON puoi rinominare un file mentre ne sei all'interno. La sequenza delle operazioni è: salvare il file con un nome nuovo POI cancellare il precedente. Da fare modificando la macro che indichi: quale versione di Word usi e in quale ambiente (Windows?)
Iccapot
Newbie
 
Post: 2
Iscritto il: 24/06/15 21:48

Re: Macro Word per inserire data in nome file

Postdi Anthony47 » 24/06/15 22:12

Ciao ranxerox, benvenuto nel forum; e benvenuto anche a Iccapot che ha fatto delle opportune precisazioni.
Penso che questa macro potrebbe aiutarti:
Codice: Seleziona tutto
Sub reren()
Dim myOld As String, myName As String, myNName
'
myOld = ActiveDocument.FullName
myName = ActiveDocument.Name
myNName = Split(myName, "__", , vbTextCompare)(0)

    ActiveDocument.SaveAs FileName:=myNName & "__" & Format(Now(), "yyyy-mm-dd_hh-mm-ss") & ".doc", FileFormat:= _
        wdFormatDocument, LockComments:=False, Password:="", AddToRecentFiles:= _
        True, WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts:= _
        False, SaveNativePictureFormat:=False, SaveFormsData:=False, _
        SaveAsAOCELetter:=False
    Kill myOld
   
End Sub

Aggiunge al nome file originale (nota *) la stringa "__aaaa-mm-gg_hh-mm-ss.doc"
Se usi WD2007 o successive devi sostituire ".doc" con ".docm"
Nota*: il file originale non deve contenere la stringa "__" (doppio "underscore"), che invece sara' usato come separatore per la stringa col timestamp.

Ciao, fai sapere.
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Macro Word per inserire data in nome file

Postdi ranxerox » 25/06/15 08:30

Iccapot ha scritto:Da un punto di vista logico e operativo NON puoi rinominare un file mentre ne sei all'interno. La sequenza delle operazioni è: salvare il file con un nome nuovo POI cancellare il precedente. Da fare modificando la macro che indichi: quale versione di Word usi e in quale ambiente (Windows?)


Si hai ragione scusatemi.

Possibilmente mi piacerebbe che funzionasse sia in ambiente Windows che su OSX.

Io utilizzo office 2013 per win e office 2011 per mac.

Grazie per la risposta
ranxerox
Newbie
 
Post: 6
Iscritto il: 24/06/15 12:42

Re: Macro Word per inserire data in nome file

Postdi ranxerox » 25/06/15 09:13

Anthony47 ha scritto:Ciao ranxerox, benvenuto nel forum; e benvenuto anche a Iccapot che ha fatto delle opportune precisazioni.
Penso che questa macro potrebbe aiutarti:
Codice: Seleziona tutto
Sub reren()
Dim myOld As String, myName As String, myNName
'
myOld = ActiveDocument.FullName
myName = ActiveDocument.Name
myNName = Split(myName, "__", , vbTextCompare)(0)

    ActiveDocument.SaveAs FileName:=myNName & "__" & Format(Now(), "yyyy-mm-dd_hh-mm-ss") & ".doc", FileFormat:= _
        wdFormatDocument, LockComments:=False, Password:="", AddToRecentFiles:= _
        True, WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts:= _
        False, SaveNativePictureFormat:=False, SaveFormsData:=False, _
        SaveAsAOCELetter:=False
    Kill myOld
   
End Sub

Aggiunge al nome file originale (nota *) la stringa "__aaaa-mm-gg_hh-mm-ss.doc"
Se usi WD2007 o successive devi sostituire ".doc" con ".docm"
Nota*: il file originale non deve contenere la stringa "__" (doppio "underscore"), che invece sara' usato come separatore per la stringa col timestamp.

Ciao, fai sapere.


grazie mille dell'aiuto.

Ho testato la macro sia su word per windows che su word per mac.

In entrambi i casi l'operazione riesce ma con due inconvenienti:

1) il nome del file diventa di questo tipo: prova.docx > prova.docx__yyyy-mm-dd_hh-mm-ss.docx (ossia viene ripetuta due volte l'estensione ".docx"; ho provato anche a modificare il testo della macro lasciando o ".doc" oppure inserire come mi avevi detto ".docm" ma rimane questo problema. Anzi con ".docm", su windows, mi restituisce l'errore tipo file o estensione incompatibili e l'operazione si arresta.

2) Altra questione è che la macro mi indica comunque sempre un errore (sia su win che mac) e con la procedura di debug mi viene evidenziato l'ultima stringa di codice "Kill myOld".

domande: se modifico l'ordine di disposizione della data, ossia imposto: dd-mm-yyyy è uguale? o implica ulteriori cambiamenti nel codice?
Sarebbe anche possibile impostare la cosa che non appena si clicca sul tasto salva o si effettua un salvataggio del documento, viene eseguita in automatico la macro??

scusate l'insistenza e la rottura

In ogni caso grazie mille
ranxerox
Newbie
 
Post: 6
Iscritto il: 24/06/15 12:42

Re: Macro Word per inserire data in nome file

Postdi Anthony47 » 25/06/15 23:49

Eh gia', l'avevo fatta troppo semplice...
Modifica la macro in
Codice: Seleziona tutto
Sub reren2()
Dim myOld As String, myName As String, myNName
'
myOld = ActiveDocument.FullName
myName = ActiveDocument.Name
mysplit = Split(myName, ".doc", , vbTextCompare)
myext = ".doc" & mysplit(UBound(mysplit, 1))
'myNName = Split(myName, ".doc", , vbTextCompare)(0)
myNName = Split(Replace(myName, myext, ""), "__", , vbTextCompare)(0)
    ActiveDocument.SaveAs2 FileName:=ActiveDocument.Path & Application.PathSeparator & myNName & "__" & Format(Now(), "yyyy-mm-dd_hh-mm-ss") & ".docm", _
        FileFormat:=wdFormatXMLDocumentMacroEnabled, LockComments:=False, Password:="", AddToRecentFiles:= _
        True, WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts:= _
        False, SaveNativePictureFormat:=False, SaveFormsData:=False, SaveAsAOCELetter:=False, CompatibilityMode:=14
    SetAttr myOld, vbNormal
    Kill myOld
   
End Sub

Poi, se vuoi che il processo si attivi da solo a ogni File /Save allora:
-apri il vba (da Word premi Alt-F11)
-doppioclick sulla voce ThisDocument
Inserisci questo codice:
Codice: Seleziona tutto
Private WithEvents App As Word.Application

Private Sub Document_Open()
Set App = Word.Application
End Sub

Private Sub App_DocumentBeforeSave(ByVal Doc As Document, SaveAsUI As Boolean, Cancel As Boolean)
Call reren2
Cancel = True
End Sub
Questo predispone la gestione dell'evento BeforeSave, che richiama automaticamente la procedura "reren2" e consente il salvataggio SOLAMENTE nel nuovo formato.
Funziona solo con WD2010 e successive versioni, ma non sono in grado di testarlo su mac.

Quanto a modificare il formato della data si puo' fare modificando la stringa di formato; ma va anche inserita la parte hh-mm-ss, perche' al momento la macro assume che il nuovo nome sia diverso dal precedente, e quindi ci sia sempre un vecchio file che si puo' killare.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Macro Word per inserire data in nome file

Postdi ranxerox » 29/06/15 09:55

Anthony47 ha scritto:Eh gia', l'avevo fatta troppo semplice...
Modifica la macro in
Codice: Seleziona tutto
Sub reren2()
Dim myOld As String, myName As String, myNName
'
myOld = ActiveDocument.FullName
myName = ActiveDocument.Name
mysplit = Split(myName, ".doc", , vbTextCompare)
myext = ".doc" & mysplit(UBound(mysplit, 1))
'myNName = Split(myName, ".doc", , vbTextCompare)(0)
myNName = Split(Replace(myName, myext, ""), "__", , vbTextCompare)(0)
    ActiveDocument.SaveAs2 FileName:=ActiveDocument.Path & Application.PathSeparator & myNName & "__" & Format(Now(), "yyyy-mm-dd_hh-mm-ss") & ".docm", _
        FileFormat:=wdFormatXMLDocumentMacroEnabled, LockComments:=False, Password:="", AddToRecentFiles:= _
        True, WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts:= _
        False, SaveNativePictureFormat:=False, SaveFormsData:=False, SaveAsAOCELetter:=False, CompatibilityMode:=14
    SetAttr myOld, vbNormal
    Kill myOld
   
End Sub



Ciao, in questi giorni ho provato la macro che mi hai gentilmente segnalato e su win funziona correttamente.

Mentre su mac non c'è verso..

attraverso il debug mi indica il problema in questa stringa di codice qua:
ActiveDocument.SaveAs2 FileName:=ActiveDocument.Path & Application.PathSeparator & myNName & "__" & Format(Now(), "yyyy-mm-dd_hh-mm-ss") & ".docm", _
FileFormat:=wdFormatXMLDocumentMacroEnabled, LockComments:=False, Password:="", AddToRecentFiles:= _
True, WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts:= _
False, SaveNativePictureFormat:=False, SaveFormsData:=False, SaveAsAOCELetter:=False, CompatibilityMode:=14

Purtroppo le mie scarse conoscenze in materia mi rendono difficile individuare il problema (ho provato a cambiare tipo estensione ma niente).

In ogni caso di nuovo grazie mille per l'aiuto ed i suggerimenti.
ranxerox
Newbie
 
Post: 6
Iscritto il: 24/06/15 12:42

Re: Macro Word per inserire data in nome file

Postdi Anthony47 » 01/07/15 00:54

Come detto non ho la possibilita' di provare su mac.
Per prova, quando sei in debug premi Contr-g per aprire la finestra "Immediata", e qui scrivi
Codice: Seleziona tutto
? ActiveDocument.Path & Application.PathSeparator & myNName & "__" & Format(Now(), "yyyy-mm-dd_hh-mm-ss")

Copia la stringa che ti stampa e prova a salvare manualmente usando il formato "Macro enabled" e quel nome file; controlla che venga salvato correttamente e dicci il percorso + nome completo assegnato al file.

Come seconda prova, sempre su mac:
-parti da un documento nuovo
-avvia la registrazione macro facendo attenzione che alla voce "Memorizza la macro in" venga selezionato il file in uso (non il modello.dot)
-fai "salva con nome", scegliendo il formato "Macro enabled" e il nome PippoPeppo
-interrompi la registrazione macro
Poi pubblica il codice prodotto dalla registrazione e vedremo se ci capiamo qualcosa.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Macro Word per inserire data in nome file

Postdi ranxerox » 01/07/15 20:19

Anthony47 ha scritto:Come detto non ho la possibilita' di provare su mac.
Per prova, quando sei in debug premi Contr-g per aprire la finestra "Immediata", e qui scrivi
Codice: Seleziona tutto
? ActiveDocument.Path & Application.PathSeparator & myNName & "__" & Format(Now(), "yyyy-mm-dd_hh-mm-ss")

Copia la stringa che ti stampa e prova a salvare manualmente usando il formato "Macro enabled" e quel nome file; controlla che venga salvato correttamente e dicci il percorso + nome completo assegnato al file.


Grazie per l'aiuto e la pazienza non so cos'altro dire..

Provando i comandi da te suggeriti (di cui sopra), nella finestra "Immediata" viene fuori questa stringa:
"Macintosh HD:Users:xxxx:Desktop:Cambia datA.docm:Cambia datA__2015-07-01_20-51-51"
Ho salvato manualmente il file con il secondo nome riportato (ossia, "Cambia datA__2015-07-01_20-51-51"), e il nome completo assegnato al file è "Cambia datA__2015-07-01_20-51-51.docm" situato in Macintosh HD:Users:xxxx:Desktop.

(Non ho capito se poi dovevo anche riprovare ad eseguire la macro).

Anthony47 ha scritto:Come seconda prova, sempre su mac:
-parti da un documento nuovo
-avvia la registrazione macro facendo attenzione che alla voce "Memorizza la macro in" venga selezionato il file in uso (non il modello.dot)
-fai "salva con nome", scegliendo il formato "Macro enabled" e il nome PippoPeppo
-interrompi la registrazione macro
Poi pubblica il codice prodotto dalla registrazione e vedremo se ci capiamo qualcosa.
Ciao


Per quanto riguarda queste seconde istruzioni, il codice generato dalla registrazione macro è il seguente:

Codice: Seleziona tutto
Sub Macro1()
'
' Macro1 Macro
'
'
    ChangeFileOpenDirectory "Macintosh HD:Users:xxxx:Desktop:"
    ActiveDocument.SaveAs fileName:="PippoPeppo.docm", FileFormat:= _
        wdFormatXMLDocumentMacroEnabled, LockComments:=False, Password:="", _
        AddToRecentFiles:=True, WritePassword:="", ReadOnlyRecommended:=False, _
        EmbedTrueTypeFonts:=False, SaveNativePictureFormat:=False, SaveFormsData _
        :=False, SaveAsAOCELetter:=False, HTMLDisplayOnlyOutput:=False, _
        MaintainCompat:=False
End Sub


Spero di aver svolto correttamente ciò che mi chiedevi.
ranxerox
Newbie
 
Post: 6
Iscritto il: 24/06/15 12:42

Re: Macro Word per inserire data in nome file

Postdi Anthony47 » 01/07/15 21:38

Hai eseguito correttamente.

Provando i comandi da te suggeriti (di cui sopra), nella finestra "Immediata" viene fuori questa stringa:
"Macintosh HD:Users:xxxx:Desktop:Cambia datA.docm:Cambia datA__2015-07-01_20-51-51"
Hummm...
Sembrerebbe che in ambiente mac l' istruzione "ActiveDocument.Path" riporti sia il Path che il Nome del file.
Prova modificando
ActiveDocument.SaveAs2 FileName:=ActiveDocument.Path & Application.PathSeparator & myNName & "__" & Format(Now(), "yyyy-mm-dd_hh-mm-ss") & ".docm", _
FileFormat:=wdFormatXMLDocumentMacroEnabled, LockComments:=False, Password:="", AddToRecentFiles:= _
True, WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts:= _
False, SaveNativePictureFormat:=False, SaveFormsData:=False, SaveAsAOCELetter:=False, CompatibilityMode:=14

In
Codice: Seleziona tutto
    ActiveDocument.SaveAs2 FileName:=Replace(ActiveDocument.Path, myName,"") & Application.PathSeparator & myNName & "__" & Format(Now(), "yyyy-mm-dd_hh-mm-ss") & ".docm", _
        FileFormat:=wdFormatXMLDocumentMacroEnabled, LockComments:=False, Password:="", AddToRecentFiles:= _
        True, WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts:= _
        False, SaveNativePictureFormat:=False, SaveFormsData:=False, SaveAsAOCELetter:=False

Prova sia su Win che su Mac. Se non funziona proveremo con istruzioni diverse tra Win e Mac.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Macro Word per inserire data in nome file

Postdi ranxerox » 03/07/15 16:55

Anthony47 ha scritto:
Codice: Seleziona tutto
    ActiveDocument.SaveAs2 FileName:=Replace(ActiveDocument.Path, myName,"") & Application.PathSeparator & myNName & "__" & Format(Now(), "yyyy-mm-dd_hh-mm-ss") & ".docm", _
        FileFormat:=wdFormatXMLDocumentMacroEnabled, LockComments:=False, Password:="", AddToRecentFiles:= _
        True, WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts:= _
        False, SaveNativePictureFormat:=False, SaveFormsData:=False, SaveAsAOCELetter:=False

Prova sia su Win che su Mac. Se non funziona proveremo con istruzioni diverse tra Win e Mac.

Ciao


scusami se ti rispondo solamente ora...

ho provato ma su mac continua a darmi errore e in debug mi evidenzia tutta la stringa di codice che mi ha suggerito..

mentre su win funziona, però se provo a re-impostare anche il comando che mi permetteva di eseguire la macro non appena cliccavo su salva, questo non va (cioè salva e basta senza modificare la data del documento) e per avviare la macro devo eseguirla manualmente...
ranxerox
Newbie
 
Post: 6
Iscritto il: 24/06/15 12:42


Torna a Applicazioni Office Windows


Topic correlati a "Macro Word per inserire data in nome file":


Chi c’è in linea

Visitano il forum: Nessuno e 78 ospiti