Sappiamo tutti che cos'è la Stampa Unione: è un'operazione che ci permette di unire i dati presenti in un file (ad es. un database di access o un file di excel) in un documento di Word. Grazie alla stampa uniione possiamo creare delle etichette per indirizzi oppure dei documenti personalizzati con il nome e i dati del destinatario.
Tutto funziona perfettamente, a meno che nell'origine dati non compaia un campo data. Per evidenziare il problema ho creato un file in excel (formato 2010) con i nomi dei Presidenti della Repubblica Italiana e le date di inizio e fine mandato (dati tratti da wikipedia: Elenco dei presidenti della Repubblica italiana).
Apriamo Word e iniziamo la nostra stampa unione
Se visualizziamo i dati in anteprima, tutto sembra essere normale, ma, ad un esame più attento, ci accorgiamo che De Nicola è stato presidente fino al 12 Maggio 1948 e non fino al 5 Dicembre 1948 come appare in Word.
In pratica nella stampa unione le date vengono mostrate in formato americano (mese/giorno/anno), anche se nel foglio di lavoro excel le date vengono visualizzate correttamente! Il problema non è nell'origine dati: infatti anche cambiando il formato delle celle la visualizzazione della data in Word non cambia.
Il motivo per cui questo accade è spiegato nel dettaglio in questo articolo della Knowledge Base della Microsoft: KB304387
Per visualizzare la data correttamente dobbiamo formattare il campo unione
Incominciamo a disattivare i codici di campo: Facciamo click con il tasto destro del mouse sul campo unione e selezioniamo la voce "Attiva o disattiva codici di campo"
In alternativa possiamo usare la scorciatoia ALT F9 per attivare/disattivare tutti i codice di campo del documento (oppure SHIFT F9 per attivare/disattivare solo il codice di campo selezionato)
Il risultato sarà questo
Ovvero:
{MERGEFIELD N} {MERGEFIELD Nome} {MERGEFIELD Dal} {MERGEFIELD Al}
Ora, per formattare gli ultimi 2 campi che contengono le 2 date di inizio e fine mandato dobbiamo scrivere, prima della parentesi graffa di chiusura "}", questi caratteri:
\@ "dd MMMM yyyy"
Scrivete questa riga esattamente come l'ho scritta io, rispettando le MAIUSCOLE/minuscole!
mmmm è diverso da MMMM
In pratica i caratteri \@ indicano l'inserimento di un parametro di formattazione di tipo data/ora, e la stringa racchiusa tra virgolette "dd MMMM yyyy" è la stringa di formattazione da applicare al campo
Facendo l'esempio con l'ultimo campo, questo dovrà diventare così: {MERGEFIELD Al \@ "dd MMMM yyyy"}
e facendo l'anteprima dei risultati la data finalmente diventerà: 12 maggio 1948
Nella tabella seguente troverete un paio di stringhe di formattazione che potrebbero esservi utili
Stringhe di Formattazione | Risultato |
---|---|
dd/MM/yyyy | 12/05/1948 |
d/M/yyyy | 12/5/48 |
dddd dd MMMM yyyy | Mercoledì 12 maggio 1948 |
Posso effettuare nella stampa unione operazioni sulle date (per esempio aggiungere 1 giorno o sottrarre 3 anni)?
Grazie
Ciao Aldo, credo che sia possibile ma estremamente complicato.
È sicuramente più semplice eseguire l'operazione nell'origine dati aggiungendo, ad esempio, una colonna in Excel con la formula per eseguire il calcolo desiderato