Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

Invio email da eM-Client con VBA Excel

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 da eM-Client con VBA Excel

Postdi WCB » 23/07/19 17:46

Ciao a tutti,
ho dovuto dire addio ad Outlook in quanto non stava più funzionando come dovrebbe.
Mi ritrovo con un nuovo programma che si chiama eM-Client e quello che chiedo è: sarebbe possibile inviare le email da excel con eM-Client?
La stessa cosa che faceva outlook ma con un nuovo programma...
Purtroppo non so come funziona la cosa, mi potreste dare una mano?
Se avete qualche dubbio, non esitate a chiedere.
Grazie mille a tutti dell disponibilità e a presto ;)
"I computer sanno quando vai di fretta"
Excel 2016
Avatar utente
WCB
Utente Senior
 
Post: 101
Iscritto il: 09/01/19 17:52

Sponsor
 

Re: Invio email da eM-Client con VBA Excel

Postdi Anthony47 » 24/07/19 01:13

Devi verificare se questo software ha una sua libreria per l'integrazione col vba.

Di default Excel ha la capacita' di impostare una mail sul client di posta in uso per inviare come allegato il file corrente.
Con vba e con formule puoi creare un collegamento ipertestuale di tipo "mailto" che consente di impostare destinatario, oggetto e un testo per la mail.
Es con la formula:
Codice: Seleziona tutto
=COLLEG.IPERTESTUALE("mailto:" & A2&"?Subject="&A3&"&body="&A4)

Cliccando poi sulla cella potrai impostare una mail al destinatario scritto in A2, col soggetto contenuto in A3 e il testo contenuto in A4.

Ti segnalo che Office consente di accedere direttamente a un server di posta tramite il componente "CDO"; questo strumento tuttavia e' incline a essere usato senza che l'utente sia cosciente di quel che succede, ad esempio perche' quanto viene spedito potrebbe non lasciare traccia.
Preferisco quindi non presentare soluzioni basate su di esso.
Se fai una ricerca con "excel vba CDO send email" troverai tante soluzioni, sceglierai tu se e come adattarle.

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

Re: Invio email da eM-Client con VBA Excel

Postdi WCB » 24/07/19 07:41

Buongiorno,
ciao Anthony ti ringrazio per aver risposto.
Sono a conoscenza dell'esistenza del CDO e francamente, dopo aver fatto innumerevoli prove, ho lasciato stare.
Per quanto riguarda il collegamento ipertestuale, praticamente invia l'email aprendo il programma di default per l'invio delle email, che in questo caso è eM-Client?
Nel senso che apre eM- Client e poi invio di là, come fa outlook lasciando il .Send commentato?
Abbi pazienza ti prego, con le formule sono parecchio indietro :aaah
Un'altra cosa, sempre con il collegamento ipertestuale misto a VBA, si possono inviare gli allegati?
(se hai qualche esempio, ti ringrazio tantissimo!)
Buona continuazione e grazie ancora.
"I computer sanno quando vai di fretta"
Excel 2016
Avatar utente
WCB
Utente Senior
 
Post: 101
Iscritto il: 09/01/19 17:52

Re: Invio email da eM-Client con VBA Excel

Postdi WCB » 24/07/19 08:28

Ultimissima cosa.. è possibile che il destinatario, corpo email ed oggetto possono essere prese dalle textbox con il collegamento ipertestuale?
Per quanto riguarda l'allegato (pdf), il nome del file è il risultato della combinazione delle textbox (stessa userform da cui prendo destinatario, corpo email ed oggetto).
Come dovrei fare per integrare l'allegato?
Scusa per le mille domande :(
"I computer sanno quando vai di fretta"
Excel 2016
Avatar utente
WCB
Utente Senior
 
Post: 101
Iscritto il: 09/01/19 17:52

Re: Invio email da eM-Client con VBA Excel

Postdi WCB » 24/07/19 11:28

Eccomi..
Ho buttato giù queste righe di codice, praticamente mi prende il destinatario, oggetto e corpo email dalle celle (A2,A3,A4):
Codice: Seleziona tutto
With ActiveSheet
.Range("A2") = Me.TextBox1.Text
.Range("A3") = Me.TextBox2.Text
.Range("A4") = Me.TextBox3.Text
End With
ThisWorkbook.FollowHyperlink _
"mailto:" & [A2] & "?subject=" & [A3] & "&body=" & [A4] & ""

Rimane il punto interrogativo per l'allegato.
Come dovrei fare?
"I computer sanno quando vai di fretta"
Excel 2016
Avatar utente
WCB
Utente Senior
 
Post: 101
Iscritto il: 09/01/19 17:52

Re: Invio email da eM-Client con VBA Excel

Postdi Anthony47 » 24/07/19 15:55

Non mi risulta che con MailTo si possa predisporre anche un attachment.

Col vba hai la possibilita' di allegare a una mail il workbook corrente (quindi, con qualche elaborazione vba, un singolo worksheet o anche un range di un worksheet). Esempio:
Codice: Seleziona tutto
Sub Test()
    Dim Dest As String
    Dest = "pippo@dominio.it"
    Application.Dialogs(xlDialogSendMail).Show Dest
End Sub

Questa predispone l'invio del workbook corrente al destinatario impostato

Questa invece invia direttamente l'allegato, e consente di impostare un Subject e volendo anche ReturnReceipt:=True (il default e' Falso):
Codice: Seleziona tutto
Sub Test2()
    Dim Dest As String
    Dest = "pippo@dominio.it"
    ThisWorkbook.SendMail Recipients:=Dest, Subject:="Invio file"
End Sub


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

Re: Invio email da eM-Client con VBA Excel

Postdi WCB » 24/07/19 18:09

Anthony...grazie milleeeee veramente!
Gentilmente spiegami una cosa, ho fatto in questa maniera, mi genera il file pdf (in questo caso il foglio attivo):
Codice: Seleziona tutto
Dim v As Variant
v = Application.GetSaveAsFilename("PO" & "_" & Cells(12, 2).Value & "_" & Cells(12, 3).Value & "_" & Cells(12, 4).Value, "PDF Files (*.pdf), *.pdf")
If VarType(v) <> vbString Then Exit Sub
With Sheets("Sheet1")
        .ExportAsFixedFormat Type:=xlTypePDF, Filename:=v, _
        Quality:=xlQualityStandard, IncludeDocProperties:=True, _
        IgnorePrintAreas:=False, From:=1, To:=2, OpenAfterPublish:=True
    End With
Dim Dest As String
    Dest = Range("A2")
    v.SendMail Recipients:=Dest, Subject:="Invio file"

Come vedi la "v" sarebbe l'allegato che vorrei mandasse insieme all'email.
L'indirizzo email si trova nella cella A2 e non è mai lo stesso. Cambia sempre.
Come dovrei fare affinchè invii l'email con l'allegato all'indirizzo email contenuto nella cella A2?
Grazie mille e buona serata! :)
"I computer sanno quando vai di fretta"
Excel 2016
Avatar utente
WCB
Utente Senior
 
Post: 101
Iscritto il: 09/01/19 17:52

Re: Invio email da eM-Client con VBA Excel

Postdi WCB » 24/07/19 18:33

Io vorrei che allegasse il file che genero tramite codice che ho scritto sopra e prendendendo il destinatario contenuto nella cella A2, mi invii il file.
Scusatemi davvero se chiedo troppo, ma siete la mia ancora di salvezza. :roll:
Grazie in anticipo della disponibilità e buona serata
"I computer sanno quando vai di fretta"
Excel 2016
Avatar utente
WCB
Utente Senior
 
Post: 101
Iscritto il: 09/01/19 17:52

Re: Invio email da eM-Client con VBA Excel

Postdi Anthony47 » 25/07/19 00:12

Come detto, con Mailto non mi risulta si possa inserire un allegato; mentre con gli altri sistemi che ti ho citato puoi allegare il workbook attivo o comunque quello esplicitamente selezionato.

Noto che usi XL2016; questa versione consente anche di predisporre una mail con in allegato una versione pdf del file, usando il comando File /Condividi; ma il comando non trova un equivalente codice vba, quindi e' possibile solo in manuale, o al piu' con una macro che (praticamente alla cieca) lancia una serie di comandi Excel usando le "scorciatoie" per i comandi. Con la mia versione, il codice e':
Codice: Seleziona tutto
Sub DesperadoPdfMail()
Application.SendKeys "%f", True                    'Alt-f
Application.Wait (Now + TimeValue("0:00:01"))
Application.SendKeys "y", True                     'Y2=Condividi
Application.SendKeys "2", True
Application.Wait (Now + TimeValue("0:00:01"))
Application.SendKeys "{TAB}", True                 'Tab+Tab per andare all'opzione Allegato Pdf
Application.SendKeys "{TAB}", True
Application.Wait (Now + TimeValue("0:00:01"))
Application.SendKeys "~", True                     'Enter
End Sub

Va inserito in un modulo standard del vba e poi e' necessario avviarlo tramite un pulsante sul foglio o (ad esempio) una icona aggiunta sulla Barra di Accesso Rapido (BAR); non e' possibile lanciarla ne' con Alt-F8 tantomeno dal vba (questo succede sul mio excel).
Per personalizzare la BAR vedi viewtopic.php?f=26&t=103893&p=647679#p647679

Tieni presente che inviare comandi tramite Sendkeys ha un risultato fortemente aleatorio.

Usando un comando sulla BAR sara' possibile predisporre la mail con in allegato il "file attivo", altrimenti sara' allegato il file col pulsante.

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

Re: Invio email da eM-Client con VBA Excel

Postdi WCB » 25/07/19 16:16

Dopo vari tentativi.... ho ripreso il codice che avevo scritto io.
Anthony ti ringrazio per la disponibilità, ma col codice che ho scritto mi trasforma il file in pdf (cosa importante per me), non fa niente se non lo allega, lo faccio manualmente.
Purtroppo il destinatario non è mai lo stesso, ecco il perchè non va bene. So che bisogna scrivere l'indirizzo email nel codice...
Mi studierò attentamente l'ultimo codice che hai postato.
Grazie ancora e buona serata ;)
"I computer sanno quando vai di fretta"
Excel 2016
Avatar utente
WCB
Utente Senior
 
Post: 101
Iscritto il: 09/01/19 17:52


Torna a Applicazioni Office Windows


Topic correlati a "Invio email da eM-Client con VBA Excel":


Chi c’è in linea

Visitano il forum: Nessuno e 22 ospiti