Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

Invio email a destinatari diversi VBA

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

Invio email a destinatari diversi VBA

Postdi pasqualina » 27/06/14 09:17

Ciao a tutti,
ho un file per la gestione di spedizioni con (oltre a tante altre colonne) i seguenti dati:
- colonna con nome della compagnia di trasporto
- colonna con email del trasportatore (in automatico tramite una VLOOKUP)
Vorrei creare una macro che esegua questo:
Ogni volta che compilo una riga (inserisco il trasportatore e in automatico si compila la colonna con la corrispondente email) mandi un email all'indirizzo corrispondente a quel trasportatore.
Per ora l'ho fatta così ma manda l'email sempre al primo indirizzo, non riesco a far scorrere le righe:

Sub InvioEmailMsO()
Dim myOutlook As Object
Dim myMailItem As Object
Dim variabileEmailDelDestinatario As String
variabileEmailDelDestinatario = [T3] //T è la colonna che ad ogni prenotazione si compila con l'email del destinatario

Dim TestoEmail As String
TestoEmail = [S3]
If [N3] <> "1" Then Exit Sub //N è la colonna dei camion (se c'è scritto 1 vuol dire che mi serve un camion, forse si può anche togliere!

Set otlApp = CreateObject("Outlook.Application")
Set otlNewMail = otlApp.CreateItem(olMailItem)
With otlNewMail
.to = variabileEmailDelDestinatario
.Subject = "NUOVA PRENOTAZIONE"
.body = TestoEmail
.Display
.send
End With
End Sub


La mia paura mettendo un ciclo per scorrere le righe è che ogni volta che inserisco una nuova riga rimandi le email a tutti dalla prima riga, invece deve inviarla solo al destinatario presente nella riga appena compilata. AIUTATEMI PER FAVOREEEEEE!!!!
Ah se è possibile, vorrei far apparire un messaggio con scritto "email inviata con successo" se la macro va a buon fine.
Grazieeeee è urgente!!!!
pasqualina
Newbie
 
Post: 2
Iscritto il: 23/06/14 12:54

Sponsor
 

Re: Invio email a destinatari diversi VBA

Postdi aurelio37 » 28/06/14 18:47

Forse in Applicazioni Office Windows qualcuno può risponderti,
quindi sposto la discussione.
La musica rispecchia e accompagna le nostre emozioni e i nostri stati d'animo. Abel
Avatar utente
aurelio37
Moderatore
 
Post: 2419
Iscritto il: 07/02/07 11:36
Località: Milano

Re: Invio email a destinatari diversi VBA

Postdi Anthony47 » 28/06/14 23:03

Dissento dall' idea che ad ogni azione, anche errata, parta automaticamente una mail.
Facciamo cosi':
1. tasto dx sul tab col nome foglio su cui lavori; scegli Visualizza codice
2. inserisci questo codice nel frame vuoto di dx (se non e' vuoto devi dire che cosa e' gia' presente)
Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range)
Dim myCarr As String
myCarr = "B"    '<<< La colonna dove scrivi il nome dello spedizioniere
If Application.Intersect(Target, Cells(1, myCarr).EntireColumn) Is Nothing Then Exit Sub
Application.EnableEvents = False
Range("Z1").Value = Cells(Target.Row, "T").Value     '<<< Z1 deve essere una cella libera!
Application.EnableEvents = True
End Sub
NB: Le righe marcate <<< devono essere personalizzate.
In questo modo la cella Z1 sara' compilata con l' indirizzo email dello spedizioniere.
3. nella tua macro modifichi variabileEmailDelDestinatario = [T3] in variabileEmailDelDestinatario = [Z1]

Operativamente:
-inserisci i tuoi dati
-controlli che tutto sia come da attese
-lanci la macro InvioEmailMsO, eventualmente aiutandoti con un Pulsante che disegnerai nei pressi di Z1 e a cui avrai assciato proprio la macro InvioEmailMsO.

Se invece dai per scontato che sara' sempre tutto senza errori allora ti bastera' inserire Call InvioEmailMsO dopo la compilazione di Z1.

Se Z1 non e' libera nel tuo foglio, usa una qualsiasi altra cella disponibile, modificando di conseguenza le istruzioni.

Per la seconda domanda, nella tua InvioEmailMsO, tra End With ed End Sub inserisci:
Codice: Seleziona tutto
msgbox ("Email inviata")    ' "inviata con successo" non te lo garantisco...
'Rilascia lo spazio delle variabili:
Set otlNewMail = Nothing
Set otlApp = Nothing

Per controllare l' invio con successo ti suggerisco di inserire, subito dopo .to = variabileEmailDelDestinatario
Codice: Seleziona tutto
.CC = "mioIndirizzoEmail@MioDominio.it"   


Se ricevi l' email e' perche' e' stata inviata correttamente e ci sono buone chances che anche lo spedizioniere la riceva...

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13891
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Invio email a destinatari diversi VBA

Postdi pasqualina » 29/06/14 10:52

Grazie mille lo provo subito e ti faccio sapere :-))
pasqualina
Newbie
 
Post: 2
Iscritto il: 23/06/14 12:54


Torna a Applicazioni Office Windows


Topic correlati a "Invio email a destinatari diversi VBA":

Email curiose
Autore: gimart
Forum: Applicazioni Office Windows
Risposte: 6

Chi c’è in linea

Visitano il forum: Nessuno e 12 ospiti

cron