Condividi:        

[Excell 2010 OR Outlook 2010] Macro dispettosa

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

[Excell 2010 OR Outlook 2010] Macro dispettosa

Postdi sbs » 14/01/16 11:04

Scusate il titolo ma mi mancavano i caratteri doveva essere:
Macro Excell per invio mail con Outlook che smette all'improvviso di funzionare!

Vi racconto.
Ho preso da questo forum un insieme di macro per creare mail formattata in html da inviare con allegati diversi per ogni record. La sto usando da anni con estrema soddisfazione.
Ieri ho fatto una prova e funzionava tutto poi ho dovuto modificare un paio di campi per cambiare il testo che viene generato e ho rilanciato la prova.
Le mail vengono create ma….
Restano in spedizione!!!
Anche se l’apro da outlook e provo a reinviarle non partono!!!
L’unica cosa che ho notato è che l’indirizzo mail è segnato non come nome@xxxx.it ma bensì come ‘nome@xxxx.it’
Altra idea balzana è che Outlook “veda” che è creata da un altro applicativo Office e per dispetto non la voglia spedire!!!
Help!
Stefano
Avatar utente
sbs
Utente Senior
 
Post: 114
Iscritto il: 18/09/10 11:25

Sponsor
 

Re: [Excell 2010 OR Outlook 2010] Macro dispettosa

Postdi Dylan666 » 14/01/16 13:46

Lascia un link alla discussione con la macro che hai usato per favore
Avatar utente
Dylan666
Moderatore
 
Post: 39988
Iscritto il: 18/11/03 16:46

Re: [Excell 2010 OR Outlook 2010] Macro dispettosa

Postdi sbs » 14/01/16 14:33

Difficile ! sono varie discussioni!!!
Faccio prima a postare le 3 macro!

Prima che apre Outlook
Codice: Seleziona tutto
 
  Public AppXl As Object
    Sub appriOutLook()
Shell ("OUTLOOK")
    End Sub


Seconda che legge le righe e copia i contenuti che servono nel posto dove devono essere
Codice: Seleziona tutto
    Sub Main()
    Dim Iniz As String, myCol As Long, I As Long
    '
    Iniz = "A5"    '<<** La cella col primo nome da esaminare
    myCol = Range(Iniz).Column
    For I = Range(Iniz).Row To Range(Iniz).Offset(5000, 0).End(xlUp).Row
        [F1] = Cells(I, myCol + 4).Value
        [H1] = Cells(I, myCol + 2).Value
        [J1] = Cells(I, myCol + 1).Value
        [L1] = Cells(I, myCol).Value
        Call Invioemail
    Next I
    End Sub


Terza che fa il lavoro pesante

Codice: Seleziona tutto
Sub Invioemail()
Dim OutApp As Object
Dim OutMail As Object
Dim EmailAddr As String
Dim Subj As String
Dim BodyText As String                      'FIN QUI E' SONO "DICHIARAZIONI"
'  (a)
Set OutApp = CreateObject("Outlook.Application")

''  (b)


OutFile = [L2]
Testomail = [B1]


EmailAddr = Range("F1").Value      'INDIRIZZO EMAIL, PRESO DAlla casella DEL FOGLIO CORRENTE
Subj = [J2]    ''<<** OGGETTO DELLA MAIL
'
Set OutMail = OutApp.CreateItem(0)     'DA QUI SI CREA E INVIA LA MAIL
With OutMail
.To = EmailAddr
.CC = ""
.BCC = ""
.Subject = Subj
.Attachments.Add OutFile
.Body = olFormatHTML
.HTMLbody = Testomail

'Vedi testo per comportamenti diversi tra Versioni Outlook e OS:   '****
'.Display 'or use .send
.send


End With
'  (c)
Set OutMail = Nothing
'
'  (d)
Set OutApp = Nothing

    Application.Wait (Now + TimeValue("0:00:05"))
    Application.SendKeys "%a"
    Application.Wait (Now + TimeValue("0:00:04"))
'
End Sub



Spero sia chiaro il tutto

Stefano
Avatar utente
sbs
Utente Senior
 
Post: 114
Iscritto il: 18/09/10 11:25

Re: [Excell 2010 OR Outlook 2010] Macro dispettosa

Postdi Anthony47 » 14/01/16 23:46

Se hai Outlook 2010 allora queste istruzioni finali dovrebbero essere inutili e probabilmente dannose:
Codice: Seleziona tutto
    Application.SendKeys "%a"
    Application.Wait (Now + TimeValue("0:00:04"))

Quanto al problema che segnali:
-il tuo antivirus viene aggiornato regolarmente?
-se prepari una mail "a mano", viene inviata regolarmente?
-quando dici "Restano in spedizione" significa che la mail rimane visibile nel suo editor, come se fosse ancora in composizione, o entra nella coda delle mail in uscita, da dove poi Outlook dovrebbe spedirle (a seconda delle impostazioni) ogni N minuti, o quando l'utente fa Invia /Ricevi?

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

Re: [Excell 2010 OR Outlook 2010] Macro dispettosa

Postdi sbs » 15/01/16 05:33

Antivirus aggiornato.
Si se compilo mail normale parte senza problema.
Resta in coda, viene "elaborata" periodicamente ma mai spedita.
Avatar utente
sbs
Utente Senior
 
Post: 114
Iscritto il: 18/09/10 11:25

Re: [Excell 2010 OR Outlook 2010] Macro dispettosa

Postdi sbs » 15/01/16 07:57

msg di errore riportato:
Codice: Seleziona tutto
Errore dell'attività "nomeaccount" - Invio in corso (0x800CCC0F): "Conessione al server interrotta. Se il problema persiste contattare amministratore del server o il Providerdi Servizi Internet ISP.


Inoltre stamane ho provato a copiare tutto il testo, l'allegato, l'indirizzo e l'oggetto di una mail in giacenza su una nuova mail che è partita benissimo senza problemi!!!

Sembra che Out riconosca la mail generata da excell!
Avatar utente
sbs
Utente Senior
 
Post: 114
Iscritto il: 18/09/10 11:25

Re: [Excell 2010 OR Outlook 2010] Macro dispettosa

Postdi Anthony47 » 15/01/16 13:25

E' un errore di Outlook, va debuggato in Outlook.
Se hai piu' account configurati su Outlook controlla che l'account usato dalla mail generata dalla macro Excel sia configurato correttamente.
In piu' non ho capito se le "virgolette semplici" che hai usato quando precisavi che l’indirizzo mail è segnato come ‘nome@xxxx.it’ sono effettivamente presenti sul campo destinatario (che sarebbe un errore, quindi devi controllare cosa c'e' nella cella F1 [vedi istruzione EmailAddr = Range("F1").Value] o se erano solo usate per incapsulare il testo che volevi evidenziare.

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

Re: [Excell 2010 OR Outlook 2010] Macro dispettosa

Postdi sbs » 15/01/16 14:52

Probabile! adesso che collego i puntini ho modificato un account outlook (scaduto il 7/1/16!) (dei due lavorativi che ho!
Cambiando i due nomi che li contraddistinguono.

Solo che ora non ricordo dove è l'opzione (mi sembra in strumenti di office) che regola le relazioni tra i vari applicativi e dove dovrebbe esserci come inviare mail da altri applicativi.

Per quanto riguarda “ ’ “ non compare nel file, viene aggiunto o da excell o da outlook!
Però se quando provo a modificare l’email (ad esempio cambiando indirizzo mail a mano o modificando l’oggetto non parte lo stesso mentre se faccio un copia incolla in una mail nuova creata da dentro outlook parte!
Avatar utente
sbs
Utente Senior
 
Post: 114
Iscritto il: 18/09/10 11:25

Re: [Excell 2010 OR Outlook 2010] Macro dispettosa

Postdi Anthony47 » 17/01/16 01:46

Quelle "virgolette semplici" significano che Outlook non conosce quell'indirizzo, e il problema e' che non tutti i servizi di posta le ignorano, il che porta all'errore che hai indicato.

Se hai piu' account, verifica sulla mail in coda cosa succede cambiando l'account di partenza e lasciando l'indirizzo tra virgolette.

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

Re: [Excell 2010 OR Outlook 2010] Macro dispettosa

Postdi sbs » 17/01/16 12:25

Intendi "manualmente"? Domani provo. Sai da dove si impostA che account usare per excel?
Avatar utente
sbs
Utente Senior
 
Post: 114
Iscritto il: 18/09/10 11:25

Re: [Excell 2010 OR Outlook 2010] Macro dispettosa

Postdi sbs » 18/01/16 08:50

Provato passato da account "uno" ad account "due" e la mail è partita!

è un problema di account!

Ora come posso dire a Excell di usare "uno" come account ufficilae?
Avatar utente
sbs
Utente Senior
 
Post: 114
Iscritto il: 18/09/10 11:25

Re: [Excell 2010 OR Outlook 2010] Macro dispettosa

Postdi Anthony47 » 18/01/16 12:39

Evidentemente il server di posta in uscita (smtp serve dell'account) non accetta le virgolette semplici, o meglio le interpreta come parte dell'indirizzo e rigetta l'invio perche' destinatario non esistente.

Da OL2010 e' possibile selezionare da vba l' account da utilizzare con l' istruzione tipo
Codice: Seleziona tutto
.SendUsingAccount = OutApp.Session.Accounts.Item(1)

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

Re: [Excell 2010 OR Outlook 2010] Macro dispettosa

Postdi sbs » 18/01/16 13:16

Scusa quindi io metto
in
Invioemail()

la stringa
.SendUsingAccount = OutApp.Session.Accounts.Item(1)

ma dove dichiaro il nome dell'account (esempio "pippo") ?
Avatar utente
sbs
Utente Senior
 
Post: 114
Iscritto il: 18/09/10 11:25

Re: [Excell 2010 OR Outlook 2010] Macro dispettosa

Postdi Anthony47 » 18/01/16 23:39

Devi aggiungere l'istruzione "del tipo" .SendUsingAccount = OutApp.Session.Accounts.Item(1) prima dell'istruzione .Send

Tuttavia....
1) l'uso del metodo SendUsingAccount presuppone che nel tuo "Progetto Vba" sia impostato un riferimento alla libreria vba di Microsoft Outlook
2) devi usare l'indice giusto per puntare all'account giusto

Per impostare il riferimento:
-dalla finestra Microsoft Visual Basic: Menu /Strumenti /Riferimenti; scorri l'elenco, trova e spunta la voce Microsoft Outlook XX.X Object Library, premi Ok

Dopo aver impostato questo riferimento, e' meglio modificare la prima parte della macro in
Codice: Seleziona tutto
Sub InvioemailEB()
'early binding
Dim OutApp As Outlook.Application
Dim OutMail As MailItem
Dim EmailAddr As String
Dim Subj As String
Dim BodyText As String                      'FIN QUI E' SONO "DICHIARAZIONI"
'  (a)
Set OutApp = New Outlook.Application
'Set OutApp = CreateObject("Outlook.Application")

''  (b)
'Continua il tuo codice


A questo punto aggiungi questa istruzione in questa posizione:
Codice: Seleziona tutto
.SendUsingAccount = OutApp.Session.Accounts.Item(1)        'AGGIUNGERE, vedi testo che segue
.Send

Come detto pero' "devi usare l'indice giusto per puntare all'account giusto" (nell'esempio, "1" punta al primo account nella tua lista di accounts).
Se hai pochi account configurati puoi provare a inviare a te stesso una mail usando di volta in volta l'indice 1, 2, 3, ...
Es
Codice: Seleziona tutto
.SendUsingAccount = OutApp.Session.Accounts.Item(2)


Altrimenti puoi usare questa macro per avere, su msgbox, per ogni Account configurato nel tuo Outlook:
-l'indice (che userai nell'istruzione SendUsingAccount)
-la descrizione
-l'indirizzo email

Codice: Seleziona tutto
Sub ListaAccounts()
Dim OutApp As Outlook.Application
Dim OutMail As MailItem
Dim EmailAddr As String
Dim Subj As String
Dim BodyText As String                      'FIN QUI E' SONO "DICHIARAZIONI"
'  (a)
Set OutApp = New Outlook.Application
'Set OutApp = CreateObject("Outlook.Application")
''  (b)
For I = 1 To OutApp.Session.Accounts.Count
    With OutApp.Session.Accounts.Item(I)
        msg = I & vbCrLf & .CurrentUser & vbCrLf & .SmtpAddress
        MsgBox (msg)
    End With
Next I
Set OutApp = Nothing
End Sub

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

Re: [Excell 2010 OR Outlook 2010] Macro dispettosa

Postdi sbs » 21/01/16 16:36

Sono riuscito solo ora a provare!

Se metto 2 parte ma con account istituzionale "sbagliato"
Se metto 1viene generata con account giusto ma non parte e resta in "spedizione"!
Avatar utente
sbs
Utente Senior
 
Post: 114
Iscritto il: 18/09/10 11:25

Re: [Excell 2010 OR Outlook 2010] Macro dispettosa

Postdi Anthony47 » 22/01/16 00:22

Allora che facciamo, ripetiamo il discorso daccapo?
Le virgolette semplici nel testo per Outlook significano che l'indirizzo non e' conosciuto; e' probabile che il tuo server di posta in uscita (smtp server) non accetti le virgolette nell'indirizzo. Visto che l'account2 invece le accetta (le virgolette), vedi se lo stesso smtp server dell'account 2 puo' essere usato come smtp server di account1 (quello che lascia le mail nella coda di Partenza).

Oppure provi a inserire nella tua rubrica i destinatari a cui pensi di dover inviare email tramite macro; questo dovrebbe eliminare le virgolette perche' gli indirizzi vengono riconosciuti subito da Outlook.
Per inserire questi destinatari nella tua rubrica creati un file csv contenente almeno i campi Nominativo / Indirizzo di posta e importa questo csv in Outlook.

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

Re: [Excell 2010 OR Outlook 2010] Macro dispettosa

Postdi sbs » 25/01/16 13:01

I destinatari sono già in rubrica (per quelli che ho usato come prova).

Le virgolette non riesco a vedere se vengono messe in fase di creazione o, temo, dopo che outlook ha processato la mail e fallito l'invio.

La cosa strana è che su quella mail generata da excell se cancello i destinatari e li riscrivo scegliendoli dall'agenda non partono lo stesso.

Se cambio mittente parte immediatamente!

Ora se prendo una vecchia versione del file (base non avevo ancora sistemato la compilazione del testo mail attivato la copia carbone) funziona.
Avatar utente
sbs
Utente Senior
 
Post: 114
Iscritto il: 18/09/10 11:25

Re: [Excell 2010 OR Outlook 2010] Macro dispettosa

Postdi sbs » 25/01/16 14:48

Ho inizato a copiare una modifica alla volta in una copia del vecchio file per vedere dove mi si blocca!
Avatar utente
sbs
Utente Senior
 
Post: 114
Iscritto il: 18/09/10 11:25

Re: [Excell 2010 OR Outlook 2010] Macro dispettosa

Postdi Anthony47 » 25/01/16 18:22

Eravamo partiti che quando provavi a inviare una mail usciva un messaggio di errore di "Conessione al server interrotta"; oggi, 10 giorni dopo, non ho capito come siamo messi.

Se vuoi vedere la mail cosi' come e' creata dalla macro, invece della ".send" inserisci (solo per prova)
Codice: Seleziona tutto
.display
Stop


A quel punto puoi fare "Invia" da Outlook e vedere che succede (la macro invece deve essere completata con F5)

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


Torna a Applicazioni Office Windows


Topic correlati a "[Excell 2010 OR Outlook 2010] Macro dispettosa":


Chi c’è in linea

Visitano il forum: Gianca532011 e 74 ospiti