Condividi:        

EXCEL - creazione macro per invio automatico email

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

Re: EXCEL - creazione macro per invio automatico email

Postdi Flash30005 » 07/03/12 19:57

me la fai una prova così
Codice: Seleziona tutto
'.Display  'or use .send '<<<< commentata
.Send  '<<<<< non commentata
.SendKeys "%i" '<<<<< non commentata
'.Attachments.Add OutFile        '<<<<< commentata
End With
  Application.Wait (Now + TimeValue("0:00:07"))

'--- <<< senza queste righe codice
 '   Application.SendKeys "%i"       '<<<<< commentata
  '  Application.Wait (Now + TimeValue("0:00:07"))        '<<<<< commentata


E fai sapere

ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Sponsor
 

Re: EXCEL - creazione macro per invio automatico email

Postdi ahidai » 07/03/12 21:01

Flash30005 ha scritto:me la fai una prova così
Codice: Seleziona tutto
'.Display  'or use .send '<<<< commentata
.Send  '<<<<< non commentata
.SendKeys "%i" '<<<<< non commentata
'.Attachments.Add OutFile        '<<<<< commentata
End With
  Application.Wait (Now + TimeValue("0:00:07"))

'--- <<< senza queste righe codice
 '   Application.SendKeys "%i"       '<<<<< commentata
  '  Application.Wait (Now + TimeValue("0:00:07"))        '<<<<< commentata

E fai sapere
ciao


Ciao Flash, ho provato e da errore di run-time '438': proprietà o metodo non supportati dall'oggetto cliccando poi debug mi evidenzia la riga:
Codice: Seleziona tutto
.SendKeys "%i" '<<<<< non commentata

Se hai bisogno di altre prove sono a disposizione, poi ti chiedo cortesemente che stringa devo inserire per ridurre ad icona il file.
Ciao.
ahidai
Utente Senior
 
Post: 212
Iscritto il: 08/12/10 17:33

Re: EXCEL - creazione macro per invio automatico email

Postdi Flash30005 » 07/03/12 22:28

Ok
per la prova
(strano... avevo quel codice salvato come funzionante, non avendo MsOutlook mi sono fidato dell'utente che mesi fa affermava funzionasse)

per quanto riguarda la riduzione a icona proprio non saprei... :undecided:
Quindi ho pensato di registrare una macro ed ho ottenuto questo codice
Codice: Seleziona tutto
Application.WindowState = xlMinimized


capisco che il vba non è facile da imparare e memorizzare tutte le chiavi possibili,
ma non vi viene mai in mente di registrare una macro e andare a vedere il codice ottenuto? 8)

Non bisogna mai perdersi in un "bicchiere d'acqua"!!!

ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: EXCEL - creazione macro per invio automatico email

Postdi ahidai » 07/03/12 22:43

Flash30005 ha scritto:Ok
per la prova
(strano... avevo quel codice salvato come funzionante, non avendo MsOutlook mi sono fidato dell'utente che mesi fa affermava funzionasse)

per quanto riguarda la riduzione a icona proprio non saprei... :undecided:
Quindi ho pensato di registrare una macro ed ho ottenuto questo codice
Codice: Seleziona tutto
Application.WindowState = xlMinimized


capisco che il vba non è facile da imparare e memorizzare tutte le chiavi possibili,
ma non vi viene mai in mente di registrare una macro e andare a vedere il codice ottenuto? 8)

Non bisogna mai perdersi in un "bicchiere d'acqua"!!!

ciao

Ciao Flash e grazie ancora per l'aiuto, si certo ci ho pensato a registrare la macro, ma non ha avuto successo!!!!
Bisogna anche saper registrare le macro :lol:
Ciao e buona serata.
P.S.
dimenticavo la tua funziona!!!!! Grazie.
ahidai
Utente Senior
 
Post: 212
Iscritto il: 08/12/10 17:33

Re: EXCEL - creazione macro per invio automatico email

Postdi Anthony47 » 07/03/12 22:56

Funziona usando
Codice: Seleziona tutto
.Send  '<<<<< non commentata
.SendKeys "%i" '<<<<< non commentata

:?: :?:
Cioe' con ".Send" (invece di ".Display") e SendKeys subito dopo?

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19439
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: EXCEL - creazione macro per invio automatico email

Postdi ahidai » 07/03/12 23:44

Ciao Anthony funziona così ma non si attiva ".Display" cioè non si vede la finestra di Outlook

Codice: Seleziona tutto
'...
'.Display   <<<<<< commentato
.Send
End With
    Application.Wait (Now + TimeValue("0:00:07"))
    Application.SendKeys "%i"       
    Application.Wait (Now + TimeValue("0:00:07"))


In effetti come suggerito da te, solo che attivando anche ".Display" il procedimento della macro va bene ma l'email rimane in "memoria - posta in uscita" di Outlook ma non parte.
Ciao e grazie di nuovo per l'aiuto.

EDIT - Flash ore 00:11: ho modificato il post per renderlo più leggibile
ahidai
Utente Senior
 
Post: 212
Iscritto il: 08/12/10 17:33

Re: EXCEL - creazione macro per invio automatico email

Postdi Anthony47 » 08/03/12 00:01

Se parte con .Send e' ok cosi'; se non parte con .Display e' perche' lo shortcut per "Invia mail" non e' Alt-i.

Aggiungo una informazione che da qualche parte nella discussione e' gia' detta: va disabilitato l' uso di Word come eventuale editor delle mail. Per questo, in OL2003: Menu /Strumenti /Opzioni, tab Formato posta, togli la spunta a controllo Utilizza Microsoft Word per modificare i messaggi di posta elettronica

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19439
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: EXCEL - creazione macro per invio automatico email

Postdi ahidai » 08/03/12 11:08

Un ciao a tutti.
Allora volevo un chiarimento, questa è la macro funzionante con il pc di casa, mi chiedo perchè in ufficio non mi funziona e mi da da errore di run-time '287': errore definito dall'applicazione o dall'oggetto cliccando poi debug mi evidenzia la riga: ".Send":
Codice: Seleziona tutto
Public Riga As Integer
Sub Scadenza()
UR = Worksheets("Scadenze").Range("A" & Rows.Count).End(xlUp).Row
For RR = 2 To UR
If Range("J" & RR).Value = 0 Then
If Range("E" & RR).Value = 10 Or Range("E" & RR).Value = 5 Or Range("E" & RR).Value = 3 Or Range("E" & RR).Value = 1 Then
Range("J" & RR).Value = 1
Riga = RR
Call Invioemail
Else: Range("J" & RR).Value = 0
End If
End If
Next RR
End Sub
Sub Invioemail()
Dim OutApp As Object
Dim OutMail As Object
Dim EmailAddr As String
Dim EmailAddr2 As String
Dim Subj As String
Dim BodyText As String

'  (a)
Set OutApp = CreateObject("Outlook.Application")
IE = Riga
''compilazione di un testo standard di accompagnamento
BDT = ""    '<<<<<
BDT = BDT & vbCrLf & "Avviso di scadenza, mancano giorni: " & Range("E" & IE).Value
BDT = BDT & vbCrLf & "per ultimare la pratica: " & Range("B" & IE).Value & vbCrLf
BDT = BDT & vbCrLf & "Quando la pratica è stata completata si prega di comunicarlo via breve o via e-mail." & vbCrLf
BDT = BDT & "Per conto di Pippo"
''  (b)
Nominat = Sheets("Scadenze").Range("B1").Value
'OutFile = Range("K" & IE).Value  'Stringa per invio file
EmailAddr = Range("H" & IE).Value
If EmailAddr = "" Then GoTo NoMail
EmailAddr2 = Range("F" & IE).Value
Subj = Range("C" & IE).Value

'
Set OutMail = OutApp.CreateItem(0)
With OutMail
.To = EmailAddr
.CC = EmailAddr2
.BCC = ""
.Subject = Subj
.Body = BDT
'.Display  'or use .send
.Send
'.SendKeys ("%(i)")
'.Attachments.Add OutFile
End With
    Application.Wait (Now + TimeValue("0:00:07"))
    Application.SendKeys "%i"        '*** QUI, non subito dopo .Display
    Application.Wait (Now + TimeValue("0:00:07"))

'  (c)
Set OutMail = Nothing

NoMail:

'  (d)
Set OutApp = Nothing

Call Riduci

End Sub
Sub Riduci()

Application.WindowState = xlMinimized

End Sub



Una buona giornata a tutti e ringrazio anticipatamente per le risposte.
ahidai
Utente Senior
 
Post: 212
Iscritto il: 08/12/10 17:33

Re: EXCEL - creazione macro per invio automatico email

Postdi Anthony47 » 09/03/12 01:36

Il tutto purtroppo necessita di alcune spiegazioni...
Vorrei precisare che la modalita'
Codice: Seleziona tutto
.Display
'attesa alcuni secondi
Application.SendKeys "%i"    '??? %a ???
Funziona fino a Windows XP; per OS successivi (Vista e Win 7) le impostazioni di "Controllo dell' Account Utente" (UAC) in genere impediscono l' emissione di sequenze di caratteri verso "altre applicazioni" per una diversa impostazione di protezione.
Il risultato potrebbe quindi essere che la mail viene visualizzata completamente ma non viene inviata; premendo Alt-? da tastiera (con la mail visualizzata) invece la mail parte.
Per "?" intendo il carattere che risulta sotttolineato nella icona di "Invia (mail)" presente nella barra degli strumenti della finestra della mail. Per quello che ne so in OL2003 esso e' "a" per la versione Italiana (quindi SendKeys "%a" nel codice vba), ed "s" per la versione Inglese (quindi SendKeys "%a" nel codice vba).

Il settaggio dello UAC e' modificabile all' interno di Pannello di controllo /Account utente, ma immagino si tratti di un abbassamento del livello di sicurezza per cui non lo consiglio.

In alternativa si puo' usare pero' uno script che fa la stessa cosa di Application.SendKeys:
Codice: Seleziona tutto
Set WSShell = CreateObject("WScript.Shell")
WSShell.SendKeys ("%a")  '<< Vedi testo
Sostituisce nella macro la riga Application.SendKeys "%a"
A seconda dello shortcut usato dall' applicazione potrebbe essere necessario usare una sequenza diversa da %a; vedi commento di prima.

Nelle versioni Outlook superiori a OL2003 (quindi OL2007 e OL2010), e' pero' disponibile una prestazione che consente di usare .Send senza che questo provochi la comparsa di un messaggio che chiede all' operatore di confermare l' invio automatico della mail da parte del vba (questo e' il motivo per cui si usa .Display /SendKeys); non ho queste versioni, quindi non sono in grado di segnalarvi correttamente il comando da utilizzare; la letteratura dice Menu /Tools /Trust Center /Program access, impostare "Never warn me about suspicious activity".

Immagino che ahidai abbia OL2007/2010 con questa impostazione, e sospetto che non abbia XP.

In quanto al run time error 287 penso che questo potrebbe verificarsi se l' impostazione di Outlook prevede la conferma dell' invio della mail e questa non viene data dall' utente.

A seconda del mix tra versione e SO la soluzione potrebbe essere:
OL2003 & XP: .Display e Application.Sendkeys
OL2003 & Vista o Win 7: .Display e Script
OL2007 & XP: come per OL2003 & Xp OPPURE .Send e "Never warn me about suspicious activity"
OL2007 & Vista o Win 7: .Display e Script OPPURE .Send e "Never warn me about suspicious activity"

Se con questi spunti non risolvi:
-dicci quale e' la tua combinazione di versione Applicazione e Sistema Operativo
-dicci quando crei una mail manualmente quale e' lo shortcut (Alt-carattere) con cui si comanda l' invio mail.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19439
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: EXCEL - creazione macro per invio automatico email

Postdi ahidai » 09/03/12 13:16

Ciao Anthony e grazie di nuovo per la risposta sempre esaustiva.
Allora in ufficio ho questa combinazione S.O. XP con S.P.3 e Office 2007 con S.P.3, la combinazione dei tasti per invio e-mail con Outlook 2007 è Alt+i.
Ho fatto delle prove ma senza esito positivo con "Set WSShell = CreateObject("WScript.Shell")
WSShell.SendKeys ("%i")", attivando e disattivando le varie funzioni ".Display - .Send".
Non capisco quello che ho evidenziato ed eventualmente come inserirlo nella macro: OL2007 & XP: come per Xp OPPURE .Send e "Never warn me about suspicious activity".
Ciao e buona giornata.
ahidai
Utente Senior
 
Post: 212
Iscritto il: 08/12/10 17:33

Re: EXCEL - creazione macro per invio automatico email

Postdi Anthony47 » 09/03/12 14:56

Se hai XP va bene l' uso di Application.SendKeys; la sequenza che funziona l' avevo data qui: viewtopic.php?f=26&t=62073&start=100#p542782
Cioe': usi ".Display" per visualizzare la mail, dopo alcuni secondi invii la sequenza "%i" (cioe' Alt-i) che da quello che hai scritto rappresenta lo shortcut per dire ad outlook "Invia la mail".
In alternativa puoi usare ".Send" per dire ad Outlook di inviare la mail, ma in questo caso Outlook dovrebbe dare un messaggio che dice circa "Qualcuno vuole inviare una mail, autorizzi?" e l' utente dovrebbe cliccare "Si"; questo messaggio puo' essere evitato se imposti Outlook per "Never warn me about suspicious activity" ("non mi allertare se vedi cose sospette"). In questo caso dovresti eliminae in toto la riga Application.SendKeys.
Altri utenti hanno usato un applicativo che si chiama ClickYes per premere automaticamente yes, non ne conosco potenzialita' e limiti.
Pero' il comportamento su OL2007 io non lo posso collaudare.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19439
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: EXCEL - creazione macro per invio automatico email

Postdi ahidai » 09/03/12 17:18

Anthony47 ha scritto:In alternativa puoi usare ".Send" per dire ad Outlook di inviare la mail, ma in questo caso Outlook dovrebbe dare un messaggio che dice circa "Qualcuno vuole inviare una mail, autorizzi?" e l' utente dovrebbe cliccare "Si"; questo messaggio puo' essere evitato se imposti Outlook per "Never warn me about suspicious activity" ("non mi allertare se vedi cose sospette"). In questo caso dovresti eliminae in toto la riga Application.SendKeys.


Ciao Anthony, ho risolto grazie alle tue indicazioni, che ho evidenziato.... Sei unico e naturalmente anche Flash :!: :!:
Ciao a tutti.
ahidai
Utente Senior
 
Post: 212
Iscritto il: 08/12/10 17:33

Re: EXCEL - creazione macro per invio automatico email

Postdi ale140 » 06/08/12 16:12

Grandi ragazzi!!!

ho seguito il discorso e sono riuscito ad inviare le mail in automatico diciamo tutto perfetto :lol:

adesso è giunto il momento di alzare la posta....
io in excel ho la seguente tabella

nome mail destinatario cc oggetto percorso none del file
aaa aaaa@aaa.it prova c:\temp aaa.pdf

adesso applicando la macro invia tutte le mail (righe) con 1 allegato pdf in questo caso aaa.pdf

vorrei arrivare ad allegare piu pdf nella stessa mail che ha per nome aaa....
cioe il programma di terzi mi crea un file aaa.pdf aaa01.pdf aaa02.pdf aaa03.pdf io voglio fare che in automatico dando come nome aaa mi alleghi tutti i suoi "simili".

grazie spero di essere stato chiaro.... :oops:
ale140
Newbie
 
Post: 7
Iscritto il: 06/08/12 15:59

Re: EXCEL - creazione macro per invio automatico email

Postdi Flash30005 » 06/08/12 16:59

Ciao Ale140 e benvenuto nel Forum

Fino ad ora non credo sia mai stata fatta questa richiesta
e dovremo escogitare qualcosa nel frattempo potrest specificare se i file hanno sempre lo stesso nome?
e se il numero dei file è sempre lo stesso.

Nel primo caso potrai creare tanti OutFile quanti sono i file da allegare esempio
Codice: Seleziona tutto
OutFile1 = "C:\temp\aaa01.pdf"
OutFile2 = "C:\temp\aaa02.pdf"
OutFile3 = "C:\temp\aaa03.pdf"
OutFile4 = "C:\temp\aaa04.pdf"
OutFile5 = "C:\temp\aaa05.pdf"

With OutMail
.To = EmailAddr
...
.Attachments.Add OutFile1
.Attachments.Add OutFile2
.Attachments.Add OutFile3
.Attachments.Add OutFile4
.Attachments.Add OutFile5


Oppure, con una macro creare un elenco dei file da inviare nel foglio di excel (colonna A)
e usare un ciclo for next
Codice: Seleziona tutto
With OutMail
.To = EmailAddr
...
For RR = 1 to UR
.Attachments.Add Range("A" & RR).value
Next RR
...


ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: EXCEL - creazione macro per invio automatico email

Postdi ale140 » 06/08/12 18:55

grazie della rapida risposta.....

allora i file sono variabili e nn si possono prevedere l 'unica cosa statica è l'inizio che è uguale alla colonna A cioè nome....
in piu in c:\temp vanno a finire tutti i file di diverse righe.... tipo aaa.pdf aaa01.pdf aaa02.pdf bbb.pdf bbb01.pdf ecc...

il primo metodo che mi hai gentilmente proposto era quello piu facile ma purtroppo nn sono cosi statico... :cry:

nel secondo credo che mi alleghi tutti i file che incontra in una unica mail e quindi nn fa al caso mio.... ci vorrebbe un controllo che dica bene controllo le prime 6 lettere (statiche) se è uguale al nome ti allego altrimenti passo...
ma nn so come fare..... :cry: :cry: :cry: :cry: :cry:
ale140
Newbie
 
Post: 7
Iscritto il: 06/08/12 15:59

Re: EXCEL - creazione macro per invio automatico email

Postdi Flash30005 » 06/08/12 19:39

Si può fare tutto ciò che vorresti fare ma ora non capisco quali file vorresti inviare
(avevo capito tutti i file .pdf contenuti in C:\temp)

Se vuoi definire un'inizio nomefile lo possiamo fare ma indicami una cella dove applicherai questa regola.

Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: EXCEL - creazione macro per invio automatico email

Postdi ale140 » 06/08/12 19:58

be la cella è quella del nome file la G diciamo che sono i caratteri che deve prendere in considerazione...
ale140
Newbie
 
Post: 7
Iscritto il: 06/08/12 15:59

Re: EXCEL - creazione macro per invio automatico email

Postdi Flash30005 » 06/08/12 20:41

ale140 ha scritto:be la cella è quella del nome file la G


:?:

"G" al massimo potrà essere una colonna non una cella :roll:

Per non perdere tempo prezioso e trovare una soluzione veloce è opportuno essere più precisi possibile
(ora ad esempio ho perso tempo a leggere e dare questa risposta, la prossima volta eviterò)

ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: EXCEL - creazione macro per invio automatico email

Postdi ale140 » 06/08/12 20:56

figurati se ti voglio fare perdere tempo, ti allego il link all'immagine se riesco cosi capisci al volo.....

preciso che il nome dovrebbe avere sempre 6 caratteri nell immagine nn è cosi......

grazie e scusa

http://img688.imageshack.us/img688/9392/demowg.jpg
ale140
Newbie
 
Post: 7
Iscritto il: 06/08/12 15:59

Re: EXCEL - creazione macro per invio automatico email

Postdi Flash30005 » 06/08/12 21:25

In po' più chiaro ma l'immagine fa scaturire altre domande
(perché discordante dal post precedente: invio di più file nella stessa email)

Quindi a Tizio vuoi inviare Solo il file in G2, a Caio il file in G3, etc?

Confermi? (l'accendiamo?) :D

Inoltre vorrei che pubblicassi la macro che dici di aver realizzato per l'invio posta e che a te funziona.

ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

PrecedenteProssimo

Torna a Applicazioni Office Windows


Topic correlati a "EXCEL - creazione macro per invio automatico email":


Chi c’è in linea

Visitano il forum: Nessuno e 17 ospiti