Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Invio mail da maschera continua con allegato .pdf .

589 views
Skip to first unread message

ignazio.pilone

unread,
Mar 24, 2017, 7:28:46 AM3/24/17
to
buongiorno a tutti.
Ho un problema più grosso di me, praticante Access a livello autodidatta e poco professionale e per il quale chiedo il vostro prezioso aiuto.
Non voglio rompere troppo e quindi spiego meglio la mia necessità.

Ho una maschera continua che per i record che devo lavorare mi evidenzia indirizzo, CC, e testo per inviare mail.
Alla mail devo allegare anche una copia, possibilmente in pdf, di altra maschera riferita allo stesso record (numerato con "Progr").

Al momento per ciascun record da lavorare:
1 - faccio ctrlC del contenuto e dei destinatari.
2 - da Outlook apro un nuovo messaggio mail ci incollo il testo
3- Scannerizzo la seconda maschera e la allego al messaggio
4 - invio il messaggio e cambio lo status del record.

Causa protezione aziendale non penso di poter modificare le impostazione della posta elettronica e quindi di poter eseguire i punti 1 e 2.

Sarei già molto "contentissimo" di poter salvare singolarmente (in c:|cartellaX/Progr.pdf) i file della seconda maschera in pdf nominati opportunamente.

Grazie infinite a chiunque mi potrà aiutare.

RobertoA

unread,
Mar 24, 2017, 11:07:34 AM3/24/17
to
Abbi pazienza ma non si capisce una mazza

'..scannerizzo la seconda maschera...' vuol dire che la stampi e la
passi allo scanner oppure prendi uno schreenshoot?

'...non penso di poter modificare impostazioni posta..' vuoi forse
intendere che non riusciresti a pilotare Outlook da esterno via vba?

'...salvare i file della seconda maschera...' intendi gli screenshoot o
dei report con i dati correnti della seconda maschera (le ultime
versioni di Access lo fanno nativamente)?

Inzomma, spendi qualche minuto a capirti, e soprattutto farci capire
cosa vuoi ottenere, da quali dati, e sicuramente un valido aiuto arriva
(non si sa quando, ma arriva)
(va che scherzavo)

@Alex

unread,
Mar 26, 2017, 2:23:33 AM3/26/17
to
Per la stampa PDF la puoi fare da REPORT che casualmente è fatto apposta...
Secondo me puoi fare tutto da vba anche la prima parte... qualsiasi siano le policy aziendali... via vba apri il Client di posta e lo usi per inviare mail...
Il tutto è estremamente semplice sfruttando l'automazione di MSO.
Il problema è che se non hai un minimo di basi lo troverai impossibile... ma sono 19 righe di codice...

@ALEX

Bruno Campanini

unread,
Mar 26, 2017, 8:38:40 AM3/26/17
to
on 24-03-17, ignazio.pilone supposed :
> buongiorno a tutti.
> Ho un problema più grosso di me, praticante Access a livello autodidatta e
> poco professionale e per il quale chiedo il vostro prezioso aiuto. Non voglio
> rompere troppo e quindi spiego meglio la mia necessità.
>
> Ho una maschera continua che per i record che devo lavorare mi evidenzia
> indirizzo, CC, e testo per inviare mail. Alla mail devo allegare anche una
> copia, possibilmente in pdf, di altra maschera riferita allo stesso record
> (numerato con "Progr").
>
> Al momento per ciascun record da lavorare:
> 1 - faccio ctrlC del contenuto e dei destinatari.
> 2 - da Outlook apro un nuovo messaggio mail ci incollo il testo
> 3- Scannerizzo la seconda maschera e la allego al messaggio
> 4 - invio il messaggio e cambio lo status del record.
>
> Causa protezione aziendale non penso di poter modificare le impostazione
> della posta elettronica e quindi di poter eseguire i punti 1 e 2.
Finché non è chiarito se possa utilizzarsi da codice l'Outlook
installato... passiamo oltre.
>
> Sarei già molto "contentissimo" di poter salvare singolarmente (in
> c:|cartellaX/Progr.pdf) i file della seconda maschera in pdf nominati
> opportunamente.

DoCmd.OutputTo acOutputForm, "Form1", acFormatPDF, "D:\PDF_2.pdf"

Questa riga di codice... beh dovrebbe essere chiara la sua
funzione: vedi se può servirti come base di partenza.

Bruno

ignazio.pilone

unread,
Mar 27, 2017, 6:24:35 AM3/27/17
to
ciao Roberto e grazie anche a tutti gli altri che hanno postato.
Grazie per l'interessamento e per l'aiuto.
Cerco di spiegarmi meglio:

Si tratta di un lavoro noioso e ripetitivo che vorrei, per quanto mi è possibile, ottimizzare. Attualmente questo è l'iter.
Preciso di avere una tabella db contenente n interventi suddivisi per "Progr".
Ecco il mio lavoro certosinoi e giornaliero....


a) -Apro ciascun intervento e stampo (su carta) il report "cover RDA"
b) -lo faccio firmare dai capi.
c) -lo scannerizzo sulla stampante di rete
d) -ne salvo copia in cartella nominandola con il "progr"

e) nel database apro l'intervento "x"
f) tramite un pulsante ottengo una maschera che mi riporta destinatari oggetto e testo messaggio che copio e incollo su un nuovo messaggio mail
g) allego alla mail il corrispettivo allegato "CoverRDA" e invio
h) nell'intervento "x" vario la casella Status da "aperto" a "inviato"

E ' un lavoro da pazzi.....

la mia idea che sto cercando di realizzare è questa:

Ho già realizzato una maschera continua che contiene gli interventi che devo processare. Ciascun intervento,
ho bisogno di un controllo puntuale, contiene un pulsante che:

a-b-c-d-) Stampa su file .pdf il report "cover RDA" contenente le firma già digitalizzate e lo salva in cartella"scansioniRDANapoli":

DoCmd.OutputTo acOutputReport, "Cover RDA firmata", acFormatPDF, "D:\scansioniRDANapoli\progr.PDF", False

fino a qui sono riuscito, vorrei che il nome file sia il numero [Progr] e ci sto provando.
Ora dovrei riuscire a evitare il lavoro di copia e incolla ma non ho conoscenza, come si sarà capito, del VBA necessario.

Grazie a te e a tutti quanti per l'aiuto che mi potrete dare.


ignazio.pilone

unread,
Mar 27, 2017, 6:26:38 AM3/27/17
to
buongiorno Bruno,
è possibile avere una riga di codice per capire se posso inviare un messaggio tramite Outlook, per avere conferma che il mio server di @ sia disponibile ?
La ringrazio molto.

ignazio.pilone

unread,
Mar 27, 2017, 6:55:40 AM3/27/17
to
Il giorno lunedì 27 marzo 2017 12:24:35 UTC+2, ignazio.pilone ha scritto:
> ciao Roberto e grazie anche a tutti gli altri che hanno postato.
> Grazie per l'interessamento e per l'aiuto.
> Cerco di spiegarmi meglio:
>
> Si tratta di un lavoro noioso e ripetitivo che vorrei, per quanto mi è possibile, ottimizzare. Attualmente questo è l'iter.
> Preciso di avere una tabella db contenente n interventi suddivisi per "Progr".
> Ecco il mio lavoro certosinoi e giornaliero....
>
>
> a) -Apro ciascun intervento e stampo (su carta) il report "cover RDA"
> b) -lo faccio firmare dai capi.
> c) -lo scannerizzo sulla stampante di rete
> d) -ne salvo copia in cartella nominandola con il "progr"
>
> e) nel database apro l'intervento "x"
> f) tramite un pulsante ottengo una maschera che mi riporta destinatari oggetto e testo messaggio che copio e incollo su un nuovo messaggio mail
> g) allego alla mail il corrispettivo allegato "CoverRDA" e invio
> h) nell'intervento "x" vario la casella Status da "aperto" a "inviato"
>
> E ' un lavoro da pazzi.....
>
> la mia idea che sto cercando di realizzare è questa:
>
> Ho già realizzato una maschera continua che contiene gli interventi che devo processare. Ciascun intervento,
> ho bisogno di un controllo puntuale, contiene un pulsante che:
>
> a-b-c-d-) Stampa su file .pdf il report "cover RDA" contenente le firma già digitalizzate e lo salva in cartella"scansioniRDANapoli":
>
> DoCmd.OutputTo acOutputReport, "Cover RDA firmata", acFormatPDF, "D:\scansioniRDANapoli\progr.PDF", False
>
> fino a qui sono riuscito.

ignazio.pilone

unread,
Mar 27, 2017, 6:57:00 AM3/27/17
to
Il giorno lunedì 27 marzo 2017 12:24:35 UTC+2, ignazio.pilone ha scritto:
> ciao Roberto e grazie anche a tutti gli altri che hanno postato.
> Grazie per l'interessamento e per l'aiuto.
> Cerco di spiegarmi meglio:
>
> Si tratta di un lavoro noioso e ripetitivo che vorrei, per quanto mi è possibile, ottimizzare. Attualmente questo è l'iter.
> Preciso di avere una tabella db contenente n interventi suddivisi per "Progr".
> Ecco il mio lavoro certosinoi e giornaliero....
>
>
> a) -Apro ciascun intervento e stampo (su carta) il report "cover RDA"
> b) -lo faccio firmare dai capi.
> c) -lo scannerizzo sulla stampante di rete
> d) -ne salvo copia in cartella nominandola con il "progr"
>
> e) nel database apro l'intervento "x"
> f) tramite un pulsante ottengo una maschera che mi riporta destinatari oggetto e testo messaggio che copio e incollo su un nuovo messaggio mail
> g) allego alla mail il corrispettivo allegato "CoverRDA" e invio
> h) nell'intervento "x" vario la casella Status da "aperto" a "inviato"
>
> E ' un lavoro da pazzi.....
>
> la mia idea che sto cercando di realizzare è questa:
>
> Ho già realizzato una maschera continua che contiene gli interventi che devo processare. Ciascun intervento,
> ho bisogno di un controllo puntuale, contiene un pulsante che:
>
> a-b-c-d-) Stampa su file .pdf il report "cover RDA" contenente le firma già digitalizzate e lo salva in cartella"scansioniRDANapoli":
>
DoCmd.OutputTo acOutputReport, "Cover RDA firmata", acFormatPDF, "D:\scansioniRDANapoli\" & Progr & ".pdf", False
>
> fino a qui sono riuscito.

Bruno Campanini

unread,
Mar 27, 2017, 8:03:50 AM3/27/17
to
ignazio.pilone was thinking very hard :
È già strano sentirsi usare il pronome di cortesia fuori dal Web,
che sentirselo usare nel Web...
Vorrei lo evitassi, almeno nei miei confronti.

Con una riga di codice si può fare ben poco; con le seguenti
puoi verificare le possibilità di accesso al tuo Outlook:
=========================================
Private Sub Command10_Click()
Dim OL As New outlook.Application, NewMail As MailItem
Dim i As Integer, S As String
Dim AttachmentArray(1 To 3) As String
Dim FSO As Object, TextStream As Object
Dim eMailMessage As String, SendAccount As String
Dim ReceiveAccount As String

'--- Definizioni ----------------------------------
'Testo del messaggio
eMailMessage = "Quando i Romani avevano le palle."

' File contenente il corpo del messaggio
Set FSO = CreateObject("Scripting.FileSystemObject")
Set TextStream = FSO.OpenTextFile("D:\Test\aa0.txt")
Do Until TextStream.AtEndOfStream
S = S & vbCrLf & TextStream.ReadLine
Loop

' Tre file costituenti gli attachment
AttachmentArray(1) = "D:\Test\aa1.txt"
AttachmentArray(2) = "D:\Test\aa2.txt"
AttachmentArray(3) = "D:\Test\aa3.txt"

' Indirizzo DAL quale si trasmette
SendAccount = "xxxxx...@xxxxxx.com"

' Indirizzo AL quale si trasmette
ReceiveAccount = "yyyyy...@yyyyyy.yy"
'----------------------------------------------

On Error GoTo SendErr
Set OL = CreateObject("Outlook.Application")
Set NewMail = OL.CreateItem(olMailItem)
With NewMail
.SendUsingAccount = Session.Accounts(SendAccount)
.To = ReceiveAccount
.CC = "wwwww...@wwwwww.ww; zzzzz...@zzzzzz.zz"
'.BCC = "vvvvv...@vvvvvv.vv; uuuuu...@uuuuuu.uu"
.Subject = "Prova eMail da Access"
.Body = eMailMessage & vbCrLf & S
.ReadReceiptRequested = True ' False
For i = 1 To 3
.Attachments.Add AttachmentArray(i)
Next
.Send
End With
MsgBox "Sent without Errors!"

Exit_Sub:
Exit Sub

SendErr:
MsgBox "Error n. " & Err.Number & vbCrLf & Err.Description
Resume Exit_Sub

End Sub
==================================

Dovrai sostituire i vari xxxxx...@xxxxxx.xx con indirizzi
effettivi e creare i file "D:\Test\aaX.txt" che contengono il
testo e gli allegati, ovvero REMmare le righe di codice che
li riguardano.

In Tools-->References dovrai avere:
- Visual Basic for Applications
- Microsoft Access 16.0 Object Library
- Microsoft Outlook 16.0 Object Library
- Microsoft Office 16.0 Access database engine Object Library

O qualcosa di simile riferito alla versione di Office installata
(forse anche Microsoft Scripting Runtime...)

Inoltre, dovresti creare un file di testo con estensione .REG
contenente:
===============================
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\16.0\Outlook\Security]
"ObjectModelGuard"=dword:00000002

[HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Outlook\Security]
"PromptOOMSend"=dword:00000002
"AdminSecurityMode"=dword:00000003

===============================
che dovrai eseguire una tantum per consentire l'accesso ad
Outlook da programma (l'ultima riga - come sopra indicato - deve
risultare blank).

Per quanto riguarda l'intera automazione del laborioso processo,
direi che è fattibile avendo a disposizione uno stralcio
esemplificativo del database sul quale operarre.

Bruno

ignazio.pilone

unread,
Mar 27, 2017, 9:27:28 AM3/27/17
to

> È già strano sentirsi usare il pronome di cortesia fuori dal Web,
> che sentirselo usare nel Web...
> Vorrei lo evitassi, almeno nei miei confronti.

ciao Bruno.
Non volevo sembrare sfottente era in segno di stima e anche, lasciami dire di vera ammirazione. Prometto di evitarlo d'ora in poi...
grazie infinite.

>Per quanto riguarda l'intera automazione del laborioso processo,
>direi che è fattibile avendo a disposizione uno stralcio
>esemplificativo del database sul quale operare.

Ora ci provo e cercherò di approfondire... In caso di difficoltà posso condividere un db ridotto composto di maschera e tabella ? Avresti voglia di aiutarmi ?
Non so nemmeno dove postare il db...
grazie infinite.

Bruno Campanini

unread,
Mar 27, 2017, 11:12:19 AM3/27/17
to
ignazio.pilone pretended :
Puoi inviarlo qui:
brun...@libero.it

Bruno

ignazio.pilone

unread,
Apr 4, 2017, 3:31:58 AM4/4/17
to
buongiorno a tutti.
Provando e riprovando nonostante le mie scarse conoscenze sono riuscito dalla maschera continua, tramite un pulsante che aziona una macro (creato con l'autocomposizione) a "mandar via" le mail.
In realtà questo non avviene, perché per ciascun record mi crea il messaggio @ con tutti i campi che mi interessano e io devo solo premere il tasto dell'invio. Questo per me è già molto e mi va benissimo.

Vi chiedo un aiuto importante per il quale non riescirò mai a venirne fuori.
E' possibile in tale macro aggiungere un azione che alleghi alla mail il file .pdf che si chiama come il record e che si trova in D:\RDANapoli\

Ad esempio, se il record è il Progr 12345 mi deve allegare il file che è D:\RDANapoli\12345.pdf

GRAZIE INFINITE A TUTTI

@Alex

unread,
Apr 4, 2017, 6:50:20 AM4/4/17
to
Non so a che punto sei arrivato e che soluzione hai utilizzato.
Se usi il metodo OutPutTo... non puoi allegare nulla.
Se usi MSO o MAPI puoi fare come vuoi usando il metodo ADD sulla Collection Attachments membro dell'oogetto MAPI Message.

objMessage.Attachments.Add "C:\TuoFile.PDF"

Tuttavia penso siamo lontani da quetsa cosa....

@Alex

ignazio.pilone

unread,
Apr 4, 2017, 8:38:10 AM4/4/17
to

>
> Tuttavia penso siamo lontani da quetsa cosa....
>
> @Alex


ciao Alex,
io sicuramente sono lontanissimo e non ho nemmeno il GPS, posso quindi contare solo sull'aiuto di questo Forum.

Spiego meglio cosa ho fatto, penso con la classica fortuna dell'inesperto.
Nella maschera continua, dove ho tutti i record che devo trasmettere, ho inserito con l'autocomposizione un pulsante che comanda una macro.
Sulle proprietà su click del pulsante vedo (macro incorporata).
Se clicco sui puntini mi apre una videata "includiOggettoDatabaseInMessaggioDiPostaElettronica" dove ho inserito oggetto, testo messaggio, destinatari e cc.
In calce a questa schermata c'è una combobox che mi consente di aggiungere una nuova azione, non capisco però che istruzione dare e se posso allegare il mio file .pdf.

grazie infinite per l'aiuto e per la sempre squisita attenzione.

@Alex

unread,
Apr 4, 2017, 8:53:37 AM4/4/17
to
A prescindere, con una MACRO non puoi fare quello che chiedi, a meno di no scrivere una FUNZIONE VBA che poi richiami con la tua macro... ma devi prendere una strada diversa, il VBA, senza il quale hai una rinuncia.

@Alex

ignazio.pilone

unread,
Apr 4, 2017, 10:05:53 AM4/4/17
to
ok grazie Alex....
Considerando la mia scarsissima capacità in VBA tengo duro fino al 31/12/2017 e continuerò a schiacciare i miei pulsantini.
Dal 1 gennaio 2018 sarò a riposo e quindi smetterò di stressarvi con le mie richieste di aiuto.

grazie infinite per la consulenza.

0 new messages