Note: The other languages of the website are Google-translated. Back to English

Come inviare e-mail se si fa clic sul pulsante in Excel?

Supponendo che sia necessario inviare e-mail tramite Outlook facendo clic su un pulsante nel foglio di lavoro di Excel, come si può fare? Questo articolo introdurrà un metodo VBA per ottenerlo nei dettagli.

Invia e-mail se si fa clic sul pulsante con il codice VBA


Invia e-mail se si fa clic sul pulsante con il codice VBA

Si prega di fare quanto segue per inviare un'e-mail tramite Outlook se si fa clic su un pulsante di comando nella cartella di lavoro di Excel.

1. Inserire un pulsante di comando nel foglio di lavoro facendo clic su Costruttori > inserire > Pulsante di comando (controllo ActiveX). Vedi screenshot:

2. Fare clic con il pulsante destro del mouse sul pulsante di comando inserito, quindi fare clic su Visualizza codice dal menu di scelta rapida come mostrato nell'immagine sottostante.

3. In apertura Microsoft Visual Basic, Applications Edition finestra, sostituire il codice originale nella finestra del codice con il seguente script VBA.

Codice VBA: invia e-mail se si fa clic sul pulsante in Excel

Private Sub CommandButton1_Click()
'Updated by Extendoffice 2017/9/14
    Dim xOutApp As Object
    Dim xOutMail As Object
    Dim xMailBody As String
    On Error Resume Next
    Set xOutApp = CreateObject("Outlook.Application")
    Set xOutMail = xOutApp.CreateItem(0)
    xMailBody = "Body content" & vbNewLine & vbNewLine & _
              "This is line 1" & vbNewLine & _
              "This is line 2"
                  On Error Resume Next
    With xOutMail
        .To = "Email Address"
        .CC = ""
        .BCC = ""
        .Subject = "Test email send by button clicking"
        .Body = xMailBody
        .Display   'or use .Send
    End With
    On Error GoTo 0
    Set xOutMail = Nothing
    Set xOutApp = Nothing
End Sub

Note:

1). Si prega di modificare il corpo dell'e-mail come necessario nel file xMailBody riga nel codice.

2). Sostituisci il Email con l'indirizzo email del destinatario in linea .To = "Indirizzo e-mail".

3). Specifica i destinatari Cc e Ccn di cui hai bisogno .CC = "" e .Bcc = "" .

4). Modifica l'oggetto dell'email in linea .Subject = "Prova l'invio di e-mail facendo clic sul pulsante".

4. premi il altro + Q contemporaneamente i tasti per chiudere il file Microsoft Visual Basic, Applications Edition finestra.

5. Disattivare la modalità di progettazione facendo clic su Costruttori > Modalità di progettazione. Vedi screenshot:

D'ora in poi, ogni volta che fai clic sul pulsante di comando, verrà creata automaticamente un'e-mail con destinatari, oggetto e corpo specificati. Si prega di inviare l'e-mail facendo clic su Invia pulsante.

Note:: Il codice VBA funziona solo quando utilizzi Outlook come programma di posta elettronica.

Invia facilmente email tramite Outlook in base ai campi della mailing list creata in Excel:

L' Inviare emails utilità di Kutools for Excel aiuta a inviare e-mail tramite Outlook in base ai campi della mailing list creata in Excel.
Scaricalo e provalo ora! (30-giorni di percorso gratuito)


Articoli correlati:


I migliori strumenti per la produttività in ufficio

Kutools per Excel risolve la maggior parte dei tuoi problemi e aumenta la tua produttività dell'80%

  • Riutilizzo: Inserisci rapidamente formule complesse, grafici e tutto ciò che hai usato prima; Crittografa celle con password; Crea mailing list e invia email ...
  • Bar Super Formula (modifica facilmente più righe di testo e formula); Layout di lettura (leggi e modifica facilmente un gran numero di celle); Incolla su intervallo filtrato...
  • Unisci celle / righe / colonne senza perdere dati; Contenuto delle celle divise; Combina righe / colonne duplicate... Impedisci celle duplicate; Confronta intervalli...
  • Seleziona Duplica o Unico Righe; Seleziona Righe vuote (tutte le celle sono vuote); Super Find e Fuzzy Find in molte cartelle di lavoro; Selezione casuale ...
  • Copia esatta Più celle senza modificare il riferimento della formula; Riferimenti di creazione automatica a più fogli; Inserisci punti elenco, Caselle di controllo e altro ...
  • Estrai testo, Aggiungi testo, Rimuovi per posizione, Rimuovi spazio; Creare e stampare totali parziali di paging; Converti contenuto e commenti tra celle...
  • Super filtro (salva e applica schemi di filtri ad altri fogli); Ordinamento avanzato per mese / settimana / giorno, frequenza e altro; Filtro speciale in grassetto, corsivo ...
  • Combina cartelle di lavoro e fogli di lavoro; Unisci tabelle in base a colonne chiave; Suddividi i dati in più fogli; Conversione in batch xls, xlsx e PDF...
  • Più di 300 potenti funzionalità. Supporta Office/Excel 2007-2021 e 365. Supporta tutte le lingue. Facile implementazione nella tua azienda o organizzazione. Funzionalità complete Prova gratuita di 30 giorni. Garanzia di rimborso di 60 giorni.
scheda kte 201905

Scheda Office porta l'interfaccia a schede a Office e semplifica notevolmente il lavoro

  • Abilita la modifica e la lettura a schede in Word, Excel, PowerPoint, Publisher, Access, Visio e Project.
  • Apri e crea più documenti in nuove schede della stessa finestra, piuttosto che in nuove finestre.
  • Aumenta la produttività del 50% e riduce ogni giorno centinaia di clic del mouse!
fondo officetab
Commenti (73)
Rinomato 3.5 su 5 · Valutazioni 1
Questo commento è stato fatto dal moderatore sul sito
Ciao, sto cercando di inviare dati da una tabella pivot, puoi aiutarmi per favore
Questo commento è stato fatto dal moderatore sul sito
È possibile scrivere lo script in modo che quando si fa clic sul pulsante si alleghi all'e-mail come sopra ma si rimuove anche il pulsante? in modo che la copia del file inviato via e-mail non abbia più il pulsante su di essa?
Questo commento è stato fatto dal moderatore sul sito
Appena sotto ".Body = xMailBody" aggiungi quanto segue
.Allegati.Aggiungi ActiveWorkbook.FullName
Questo commento è stato fatto dal moderatore sul sito
Ciao Daniele.

Ho aggiunto la parte come hai detto, ma l'e-mail con la cartella di lavoro allegata ha ancora i pulsanti attivi.
Questo commento è stato fatto dal moderatore sul sito
ciao è possibile configurarlo in modo da non dover premere invio - invia automaticamente l'e-mail????
Questo commento è stato fatto dal moderatore sul sito
Ciao,
Si prega di sostituire la riga .Display con .Send in codice VBA sopra.
Questo commento è stato fatto dal moderatore sul sito
genera solo un'e-mail e continuerà a sovrascrivere il contenuto invece di aprire più bozze di e-mail.
Questo commento è stato fatto dal moderatore sul sito
Ciao a tutti prima di tutto un grande grazie, questo post è molto utile e funziona per l'allegato. Questo funziona per me ma nessun aggiornamento viene salvato nel foglio devi premere il pulsante di salvataggio. Vorrei che l'allegato avesse tutto ciò che è attualmente nel foglio excel.

Posso farlo utilizzando la funzione di posta elettronica integrata in Excel, ma volevo un pulsante poiché ho bisogno di codificare l'indirizzo e-mail specifico.

Quindi in sintesi vorrei sapere:

Vorrei sapere se c'è un modo per: dopo che un utente ha aperto la cartella di lavoro di excel e ha apportato modifiche se il pulsante manterrà l'allegato con gli aggiornamenti?
Questo commento è stato fatto dal moderatore sul sito
Buon Giorno,
Il codice è stato ottimizzato. Per favore, prova e grazie per il tuo commento.

Private Sub CommandButton1_Click ()
'Aggiornato da Extendoffice 2017/9/14
Dim xOutApp come oggetto
Dim xOutMail come oggetto
Dim xMailBody come stringa
On Error Resume Next
Imposta xOutApp = CreateObject ("Outlook.Application")
Imposta xOutMail = xOutApp.CreateItem(0)
ActiveWorkbook.Salva
xMailBody = "Contenuto del corpo" & vbNewLine & vbNewLine & _
"Questa è la riga 1" & vbNewLine & _
"Questa è la linea 2"
On Error Resume Next
Con xOutMail
.To = "Indirizzo e-mail"
.CC = ""
.BCC = ""
.Subject = "Prova l'invio di e-mail facendo clic sul pulsante"
.Corpo = xMailBody
.Allegati.Aggiungi ActiveWorkbook.FullName
.Visualizza 'o usa .Invia
Fine Con
On Error GoTo 0
Imposta xOutMail = Niente
Imposta xOutApp = Niente
End Sub
Questo commento è stato fatto dal moderatore sul sito
Come posso allegare la cartella di lavoro attiva all'e-mail quando premo il pulsante?
Questo commento è stato fatto dal moderatore sul sito
Buona giornata,
Appena sotto ".Body = xMailBody" aggiungi quanto segue
.Allegati.Aggiungi ActiveWorkbook.FullName
Questo commento è stato fatto dal moderatore sul sito
Teria como in vez de enviar a planilha, enviar as informações em imagem?
Questo commento è stato fatto dal moderatore sul sito
utilizzando questo codice VBA, posso fare riferimento alle informazioni sulla cella all'interno del corpo dell'e-mail? Ad esempio, come faccio a fare riferimento ai valori delle celle al codice seguente?

xMailBody = "Contenuto del corpo" & vbNewLine & vbNewLine & _
"Questa è la riga 1" & vbNewLine & _
"Questa è la linea 2"

Inoltre, utilizzando il codice (.TO = "indirizzo e-mail"). come posso fare in modo che l '"indirizzo e-mail" inserisca un indirizzo e-mail da una cella nella colonna accanto ad esso.


Grazie,
Questo commento è stato fatto dal moderatore sul sito
È possibile aggiungere un secondo pulsante di posta elettronica all'interno dello stesso foglio di lavoro? Quando provo a farlo, si connette al codice dal pulsante di posta elettronica originale. Grazie.
Questo commento è stato fatto dal moderatore sul sito
Ciao,
È necessario assegnare codici diversi a ciascun pulsante.
Questo commento è stato fatto dal moderatore sul sito
utilizzando questo codice VBA, posso fare riferimento alle informazioni sulla cella all'interno del corpo dell'e-mail? Ad esempio, come faccio a fare riferimento ai valori delle celle al codice seguente?

xMailBody = "Contenuto del corpo" & vbNewLine & vbNewLine & _
"Questa è la riga 1" & vbNewLine & _
"Questa è la linea 2"

Grazie,
Questo commento è stato fatto dal moderatore sul sito
Ciao Glenn,
Si prega di applicare il codice seguente. Grazie per il tuo commento.
xMailBody = [B5]
Questo commento è stato fatto dal moderatore sul sito
È possibile, invece di inviare l'allegato nell'e-mail, inviare un collegamento ipertestuale al file (situato su SharePoint)?
Questo commento è stato fatto dal moderatore sul sito
Hi Laurie,
Non posso aiutarti con quello. Grazie per il tuo commento.
Questo commento è stato fatto dal moderatore sul sito
Posso fare riferimento al valore in una cella nell'oggetto con stringa? Qualche variazione del sotto?

.Subject = "Nuovo evento:" & Target.Address = "$B$38"
Questo commento è stato fatto dal moderatore sul sito
ciao Abi,
Si prega di modificare il codice in .Subject = "Nuovo evento:" & [B38].
Grazie per il tuo commento.
Questo commento è stato fatto dal moderatore sul sito
Ciao,
Qualcuno può aiutarmi sul seguente requisito?
Ho un foglio excel con due elenchi a discesa.

1 elenco a discesa - elenco dei dipartimenti

2 elenco a discesa- categoria

Quello che voglio è quando seleziono un dipartimento e una categoria dagli elenchi; (ad esempio se seleziono "vendite" nel reparto e "relazione mensile" nella categoria)

Ho bisogno di inviare via e-mail la versione PDF di quel foglio di lavoro al team di vendita con l'oggetto dell'e-mail è un rapporto mensile.

Se seleziono "produzione" dall'elenco dei reparti, l'e-mail dovrebbe andare a un gruppo di persone nella produzione.

Apprezzo se puoi aiutarmi su questo

Raschino
Questo commento è stato fatto dal moderatore sul sito
Ciao Rasike,
Mi dispiace non poterti aiutare con quello. Benvenuto per postare qualsiasi domanda nel nostro forum: https://www.extendoffice.com/forum.html per ottenere più supporto per Excel dal nostro professionista di Excel o da altri fan di Excel.
Questo commento è stato fatto dal moderatore sul sito
Ciao,

Come posso ottenere che la posta aggiunga automaticamente la mia firma da Outlook?
Questo commento è stato fatto dal moderatore sul sito
Ciao John,
Il codice VBA seguente può aiutarti a risolvere il problema. Grazie per il tuo commento.

Private Sub CommandButton1_Click ()
'Aggiornato da Extendoffice 2019/6/26
Dim xOutApp come oggetto
Dim xOutMail come oggetto
On Error Resume Next
Imposta xOutApp = CreateObject ("Outlook.Application")
Imposta xOutMail = xOutApp.CreateItem(0)
Con xOutMail
.Visualizza 'o usa .Invia
.To = "Indirizzo e-mail"
.CC = ""
.BCC = ""
.Subject = "Prova l'invio di e-mail facendo clic sul pulsante"
.HTMLBody = "Questa è un'email di prova che viene inviata in Excel" & "
" & .HTMLBody
'.Spedire
Fine Con
On Error GoTo 0
Imposta xOutMail = Niente
Imposta xOutApp = Niente
End Sub
Questo commento è stato fatto dal moderatore sul sito
Devi essere un utente excel quando premi il pulsante per inviare un'e-mail? o solo la persona che riceve l'e-mail deve essere un utente di Outlook?
Questo commento è stato fatto dal moderatore sul sito
Buona giornata,
Poiché l'e-mail deve essere inviata tramite Outlook dopo aver fatto clic sul pulsante in Excel, è necessario che Outlook sia installato sul computer per farlo funzionare.
Questo commento è stato fatto dal moderatore sul sito
Voglio inviare il foglio di lavoro excel nell'e-mail ma non lo invia. Come si scrive il codice per inviare il documento come e-mail
Questo commento è stato fatto dal moderatore sul sito
Ciao Marco,
Il codice VBA seguente può aiutarti a risolvere il problema.

Sub InviaFoglioLavoro()
'Aggiornamento 20190626
Dim xFile come stringa
Dim xFormat quanto a lungo
Dim Wb come cartella di lavoro
Dim Wb2 come cartella di lavoro
Attenuare FilePath come stringa
Dim FileName As String
Oscura OutlookApp come oggetto
Oscura OutlookMail come oggetto
On Error Resume Next
Application.ScreenUpdating = False
Imposta Wb = Application.ActiveWorkbook
ActiveSheet.Copy
Imposta Wb2 = Application.ActiveWorkbook
Selezionare Caso Wb.FileFormat
Caso xlOpenXMLCartella di lavoro:
xFile = ".xlsx"
xFormato = xlOpenXMLCartella di lavoro
Caso xlOpenXMLWorkbookMacroEnabled:
Se Wb2.HasVBProject allora
xFile = ".xlsm"
xFormat = xlOpenXMLWorkbookMacroEnabled
Altro
xFile = ".xlsx"
xFormato = xlOpenXMLCartella di lavoro
End If
Caso Excel8:
xFile = ".xls"
xFormato = Excel8
Caso xlExcel12:
xFile = ".xlsb"
xFormato = xlExcel12
End Select
PercorsoFile = Ambiente$("temp") & "\"
FileName = Wb.Name & Format(Ora, "gg-mmm-aa h-mm-ss")
Imposta OutlookApp = CreateObject ("Outlook.Application")
Imposta OutlookMail = OutlookApp.CreateItem(0)
Wb2.SaveAs FilePath & FileName & xFile, FileFormat:=xFormat
Con Posta di Outlook
.To = "skyyang @extendoffice.com "
.CC = ""
.BCC = ""
.Subject = "kte features"
.Body = "Controlla e leggi questo documento."
.Allegati.Aggiungi Wb2.FullName
.Schermo
'.Spedire
Fine Con
Wb2.Chiudi
Uccidi FilePath & FileName & xFile
Imposta OutlookMail = Niente
Imposta OutlookApp = Niente
Application.ScreenUpdating = True
End Sub
Questo commento è stato fatto dal moderatore sul sito
Come posso allegare il foglio di lavoro attivo all'e-mail quando premo il pulsante?
Questo commento è stato fatto dal moderatore sul sito
Ciao Grant,
Fare clic con il pulsante destro del mouse e selezionare Visualizza codice, quindi copiare il codice sottostante tra le righe Private Sub e End Sub. Spero di poter aiutare. Grazie per il tuo commento.

Dim xFile come stringa
Dim xFormat quanto a lungo
Dim Wb come cartella di lavoro
Dim Wb2 come cartella di lavoro
Attenuare FilePath come stringa
Dim FileName As String
Oscura OutlookApp come oggetto
Oscura OutlookMail come oggetto
On Error Resume Next
Application.ScreenUpdating = False
Imposta Wb = Application.ActiveWorkbook
ActiveSheet.Copy
Imposta Wb2 = Application.ActiveWorkbook
Selezionare Caso Wb.FileFormat
Caso xlOpenXMLCartella di lavoro:
xFile = ".xlsx"
xFormato = xlOpenXMLCartella di lavoro
Caso xlOpenXMLWorkbookMacroEnabled:
Se Wb2.HasVBProject allora
xFile = ".xlsm"
xFormat = xlOpenXMLWorkbookMacroEnabled
Altro
xFile = ".xlsx"
xFormato = xlOpenXMLCartella di lavoro
End If
Caso Excel8:
xFile = ".xls"
xFormato = Excel8
Caso xlExcel12:
xFile = ".xlsb"
xFormato = xlExcel12
End Select
PercorsoFile = Ambiente$("temp") & "\"
FileName = Wb.Name & Format(Ora, "gg-mmm-aa h-mm-ss")
Imposta OutlookApp = CreateObject ("Outlook.Application")
Imposta OutlookMail = OutlookApp.CreateItem(0)
Wb2.SaveAs FilePath & FileName & xFile, FileFormat:=xFormat
Con Posta di Outlook
.To = "skyyang @extendoffice.com "
.CC = ""
.BCC = ""
.Subject = "kte features"
.Body = "Controlla e leggi questo documento."
.Allegati.Aggiungi Wb2.FullName
.Schermo
'.Spedire
Fine Con
Wb2.Chiudi
Uccidi FilePath & FileName & xFile
Imposta OutlookMail = Niente
Imposta OutlookApp = Niente
Application.ScreenUpdating = True
Questo commento è stato fatto dal moderatore sul sito
Ciao,

C'è un modo per cambiare il nome del file alla data corrente quando viene allegato all'e-mail?
Questo commento è stato fatto dal moderatore sul sito
Ciao,

Ho lavorato su un foglio, ma non riesco a finirlo. spero possiate aiutarmi :)

Il file stesso deve essere un xltm (template) e deve allegare il foglio stesso nella posta.

E una firma automatica, quindi sarei molto felice.

Grazie in anticipo /Dott. Nang
Questo commento è stato fatto dal moderatore sul sito
Salve, eseguo un foglio di calcolo con 80 conti a barre individuali e ho utilizzato il codice VBA in questa pagina con molto successo. Tuttavia, nel corpo dell'e-mail vorrei copiare e incollare l'intervallo specifico di celle di un account durante l'invio in modo che il cliente possa avere una cronologia. Puoi aiutare con il codice VBA per questo?
Questo commento è stato fatto dal moderatore sul sito
Ciao! Grazie mille per questo. È stato un aiuto fantastico.

È possibile inviare un foglio di lavoro attivo premendo un pulsante al posto della cartella di lavoro completa?

Grazie!
Non ci sono ancora commenti pubblicati qui
Carica Altre
Lasciate i vostri commenti
Pubblicazione come ospite
×
Valuta questo post:
0   Personaggi
Posizioni suggerite

Seguici

Copyright © 2009 - www.extendoffice.com. | Tutti i diritti riservati. Offerto da ExtendOffice, | Mappa del sito
Microsoft e il logo Office sono marchi o marchi registrati di Microsoft Corporation negli Stati Uniti e / o in altri paesi.
Protetto da Sectigo SSL