Condividi tramite

Access e stampa unione word filtro dati

Anonimo
2015-11-12T11:34:57+00:00

Buongiorno a tutti.

Ho creato un piccolo database che utilizza la tabella Clienti per inserire in un file di word con stampa unione alcuni dei campi della tabella stessa (esempio: nome, cognome, luogo e data di nascita, codice fiscale, eccetera); il sistema funziona molto bene per l'invio di lettere circolari, mail, comunicazioni a più clienti eccetera.

Ho però la necessità di creare una serie di documenti per il singolo cliente; ho quindi una maschera con la quale seleziono il cliente desiderato e vorrei che venisse aperto il file di word prescelto (esempio: informativa privacy) con l'indicazione dei dati anagrafici del solo cliente selezionato (tramite l'ID_cliente).

Ho provato senza successo.

Grazie

Andrea

Microsoft 365 e Office | Access | 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
2016-02-05T16:06:53+00:00

ciao Andrea,

copia il codice sotto indicato in un modulo standard.

e aggiungi questa riga di codice subito dopo la generazione del file pdf.

Se vuoi inviare l'email anziché mostrarla usa il metodo send al posto di displey ( vedi sotto in grassetto.)

ciao, Sandro.

Ps. chiedo scusa per la formattazione ma non riesci a selezionare codice nel formato...

sendEmail2OL2 strConsignee:="indirizzoEmaiDestinatario@dominio.xxxxx", _

              strname:="FullPathNameDellAllegatoDaInviare", _

              OggettoEmail:="OggettoEmail", _

              TestoEmail:="TestoEmail"

in un modulo standard:

Option Compare Database

Option Explicit

Private OlApp            As Object

Private folderOL         As Object

Private namespaceOutlook As Object

'

Public Sub newOlIstance2()

    On Error Resume Next

    Set OlApp = GetObject(, "Outlook.Application")

    If OlApp Is Nothing Then

        Set OlApp = CreateObject("Outlook.Application")

        Set namespaceOutlook = OlApp.GetNamespace("MAPI")

        Set folderOL = namespaceOutlook.GetDefaultFolder(0)

        folderOL.Display

    Else

        Set namespaceOutlook = OlApp.GetNamespace("MAPI")

    End If

End Sub

Public Sub sendEmail2OL2(ByVal strConsignee As String, _

                        ByVal strname As String, _

                        ByVal OggettoEmail As String, _

                        ByVal TestoEmail As String)

    newOlIstance2

    Dim mailOutlook As Object

    Dim olMailItem  As Object

    Dim i           As Integer

    Set mailOutlook = OlApp.CreateItem(0)

    With mailOutlook

        .Subject = OggettoEmail

        .To = strConsignee

        .Body = TestoEmail

        .Attachments.Add strname

.Display

    End With

    Set mailOutlook = Nothing

    Set olMailItem = Nothing

    setOl2Nothing2

End Sub

Public Sub setOl2Nothing2()

    Set OlApp = Nothing

    Set namespaceOutlook = Nothing

End Sub

La risposta è stata utile?

0 commenti Nessun commento

Risposta accettata dall'autore della domanda

Anonimo
2015-11-15T18:46:55+00:00

ciao Andrea,

tutto chiaro direi.

ti ri-consiglio l'automazione con l'utilizzo dei bookmarks per il quale devi passare per un modello di word, nel tuo caso hai la necessità di più modelli di word, uno per ogni file che devi compilare.

devi aprire un'istanza di word da access, aprire un recordset, compilare il modello e salvare il file nel formato che più preferisci.

il modello di word resterà inalterato e il file di word salvato con i dati che popolati.

qui un esempio da cui partire :

http://answers.microsoft.com/it-it/office/forum/office\_2010-access/automazione-word-da-access/1c85bb41-20bf-4881-9cfa-1b2ed3887dbf?page=2

facci sapere.

Ciao, Sandro.

La risposta è stata utile?

0 commenti Nessun commento

27 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2015-11-28T09:55:27+00:00

    Sono finalmente riuscito a creare i vari modelli di Word necessari, ciascuno di essi con i campi unione legati alla tabella Elenco clienti; ho quindi creato una maschera in Access con una combo contenente il Nome del cliente e un pulsante che apre il modello di word desiderato tramite il seguente codice:

    Private Sub btnopen_Click()

    Dim WdApp As Object, WdDoc As Object

    Set WdApp = CreateObject("Word.Application")

    WdApp.Documents.Open "x:\documenti per nuovi clienti\mandato professionale.dotx"

    WdApp.Visible = True

    End Sub

    Il comando apre il file, ma rimangono tre problemi da risolvere, sicuramente banali ma per me impossibili:

    1. Il modello di word rimane in secondo piano e posso vederlo soltanto premendo ctrl + alt + tab;
    2. Il pulsante apre un file che non mi permette di lavorare con la stampa unione;
    3. Vorrei che venisse aperto il modello di word, posizionandosi sul cliente selezionato nella combo presente nella maschera di Access.

    Grazie per la pazienza.

    Andrea

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2015-11-15T13:36:11+00:00

    Buona domenica Sandro e grazie per la risposta.

    Il problema mio è quello di evitare di dover ripetere di scrivere mille volte i soliti dati di un cliente (tipo: nome e cognome, luogo e data di nascita, codice fiscale, eccetera), dati che servono a riempire vari documenti in formato word (tipo: istanze, mandati, informative, contratti, eccetera).

    Da qui l'idea del database in Access dove tutti i dati di ogni cliente sono contenuti nella tabella Clienti.

    Quando ho un nuovo cliente, una volta inseriti i dati nella tabella Clienti, devo utilizzare i suoi dati anagrafici nei vari documenti di word e avevo pensato di creare una maschera dove inserire con una combo il nome (e quindi l'ID) del cliente e una serie di pulsanti collegati ai vari documenti in formato word; l'automatismo che non riesco ad attivare è aprire il file di word (esempio: mandato professionale) e popolarlo con i dati anagrafici del cliente selezionato nella maschera. Solo dopo ho la necessità di salvare il file nella cartella del cliente.

    Spero di essere stato chiaro. Grazie fin da ora

    Andrea

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2015-11-14T17:17:12+00:00

    ciao Andrea,

    se ho capito bene...

    il tutto può essere gestito con automazione.

    apri il modello di word che ti interessa (informativa privacy, o altro...), con la tecnica dei bookmark popoli il documento stesso e lo salvi in un path a tua scelta.

    il nome del file sarà associato al cliente in modo tale da individuarlo univocamente (id_cliente+informativa privacy), così da consentirti di aprire il file generato dall'automazione, ogni volta che ti servirà.

    studia la faccenda e facci sapere :-)

    Ciao, Sandro.

    La risposta è stata utile?

    0 commenti Nessun commento