Excel sfrutta OutLook.
(seconda parte)- pagina vista:
volte
Premessa Insieme al Sistema Operativo Microsoft Windows (tutte le versioni) viene
installato anche il programma di gestione posta OutLook Express, ma visto che
in molti poi installano una Suite Microsoft Office, sarà possibile trovare sul
computer anche la versione completa del programma OutLook2000 (o versioni
successive).
Inviare posta da Excel tramite OE. Tra i diversi metodi per inviare posta da Excel, iniziamo con il più semplice: il metodo FollowHyperlink, in pratica un "collegamento ipertestuale", dell'Oggetto WorkBook. Questo metodo richiede che venga indicato l'indirizzo email del destinatario (mailto:) e sarà possibile inserire l'oggetto del messaggio (subject) ed un messaggio (body) manualmente, o tramite istruzioni vba. (nota: il metodo FollowHyperlink può essere usato sia per collegarsi ad un indirizzo web (Address), sia per spedire posta tramite OE.(mailto:)) L'istruzione base per richiamare la finestra "Nuovo Messaggio" di OE., con il
destinatario già inserito, è la seguente:
Come si nota, l'indirizzo email del destinatario è inserito direttamente nel codice, e scriveremo poi a mano l'oggetto ed il testo del messaggio. Se invece si volessero inserire via codice anche i due argomenti, useremo:
Se invece di scrivere gli argomenti di mailto direttamente nel codice, volessimo usare il contenuto di celle del foglio di lavoro, si dovrà predisporre ad esempio, in A1 un'indirizzo email, in B1 il testo dell'oggetto, in C1 il testo del messaggio, e l'istruzione diventa:
Con gli esempi sopra, si ottiene la comparsa della finestra "Nuovo Messaggio" di OE. con le istruzioni già compilate, ma si dovrà poi provvedere manualmente a premere il pulsante "Invio" per inviare il messaggio nella cartella "Posta in Uscita" di OE., pronto a partire alla prima connessione internet. Chiaramente diventa possibile inviare a più destinatari o lo stesso oggetto e testo messaggio, oppure diversificare sia l'oggetto che il testo del messaggio. Sarà sufficiente creare un ciclo che scorra la colonna contenente gli indirizzi email, e ad ogni indirizzo collegare la/le celle contenenti oggetto e testo messaggio. Nell'esempio seguente, per evitare di premere il pulsante "invia" nella finestra "Nuovo Messaggio" che apparirà ad ogni indirizzo email letto e predisposto dal ciclo, si inseriscono due righe d'istruzione che hanno il compito di premere per noi il pulsante "Invio", operazione necessaria per evitare di ritrovarci con tanti "Nuovi Messaggi" da inviare quanti saranno gli indirizzi letti. Si sfrutta per questo il metodo Wait che sospende l'esecuzione di istruzioni per un tempo indicato (necessario all'apertura di una finestra "Nuovo Messaggio") e successivamente l'istruzione SendKeys che invierà alla finestra ora attiva la sequenza di tasti corrispondente ad "invio". Si usa un ciclo Do While..Loop che scorrerà (come esempio) la colonna A a partire dalla riga (r) 1, e fino a che troverà celle con indirizzi email (quindi diverse da vuote), esegue l'istruzioni, in questo caso preferiamo la sintassi Cells, che consente di incrementare il numero riga (r = r + 1). Il tempo di attesa (Wait) è impostato ad 1 secondo (TimeValue), con computer lenti sarà necessario indicare 2 secondi o più.
Tacitamente sottinteso che le istruzioni andranno lanciate dal foglio che contiene gli indirizzi email, altrimenti nelle istruzioni andrà indicato anche il nome del foglio sul quale sono gli indirizzi, es. Sheets("tuoFoglio").Cells(tuariga, tuacolonna). Il metodo FollowHyperlink non consente però di inviare degli "allegati" (Attachments); per questa operazione dovremo usare altre strade che prevedono l'utilizzo di una libreria di sistema, presente sul computer solo se sarà stato installato Microsoft Exchange, e Microsoft Exchange viene installato insieme alla versione completa di Ol. Dal menù Strumenti/Riferimenti del VBE metteremo un segno di spunta alla libreria "Microsoft Outlook 10.0 Object Library" (o altra versione) corrispondente al file MSOUTL.OLB (normalmente posta in "C:\Programmi\....\Office10\"). Ora si potrà usare OE. (se OE. è il sistema di messaggistica predefinito) per inviare messaggi con allegati. Sfrutteremo il metodo SendMail dell'oggetto Workbook che consente di inviare la cartella attiva ad un nominativo (o a più di uno) presente nella Rubrica, oppure usare il Metodo Route che distribuisce la cartella di lavoro in base alla lista di distribuzione corrente.
Metodo SendMail questa istruzione invia ad un nominativo la cartella di lavoro attiva: dovremo usare il nome-cognome (Recipients) con il quale il nominativo appare nella Rubrica, e non il suo indirizzo email
oppure creare un multi invio usando una matrice (Array) come contenitore dei nominativi:
Poichè con Sendmail è possibile inviare solo la cartella attiva, se vorremo inviare un'altra cartella (Workbook) presente sull'Hard-disk, potremo usare un'escamotage: apriamo la cartella da inviare facendola diventare la cartella attiva, la inviamo, e la chiudiamo:
Attenzione: Visto che dovremo usare un nominativo come Recipients e non il suo indirizzo email, è necessario che il nominativo non risulti ambiguo nella Rubrica. Attenzione quindi a nominativi con più indirizzi: diversificate i nominativi nella Rubrica aggiungendo magari un numero progressivo, oppure "ab" per abitazione, "uf" per ufficio, ecc., quindi un "pippo" diventerà ad esempio "pippo ab", "pippo uf" e così via.
Precisazione. a questo punto è necessario fare una considerazione: la proprietà "Recipients" richiede di usare il "nome" come argomento e non l'indirizzo email; ma visto che in un messaggio, si deve usare l'indirizzo email per poterlo spedire, alla conversione nome/indirizzo email provvede lo stesso OE. accedendo alla Rubrica che contiene i dati, per rilevare l'abbinamento nome-indirizzo email.
(Lo stesso discorso vale anche se utilizzeremo Ol., con addirittura due o tre finestre messaggio)
Metodo Route Il metodo Route dell'oggetto Workbook distribuisce la cartella di lavoro attiva in base alla lista di distribuzione corrente; se la cartella non dispone di una lista di distribuzione è possibile creare una lista al momento dell'invio, utilizzando un Array dei nominativi dei destinatari. Si dovrà solo impostare la proprietà HasRoutingSlip dell'oggetto Workbook a True, condizione necessaria per poter usare la proprietà RoutingSlip dell'oggetto Workbook, che restituisce l'oggetto RoutingSlip (lista di distribuzione) del quale si potranno sfruttare alcune sue proprietà: Delivery - Restituisce o imposta il metodo di consegna utilizzato per la distribuzione. Può essere rappresentato da una delle costanti XlRoutingSlipDelivery seguenti: xlOneAfterAnother o xlAllAtOnce. Recipients - Restituisce o imposta i destinatari alla lista di distribuzione. Subject - Restituisce o imposta l'oggetto per un mailer o una lista di distribuzione. Message - Restituisce o imposta il testo del messaggio per la lista di distribuzione. Questo esempio invia la cartella attiva come lista di distribuzione; tutti i destinatari figureranno nel campo " A: " del messaggio :
Conclusioni: Sfruttando OutLook Express non possiamo inviare allegati diversi dalla cartella excel in quel momento attiva; se vorremo inviare altri tipi di file (immagini, documenti, ecc.) dovremo usare OutLook versione completa.
Seconda parte: Inviare posta da Excel tramite Ol. Come anticipato, con OutLook è possibile inviare allegati, diversi dalla cartella attiva, alle nostre email. Ricordiamoci comunque:
Per poter accedere ad Outlook da Excel, abbiamo bisogno di aprire un sessione con Outlook ed usiamo il CreateObjects. Sfrutteremo il metodo Send applicato all'oggetto MailItem che grazie al metodo CreateItem ci consente di creare appunto un nuovo messaggio di posta elettronica. Vediamo una routine d'esempio; invieremo ad un nominativo (Recipients) un email, indicato l'oggetto del messaggio (Subject), un breve testo di messaggio (Body), ed un file (Attachments) contenuto in una cartella del nostro Hard-disk indicando il percorso completo che mira al file. E' possibile anche in questo caso, creare un multi invio, usando una delle soluzioni già esemplificate sopra; se vorremo ad esempio inviare lo stesso file a più di un destinatario, useremo un Array per definire i nominativi, oppure potremo definire una lista (posta sul foglio di lavoro) da scorrere con un ciclo, lista che comprenderà i campi "nominativo", "oggetto del messaggio", "testo del messaggio", "percorso del file da allegare", e chiaramente potremo in ogni cella, diversificare uno o più argomenti per ogni nominativo.
Questa sotto invece è un'altra serie di istruzioni che ho reperito in internet (non mi ricordo dove), idonea per il multi invio con allegato. Non è difficile da capire: si suppone di avere un elenco di nominativi nella colonna A del foglio, a partire dalla riga 1, e nella colonna B il testo del messaggio, si applica l'ordinamento dei nominativi, indi inizia un ciclo che scorre i nominativi presenti, e per ogni nominativo letto nel ciclo, si chiama la sub SendMessage per l'invio del messaggio e dell'allegato, con il controllo (Is Missing) che l'allegato esista.
Credo di aver presentato una panoramica più dettagliata dell'altro articolo "Excel chiama Outlook", anche se incompleta, e anche se esistono altre routines compilabili. Ma gli argomenti trattati in questo articolo non fanno parte delle mie conoscenze "migliori" (non sono argomenti che mi interessano in modo particolare, e che non uso, preferendo la gestione manuale della mia posta, compreso l'invio di allegati). Se qualcuno sarà interessato, lo invito a "gustarsi" la guida in linea, che è ricca di spiegazioni. Buon lavoro.
prelevato sul sito www.ennius.altervista.org |