Esportare un file word con differente nome per ogni record estratto da un report

di il
15 risposte

Esportare un file word con differente nome per ogni record estratto da un report

Ciao a tutti.
Nuovo DB, nuovo problema.
Sto creando un DB per una squadra di rugby contenente la tabella "Anagrafica_Giocatori" con, oltre ai soliti dati (Nome, Cognome, Data di nascita, Residenza), il numero di tessera FIR nel campo omonimo che costituisce la mia chiave primaria e le scadenze delle visite mediche.

Ho il report "Rpt_Certificato_Medico" che si basa su una query che seleziona I record per I quali la data di scadenza cade entro 90 giorni dalla data odierna. Ogni record estratto corrisponde ad una pagina.

Come posso esportare in un solo passaggio un file word per ogni singolo record il cui nome dovra' essere "Certificato_Medico" seguito dal valore assunto dal campo [Tessera_FIR]?

Problema analogo, ma sicuramente piu' compicato, mi si presentera' con il successivo report inerente I moduli di iscrizione/rinnovo, con la difficolta' che ogni singolo record generera' un report di 2 o piu' pagine.

Le mie conoscenze di VBA sono nulle, ho trovato questo suggerimento su un forum estero relativamente alla gestione di alcuni contratti ma non ho idea su come adattarlo al mio caso

Dim rsContracts As DAO.Recordset
Set rsContracts = CurrentDb.OpenRecordset( _
"SELECT DISTINCT ContractID FROM qryReportRecordSource")
With rsContracts
Do Until .EOF
DoCmd.OpenReport "rptContractReport", _
acViewPreview, _
WhereCondition:="ContractID = " & !ContractID, _
WindowMode:=acHidden
DoCmd.OutputTo acOutputReport, _
"rptContractReport", _
acFormatPDF, _
"C:\Your Path\Contract" & !ContractID & ".pdf"
DoCmd.Close acReport, "rptContractReport", acSaveNo
.MoveNext
Loop
.Close
End With

Grazie e ciao
Max

15 Risposte

  • Re: Esportare un file word con differente nome per ogni record estratto da un report

    maxgrana ha scritto:


    ...Le mie conoscenze di VBA sono nulle, ho trovato questo suggerimento su un forum estero relativamente alla gestione di alcuni contratti ma non ho idea su come adattarlo al mio caso...
    Il discorso non fa una grinza. Senza conoscenza di VBA non vai da nessuna parte per quello che intendi fare. Su questo purtroppo non possiamo aiutarti perché tocca a te imparare (almeno) le basi. Su quelle poi si costruisce il resto.
    A titolo però di "pre-nozioni" di base: un report non può essere salvato come file word se intendi per tale un file doc(x). Eventualmente in rtf.
    Qui trovi un piccolo esempio che usa proprio DoCmd.OutputTo https://msdn.microsoft.com/VBA/Access-VBA/articles/docmd-outputto-method-access
    Il parametro OutputFormat viene "misteriosamente" ridotto ad una striminzita spiegazione in quella pagina e bisogna andare a cercare altrove. Dipende dalla versione che hai di Access ma per il formato RTF va bene anche questa pagina
    Non è da scartare l'uso di word come server di automazione e la "compilazione" di un modello (ovviamente automatica) con i bookmark. Per questo servono le basi un po' più solide della soluzione precedente. E' presto per fornire link.
  • Re: Esportare un file word con differente nome per ogni record estratto da un report

    Https://www.iprogrammatori.it/forum-programmazione/access/auto-compilazione-documento-t31558.html
    Per Word senza vba .
  • Re: Esportare un file word con differente nome per ogni record estratto da un report

    Gianni55 ha scritto:


    Per Word senza vba .
    ma non riuscirà a

    maxgrana ha scritto:


    ... esportare in un solo passaggio un file word per ogni singolo record il cui nome dovra' essere "Certificato_Medico" seguito dal valore assunto dal campo [Tessera_FIR]...
  • Re: Esportare un file word con differente nome per ogni record estratto da un report

    Salve Phil
    non capisco cosa vuol dire "in un solo passaggio".
    Dovrà fare una query di selezione dei nominativi ed aprire il file di word.
  • Re: Esportare un file word con differente nome per ogni record estratto da un report

    Gianni55 ha scritto:


    non capisco cosa vuol dire "in un solo passaggio".
    La proposta senza uso di VBA è una stampa unione, gestibile anche questa da vba ma senza usare vba altro non è che una serie di clic su word. Tra questi clic (vado a memoria, la uso raramente) non c'è la creazione di un file specifico per ogni record dell'origine dati con un nome preso dall'origine dati stessa. Se è questo che vuole alexstar (mi sono limitato a riportare parte del contenuto della sua richiesta di partenza) da vba non si scappa.
  • Re: Esportare un file word con differente nome per ogni record estratto da un report

    Phil io questa cosa la facevo prima di conoscere vba (sempre che ora lo conosca)
    la procedura è questa :
    da una maschera continua seleziono i nominativi con un flag
    eseguo una query di selezione (apri query etc)
    apri file word che ha come origine dati la query,
    inserisco i campi nel template di word (questo lo faccio una sola volta).

    su word ogni volta che apro mi trovo i/il record generato dalla query.

    E' più difficile spiegarlo che farlo.

    Ps con il notevole vantaggio che le modifiche al file di word è possibile farle sempre mentre per agire sul report deve entrare in mod struttura.
  • Re: Esportare un file word con differente nome per ogni record estratto da un report

    Gianni55 ha scritto:


    ...E' più difficile spiegarlo che farlo.
    E' vero.
    Il mio discorso non verte tanto sull'uso di Word anziché dei report, quanto sul fatto che il limite della stampa unione classica (senza uso di codice) è che non si può memorizzare un file per ogni record dell'origine dati con un nome "costruito" con le informazioni contenute nel file stesso e provenienti dall'origine dei dati se non con operazioni manuali. Tutto qui. Se per alexstar è un requisito imprescindibile e vuole evitare di fare clic e interventi manuali a raffica (e sfido chiunque a dargli torto) la stampa unione pura e semplice non basta.
  • Re: Esportare un file word con differente nome per ogni record estratto da un report

    Philcattivocarattere ha scritto:


    ...non c'è la creazione di un file specifico per ogni record dell'origine dati con un nome preso dall'origine dati stessa.
    Invece si perchè l'origine dati del file di word è costituito dalla query.

    Per quanto concerne i nomi dell'origine io ho attuato un mio metodo:
    La query d'uscita la realizzo con una query di creazione Tab che chiamo sempre "A_TempPerWord" (la "A" la uso per trovarmi in word la tab al primo posto)

    Quello che cambio sono i nomi della query nel caso specifico userei:
    QrAnagraficaGenerale
    QrCertificatoMedico

    Se i campi non sono tanti ne farei una sola e aprirei i file di word all'occorrenza.
  • Re: Esportare un file word con differente nome per ogni record estratto da un report

    Gianni55 ha scritto:


    Invece si perchè l'origine dati del file di word è costituito dalla query.
    Boh... io vedo solo Finalizza e unisci (ha cambiato nome nel corso del tempo, ma non sostanza), in cui si può stampare (cosa che non riguarda il caso concreto) o salvare il documento che deriva dalla stampa unione per tutti i record, per quello corrente o per un intervallo specifico. In ogni caso il file che viene salvato è unico e il nome è generato di default dal programma (LettereN composto da x pagine).
    Non trovo il modo per avere i file: Nome1Cognome2_1234.doc, Nome3Cognome4_5678.doc, Nome5Cognome6_9012.doc e via dicendo. Ma a questo punto mi chiedo se sono rimasto un po' indietro con la stampa unione. Basta così, comunque, lascio tutte le valutazioni del caso ad Alexstar.
  • Re: Esportare un file word con differente nome per ogni record estratto da un report

    Dal lato Word l'origine dati la trovi in "LETTERE" > "INIZIA STAMPA UNIONE" > Tipo documento (lettera indirizzo etc) > al passaggio 3 > usa elenco esistente > Sfoglia > DB > devi cercare la query oppure la TabTemporaneaPerWord .

    Questo con Word 2013 (il percorso, a dire il vero, è un po tortuoso e annidato ) con word 2003 era più intuitivo.
    Fatto questo vedi attivare tutte le icone di navigazione tra i record nonché l'inserimento dei campi all'interno del corpo della lettera.
    Saluti


    Ps. Io la selezione dei nomi la effettuo lato DB .
  • Re: Esportare un file word con differente nome per ogni record estratto da un report

    Se fa fede il titolo del thread (esportare un file Word con differente nome) non è possibile con la semplice stampa unione di Word assegnare più nomi ai file (a meno di non salvare un file alla volta per ciascun nominativo).
    Da considerare che la query/tabella che alimenta il documento può comprendere più record e viene disposto su più pagine proprio dalla funzione di mail merge.
    Pertanto una soluzione è quella di generare in VBA tanti documenti/report e magari il codice presente nel primo post può essere una traccia da adattare all'esigenza.
  • Re: Esportare un file word con differente nome per ogni record estratto da un report

    willy55 ha scritto:


    Se fa fede il titolo del thread (esportare un file Word con differente nome) non è possibile con la semplice stampa unione di Word assegnare più nomi ai file (a meno di non salvare un file alla volta per ciascun nominativo).
    Da considerare che la query/tabella che alimenta il documento può comprendere più record e viene disposto su più pagine proprio dalla funzione di mail merge.
    Pertanto una soluzione è quella di generare in VBA tanti documenti/report e magari il codice presente nel primo post può essere una traccia da adattare all'esigenza.
    Salve willy
    Effettivamente a volersi attenere al titolo hai ragione tu però il codice che posta lui genera un PDF, del nome del file non si vede l'ombra, la "cosa" la vuole realizzare "in un sol colpo" e...abbiamo scritto 12 post ma da chi a postato il 3D non abbiamo notizia (questa cosa sta succedendo sempre più spesso e non è per nulla gratificante per chi regala un po del proprio tempo agli altri).
    Bene a parte l'incidentale appena avremo notizia ci regoleremo di conseguenza.
    Saluti
    P.S. Intanto spero essermi reso utile a Phil
  • Re: Esportare un file word con differente nome per ogni record estratto da un report

    Ciao,
    scusate, ieri non sono riuscito a collegarmi. Troppi casini al lavoro e poco tempo dopo il lavoro per dedicarmi a questo DB.
    Vedo che ho generato uno scambio epistolare molto sostenuto ed interessante, anche se data la mia scarsa conoscenza faccio fatica a capire alcuni passaggi.
    Il codice che ho riportato si riferisce ad un formato pdf perche' non sono riuscito a trovare altro, pensavo potesse essere d'esempio per quello che mi e' stato chiesto di fare non sapendo quanto potesse essere appropriato e cosa faccia in realta'.
    Gia' il fatto di venire a conoscenza che esiste una stampa unione di word potrebbe essere utile a semplificarmi il lavoro.
    Vediamo se ho capito bene il suo funzionamento:
    -Creo un corpo della lettera in format doc(x) al cui interno andranno inseriti I dati dai record della query,
    -seguo tutto il percorso per "legare" questa lettera alla query
    -fatto questo dovrei vedere attivare tutte le icone di navigazione tra i record nonché l'inserimento dei campi all'interno del corpo della lettera

    a questo punto posso salvare il document, composto da N pagine dipendenti dal numero di record estratti, come pdf invece di docx, ed utilizzare un programma che suddivide il pdf originario (es: PDFSamBasic) in tanti file pdf ognuno con un nome differente.

    Spero di non aver scritto trope castronerie.

    Intanto grazie a tutti per il tempo che mi avete dedicato.
    Max
  • Re: Esportare un file word con differente nome per ogni record estratto da un report

    maxgrana ha scritto:


    a questo punto posso salvare il document, composto da N pagine dipendenti dal numero di record estratti, come pdf invece di docx, ed utilizzare un programma che suddivide il pdf originario (es: PDFSamBasic) in tanti file pdf ognuno con un nome differente.
    No per niente, vorremmo capire cosa ti ha ordinato il medico (scherzo)

    Cosa dobbiamo considerare obbligatorio :

    I files devono avere un formato specifico? Pdf o Word obbligatorio ?
    Dobbiamo conservare un file per ogni record o no?
    Lo scritto che va nel Report è fisso o dinamico? può subire variazioni nel tempo o no?
    Il Db è ad uso e consumo proprio o lo stai realizzando per qualcuno che di norma non potrà gestire il report in struttura mentre con word si.
    Ognuna di queste scelte implica pro e contro per cui è necessario partire, almeno per conto mio, da quello che è obbligatorio per arrivare alla soluzione.
    Saluti
Devi accedere o registrarti per scrivere nel forum
15 risposte