Tutoriel Excel – Envoyer des e-mails depuis Excel
Normalement, nous utilisons des clients de messagerie tels que Outlook, Gmail, etc. pour envoyer des e-mails. Cependant, de nombreuses personnes stockent des données dans des classeurs Excel et doivent envoyer certaines données à d'autres pendant qu'elles travaillent avec. Par conséquent, ils doivent envoyer des e-mails directement à partir du classeur Excel, ce qui permet de gagner du temps lors de l'utilisation d'un client de messagerie. Ce didacticiel étape par étape vous montrera comment envoyer des e-mails à partir d'Excel dans différentes conditions.
Notes: Avant d'appliquer les méthodes suivantes, vous devez configurer un client de messagerie Outlook sur votre ordinateur et le définir comme client de messagerie par défaut.
Sommaire : [ Cacher ]
1. Les bases de l'envoi d'emails depuis Excel
Cette section présente les bases de l'envoi d'e-mails à partir d'Excel.
1.1 Envoyer des e-mails depuis Excel avec les fonctions intégrées d'Excel
Si vous souhaitez uniquement envoyer des e-mails simples à partir d'Excel, y compris uniquement les champs À, Objet, Cc et corps. Les fonctions intégrées dans Excel peuvent vous aider.
1.1.1 Envoyer un e-mail depuis Excel avec une formule
Comme indiqué dans le tableau ci-dessous, pour envoyer différents e-mails à partir d'Excel en fonction des champs donnés, vous pouvez utiliser les références de cellule des champs donnés pour créer différentes formules de lien hypertexte pour le faire. Après avoir créé les hyperliens des e-mails, vous pouvez cliquer sur l'hyperlien dont vous avez besoin pour envoyer un e-mail automatiquement.
Remarque : S'il y a plus d'un destinataire dans les champs À ou Cc, veuillez les séparer par des points-virgules.
Cette section est divisée en quatre parties pour vous montrer les étapes pour ajouter l'adresse e-mail, le ou les destinataires Cc, la ligne d'objet et le corps du texte séparément à la formule de lien hypertexte. Veuillez procéder comme suit.
La syntaxe et les arguments de HYPERLINK fonction sont les suivantes.
Syntaxe
HYPERLINK(link_location, [friendly_name])
Arguments
1.1.1.1 Ajouter une adresse e-mail à la formule de lien hypertexte
Ici nous utilisons "mailto:" dans le cadre de la formule pour ajouter un destinataire de courrier électronique. Dans cet exemple, l'adresse e-mail du premier destinataire se trouve dans la cellule B2, nous devons donc ajouter "mailto :" et la référencer à la cellule B2.
“mailto:”&B2
1. Sélectionnez une cellule pour afficher le lien hypertexte. Dans ce cas, je sélectionne la cellule F2.
2. Entrez ensuite la formule suivante.
=HYPERLINK("mailto:"&B2)
Notes: Si vous appuyez sur la Entrer clé, un lien hypertexte sera créé comme indiqué dans la capture d'écran ci-dessous. Lorsque vous cliquez sur le lien, un e-mail Outlook sera créé et l'adresse e-mail du destinataire sera automatiquement renseignée dans le champ À.
L'adresse e-mail du destinataire est maintenant ajoutée à la formule Hyperlien. Veuillez continuer avec les étapes suivantes pour ajouter la ligne d'objet, le(s) destinataire(s) Cc et le corps du texte selon vos besoins.
1.1.1.2 Ajouter le(s) destinataire(s) Cc à la formule Hyperlink
Pour ajouter le(s) destinataire(s) Cc à la fonction Hyperlien, veuillez ajouter "?cc=" dans le cadre de la formule comme suit.
La formule dans la cellule F2 doit être la suivante :
=HYPERLINK("mailto:" & B2 & "?cc=" & C2)
1.1.1.3 Ajouter une ligne d'objet à la formule de lien hypertexte
Pour ajouter la ligne d'objet à la fonction Hyperlien, veuillez ajouter "&sujet=" dans le cadre de la formule comme suit.
La formule dans la cellule F2 devrait maintenant ressembler à ceci :
=HYPERLINK("mailto:" & B2 & "?cc=" & C2 & "&subject="& D2)
1.1.1.4 Ajouter un corps de texte avec des sauts de ligne à la formule de lien hypertexte
La dernière étape consiste à ajouter le corps du texte à la formule Hyperlink. Comme vous pouvez le voir dans l'exemple, deux lignes de texte dans E2 sont séparées par un saut de ligne et vous souhaitez conserver le saut de ligne dans le corps de l'e-mail. Outlook reconnaît-il le saut de ligne dans ce cas ? Vérifions-le.
Pour ajouter le corps du texte à la formule de lien hypertexte, vous devez ajouter "&corps=" dans le cadre de la formule comme suit.
La formule de la cellule F2 s'affiche désormais comme suit :
=HYPERLINK("mailto:" & B2 & "?cc=" & C2 & "&subject="& D2 & "&body="& E2)
Remarque : Si vous appuyez sur la Entrer touche et cliquez sur le lien. Vous pouvez voir dans le nouvel e-mail que le contenu du corps de l'e-mail est affiché sur la même ligne.
Pour afficher le corps de l'e-mail sur des lignes séparées, vous devez modifier le contenu de la cellule en ajoutant le code du caractère de retour chariot % 0A au texte où vous devez insérer un saut de ligne. Voir capture d'écran :
1.1.1.5 Spécifier le texte à afficher pour le lien hypertexte
Dans les étapes ci-dessus, nous avons terminé l'argument Link_location avec des champs d'e-mail. Ici, dans cette section, nous allons terminer le prochain argument [friendly_name].
Dans ce cas, je souhaite que la cellule de lien hypertexte affiche le texte sous la forme "Courriel à xx», où xx est le nom du destinataire en A2. Ainsi, la formule dans F2 doit être remplacée par :
=HYPERLINK("mailto:" & B2 & "?cc=" & C2 & "&subject="& D2 & "&body="& E2, "Email to "&A2)
Appuyez sur la touche Entrer clé pour obtenir le résultat.
Sélectionnez cette cellule de formule et faites-la glisser Poignée de remplissage automatique vers le bas pour créer d'autres hyperliens de messagerie. Voir capture d'écran :
1.1.2 Envoyer un e-mail depuis Excel avec la fonction Hyperlien
À l'exception de l'utilisation de la formule de lien hypertexte ci-dessus, vous pouvez créer manuellement un lien hypertexte d'e-mail avec le insérer Lien hypertexte fonction dans Excel. Cette section va vous montrer les étapes.
1. Cliquez avec le bouton droit sur un e-mail où vous souhaitez insérer un lien hypertexte, sélectionnez Lien dans le menu contextuel.
2. Dans le pop-up Insérer un lien hypertexte boîte de dialogue, vous devez configurer comme suit.
Lorsque vous cliquez sur le lien hypertexte, un e-mail Outlook sera créé avec les champs À, Objet et Corps spécifiés, comme indiqué dans la capture d'écran ci-dessous.
Florales:
1.2 Envoyer un e-mail à plusieurs destinataires dans des cellules avec un script VBA
Dans l'exemple ci-dessus, vous pouvez voir que plusieurs adresses e-mail sont affichées dans une cellule, séparées par des points-virgules. Si vous avez une liste d'adresses e-mail comme indiqué dans la capture d'écran ci-dessous et que vous souhaitez leur envoyer un e-mail ou un e-mail indépendant, le code VBA suivant peut vous rendre service.
1.2.1 Envoyer un e-mail à plusieurs destinataires dans des cellules avec un script VBA
1. Dans la feuille de calcul contenant toutes les adresses e-mail auxquelles vous souhaitez envoyer l'e-mail. appuyez sur la autre + F11 clés pour ouvrir le Microsoft Visual Basic pour applications fenêtre.
2. dans le Microsoft Visual Basic pour applications fenêtre, cliquez sur insérer > Module, puis collez le code suivant dans le Module (Code) fenêtre.
Code VBA : envoyer un e-mail à une liste d'adresses e-mail
Sub sendmultiple()
'updateby Extendoffice 20220802
Dim xOTApp As Object
Dim xMItem As Object
Dim xCell As Range
Dim xRg As Range
Dim xEmailAddr As String
Dim xTxt As String
On Error Resume Next
xTxt = ActiveWindow.RangeSelection.Address
Set xRg = Application.InputBox("Please select the addresses list:", "Kutools for Excel", xTxt, , , , , 8)
If xRg Is Nothing Then Exit Sub
Set xOTApp = CreateObject("Outlook.Application")
For Each xCell In xRg
If xCell.Value Like "*@*" Then
If xEmailAddr = "" Then
xEmailAddr = xCell.Value
Else
xEmailAddr = xEmailAddr & ";" & xCell.Value
End If
End If
Next
Set xMItem = xOTApp.CreateItem(0)
With xMItem
.To = xEmailAddr
.Subject = "Test"
.Body = "Dear " _
& vbNewLine & vbNewLine & _
"This is a test email " & _
"sending in Excel"
.Display
End With
End Sub
3. appuie sur le F5 clé pour exécuter le code et une Kutools for Excel boîte de dialogue apparaît. Sélectionnez la liste des adresses e-mail et cliquez sur OK.
Notes:
.Body = "Dear " _
& vbNewLine & vbNewLine & _
"This is a test email " & _
"sending in Excel"
Après avoir exécuté le code, toutes les adresses e-mail de la plage sélectionnée sont affichées dans le champ À de la fenêtre de message. Voir capture d'écran :
1.2.2 Envoyer séparément des e-mails à chaque destinataire répertorié dans les cellules avec le script VBA
Le code ci-dessus ajoute toutes les adresses e-mail de la plage sélectionnée au champ À de la fenêtre de message. Si vous souhaitez envoyer des e-mails à chaque adresse e-mail répertoriée dans les cellules séparément sans leur permettre de voir les adresses e-mail de l'autre, vous pouvez essayer le script VBA suivant.
1. Dans la feuille de calcul contenant toutes les adresses e-mail auxquelles vous souhaitez envoyer les e-mails. appuyez sur la autre + F11 clés de ouvrir la fenêtre Microsoft Visual Basic pour Applications.
2. dans le Microsoft Visual Basic pour applications fenêtre, cliquez sur insérer > Module, puis collez le code suivant dans la fenêtre Module (Code).
Code VBA : envoyez des e-mails à chaque adresse e-mail répertoriée dans les cellules séparément
Sub SendEmailToAddressInCells()
'Updated by Extendoffice 20220802
Dim xRg As Range
Dim xRgEach As Range
Dim xRgVal As String
Dim xAddress As String
Dim xOutApp As Outlook.Application
Dim xMailOut As Outlook.MailItem
On Error Resume Next
xAddress = ActiveWindow.RangeSelection.Address
Set xRg = Application.InputBox("Please select the addresses list", "KuTools For Excel", xAddress, , , , , 8)
If xRg Is Nothing Then Exit Sub
Application.ScreenUpdating = False
Set xOutApp = CreateObject("Outlook.Application")
Set xRg = xRg.SpecialCells(xlCellTypeConstants, xlTextValues)
For Each xRgEach In xRg
xRgVal = xRgEach.Value
If xRgVal Like "?*@?*.?*" Then
Set xMailOut = xOutApp.CreateItem(olMailItem)
With xMailOut
.To = xRgVal
.Subject = "Test"
.Body = "Dear " _
& vbNewLine & vbNewLine & _
"This is a test email " & _
"sending in Excel"
.Display
'.Send
End With
End If
Next
Set xMailOut = Nothing
Set xOutApp = Nothing
Application.ScreenUpdating = True
End Sub
3. Puis clique Outils > Les références. Dans le Références - VBAProject boîte de dialogue, recherchez et cochez Bibliothèque d'objets Microsoft Outlook 16.0 boîte, puis cliquez sur le OK Pour enregistrer les modifications.
4. appuie sur le F5 clé pour exécuter le code et une Kutools for Excel boîte de dialogue apparaît. Sélectionnez la liste des adresses e-mail et cliquez sur D'ACCORD.
Notes:
.Subject = "Test"
.Body = "Dear " _
& vbNewLine & vbNewLine & _
"This is a test email " & _
"sending in Excel"
Dans cet exemple, il y a six adresses e-mail dans la plage sélectionnée, donc six fenêtres de message Outlook seront créées automatiquement avec une adresse e-mail distincte répertoriée dans le champ À, comme indiqué dans la capture d'écran ci-dessous.
5. Enfin, cliquez sur Envoyer bouton pour envoyer les e-mails un par un.
2. Insérez des pièces jointes ou une signature Outlook dans les e-mails envoyés depuis Excel (avec des scripts VBA)
Cette section va vous montrer comment insérer des pièces jointes ou la signature par défaut d'Outlook dans les e-mails envoyés depuis Excel.
2.1 Insérer des pièces jointes dans les e-mails envoyés depuis Excel
Nous décrivons ici les différents cas d'insertion de pièces jointes, et vous pouvez choisir la méthode en fonction de vos besoins. Dans cette section, vous pouvez apprendre à (cliquez sur l'un des liens suivants pour accéder à la méthode correspondante) :
2.1.1 Envoyer un certain fichier par e-mail en pièce jointe
Vous pouvez appliquer le code VBA suivant pour envoyer par courrier électronique un ou plusieurs fichiers dans un dossier en tant que pièces jointes à partir d'Excel.
1. appuie sur le autre + F11 clés.
2. Dans l'ouverture Microsoft Visual Basic pour applications fenêtre, cliquez sur insérer > Module. Collez ensuite le code VBA suivant dans la fenêtre Module (Code).
Code VBA : envoyer par e-mail des fichiers dans un dossier en tant que pièces jointes à partir d'Excel
Sub EmailWithAttachments()
'Updated by Extendoffice 20220802
Dim xStrFile As String
Dim xFilePath As String
Dim xFileDlg As FileDialog
Dim xFileDlgItem As Variant
Dim xOutApp As Outlook.Application
Dim xMailOut As Outlook.MailItem
Application.ScreenUpdating = False
Set xOutApp = CreateObject("Outlook.Application")
Set xMailOut = xOutApp.CreateItem(olMailItem)
Set xFileDlg = Application.FileDialog(msoFileDialogFilePicker)
If xFileDlg.Show = -1 Then
With xMailOut
.BodyFormat = olFormatRichText
.To = "xxx@aaa.com"
.Subject = "test"
.HTMLBody = "test"
For Each xFileDlgItem In xFileDlg.SelectedItems
.Attachments.Add xFileDlgItem
Next xFileDlgItem
.Display
End With
End If
Set xMailOut = Nothing
Set xOutApp = Nothing
Application.ScreenUpdating = True
End Sub
Florales:
3. Puis clique Outils > Les références. Dans le Références - VBAProject boîte de dialogue, recherchez et cochez Bibliothèque d'objets Microsoft Outlook 16.0 boîte, puis cliquez sur le OK Pour enregistrer les modifications.
4. appuie sur le F5 pour exécuter le code, puis un Explorer fenêtre apparaît, veuillez sélectionner les fichiers que vous devez joindre à l'e-mail, puis cliquez sur OK.
Ensuite, une fenêtre de message apparaît. Vous pouvez voir que les fichiers sélectionnés sont affichés en tant que pièces jointes dans le champ Attaché.
2.1.2 Envoyer la feuille de calcul actuelle en pièce jointe
Si vous souhaitez envoyer par courrier électronique la feuille de calcul actuelle en tant que pièce jointe à partir d'Excel, vous pouvez appliquer le script VBA dans cette section.
1. appuie sur le autre + F11 clés.
2. Dans l'ouverture Microsoft Visual Basic pour applications fenêtre, cliquez sur insérer > Module. Collez ensuite le code VBA suivant dans le Module (Code) fenêtre.
Code VBA : envoyez la feuille de calcul actuelle en pièce jointe
Sub SendWorkSheet()
'Update by Extendoffice 20220802
Dim xFile As String
Dim xFormat As Long
Dim Wb As Workbook
Dim Wb2 As Workbook
Dim FilePath As String
Dim FileName As String
Dim OutlookApp As Object
Dim OutlookMail As Object
On Error Resume Next
Application.ScreenUpdating = False
Set Wb = Application.ActiveWorkbook
ActiveSheet.Copy
Set Wb2 = Application.ActiveWorkbook
Select Case Wb.FileFormat
Case xlOpenXMLWorkbook:
xFile = ".xlsx"
xFormat = xlOpenXMLWorkbook
Case xlOpenXMLWorkbookMacroEnabled:
If Wb2.HasVBProject Then
xFile = ".xlsm"
xFormat = xlOpenXMLWorkbookMacroEnabled
Else
xFile = ".xlsx"
xFormat = xlOpenXMLWorkbook
End If
Case Excel8:
xFile = ".xls"
xFormat = Excel8
Case xlExcel12:
xFile = ".xlsb"
xFormat = xlExcel12
End Select
FilePath = Environ$("temp") & "\"
FileName = Wb.Name & Format(Now, "dd-mmm-yy h-mm-ss")
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(0)
Wb2.SaveAs FilePath & FileName & xFile, FileFormat:=xFormat
With OutlookMail
.To = "xxx@aaa.com"
.CC = "Email Address"
.BCC = "Email Address"
.Subject = "kte features"
.Body = "Please check and read this document."
.Attachments.Add Wb2.FullName
.Display
'.Send
End With
Wb2.Close
Kill FilePath & FileName & xFile
Set OutlookMail = Nothing
Set OutlookApp = Nothing
Application.ScreenUpdating = True
End Sub
Notes:
3. appuie sur le F5 clé pour exécuter le code, la feuille de calcul en cours est enregistrée en tant que classeur Excel et insérée automatiquement dans une fenêtre de message en tant que pièce jointe. Voir capture d'écran :
Remarque : Le classeur joint qui contient uniquement la feuille de calcul en cours porte le même nom que le classeur d'origine. Et l'heure à laquelle vous exécutez le code est également ajoutée au nom du classeur.
2.1.3 Envoyer le classeur actuel par e-mail en pièce jointe
Après avoir appris le code VBA pour envoyer la feuille de calcul actuelle en pièce jointe à partir d'Excel, nous fournissons ici un autre script VBA pour vous aider à envoyer le classeur entier en pièce jointe. Veuillez procéder comme suit.
1. appuie sur le autre + F11 clés.
2. Dans l'ouverture Microsoft Visual Basic pour applications fenêtre, cliquez sur insérer > Module. Collez ensuite le code VBA suivant dans la fenêtre Module (Code).
Code VBA : envoyez par e-mail le classeur en cours en tant que pièce jointe à partir d'Excel
Sub SendWorkBook()
'Update by Extendoffice 20220802
Dim OutlookApp As Object
Dim OutlookMail As Object
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(0)
On Error Resume Next
With OutlookMail
.To = "xxx@aaa.com"
.CC = "Email Address"
.BCC = "Email Address"
.Subject = "kte feature"
.Body = "Hello, please check and read this document, thank you."
.Attachments.Add Application.ActiveWorkbook.FullName
.Display
'.Send
End With
Set OutlookMail = Nothing
Set OutlookApp = Nothing
End Sub
Notes:
3. appuie sur le F5 clé pour exécuter le code, puis le classeur en cours est automatiquement inséré dans une fenêtre de message en tant que pièce jointe. Voir capture d'écran :
2.1.4 Envoyer par e-mail l'intégralité du classeur sous forme de pièce jointe au format PDF
Pour la plupart des gens, ils ont tendance à enregistrer un classeur Excel sous forme de fichier PDF, puis à l'envoyer en pièce jointe à d'autres. Dans cette section, je vais vous montrer un moyen d'envoyer des e-mails directement à partir d'Excel avec le classeur ouvert actuel en tant que pièce jointe PDF sans avoir à enregistrer manuellement le classeur en tant que fichier PDF.
1. appuie sur le autre + F11 clés.
2. Dans l'ouverture Microsoft Visual Basic pour applications fenêtre, cliquez sur insérer > Module. Collez ensuite le code VBA suivant dans la fenêtre Module (Code).
Code VBA : envoyez par e-mail l'intégralité du classeur sous forme de pièce jointe au format PDF
Sub SendWorkBookAsPDF()
'Update 20220803
Dim Wb As Workbook
Dim FilePath As String
Dim FileName As String
Dim xOutApp As Object
Dim xOutMail As Object
On Error Resume Next
Application.ScreenUpdating = False
Set Wb = Application.ActiveWorkbook
FileName = Left(Wb.Name, (InStrRev(Wb.Name, ".", -1, vbTextCompare) - 1)) & Format(Now, "dd-mmm-yy h-mm-ss") & ".pdf"
FilePath = Environ$("temp") & "\" & FileName
Wb.ExportAsFixedFormat Type:=xlTypePDF, FileName:= _
FilePath, Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
False
Set xOutApp = CreateObject("Outlook.Application")
Set xOutMail = xOutApp.CreateItem(0)
With xOutMail
.To = "xxx@aaa.com"
.CC = "Email Address"
.BCC = "Email Address"
.Subject = "test"
.Body = "test"
.Attachments.Add FilePath
.Display 'or use .Send
End With
Kill FilePath
Set xOutMail = Nothing
Set xOutApp = Nothing
Application.ScreenUpdating = True
End Sub
Notes:
3. appuie sur le F5 clé pour exécuter le code. Ensuite, le classeur en cours est automatiquement inséré dans une nouvelle fenêtre de message en tant que pièce jointe au format PDF. Voir capture d'écran :
2.1.5 Envoyer la feuille de calcul actuelle sous forme de pièce jointe au format PDF
Par exemple, il existe un classeur nommé "Ventes mensuelles", et vous avez terminé un tableau de rapport de ventes dans une feuille de calcul nommée "rapport de ventes" et souhaitez envoyer cette feuille de calcul sous forme de fichier PDF à vos collègues. Le code VBA suivant peut vous rendre service.
1. appuie sur le autre + F11 clés.
2. Dans l'ouverture Microsoft Visual Basic pour applications fenêtre, cliquez sur insérer > Module. Collez ensuite le code VBA suivant dans la fenêtre Module (Code).
Code VBA : envoyez la feuille de calcul actuelle sous forme de pièce jointe au format PDF
Sub SendWorkSheetToPDF()
'Update by Extendoffice 20220803
Dim Wb As Workbook
Dim FileName As String
Dim OutlookApp As Object
Dim OutlookMail As Object
On Error Resume Next
Set Wb = Application.ActiveWorkbook
FileName = Wb.FullName
xIndex = VBA.InStrRev(FileName, ".")
If xIndex > 1 Then FileName = VBA.Left(FileName, xIndex - 1)
FileName = FileName & "_" + ActiveSheet.Name & ".pdf"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, FileName:=FileName
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(0)
With OutlookMail
.To = "xxx@aaa.com"
.CC = "Email Address"
.BCC = "Email Address"
.Subject = "test"
.Body = "test"
.Attachments.Add FileName
.Display
'.Send
End With
Kill FileName
Set OutlookMail = Nothing
Set OutlookApp = Nothing
End Sub
Notes:
3. appuie sur le F5 clé pour exécuter le code. Ensuite, la feuille de calcul en cours est automatiquement insérée dans une nouvelle fenêtre de message en tant que pièce jointe au format PDF. Voir capture d'écran :
2.2 Insérer la signature Outlook dans les e-mails envoyés depuis Excel
Prenons le cas ci-dessus comme exemple, vous appliquez le code VBA ci-dessus pour envoyer la feuille de calcul actuelle en tant que pièce jointe de fichier PDF à partir d'Excel, mais la signature Outlook ne peut pas être ajoutée à la fenêtre de message. Pour conserver la signature par défaut d'Outlook dans l'e-mail envoyé depuis Excel, la méthode suivante vous aidera.
Deux codes VBA sont répertoriés ci-dessous.
Code VBA 1 : Le code aide à conserver la signature Outlook.
Code VBA 2 : le code permet d'envoyer par e-mail la feuille de calcul actuelle sous forme de pièce jointe PDF.
Code VBA 1 : Conserver la signature Outlook
.HTMLBody = "Email body" & "
" & .HTMLBody
Code VBA 2 : envoyez la feuille de calcul actuelle par e-mail en pièce jointe PDF
Sub SendWorkSheetToPDF()
'Update by Extendoffice 20220803
Dim Wb As Workbook
Dim FileName As String
Dim OutlookApp As Object
Dim OutlookMail As Object
On Error Resume Next
Set Wb = Application.ActiveWorkbook
FileName = Wb.FullName
xIndex = VBA.InStrRev(FileName, ".")
If xIndex > 1 Then FileName = VBA.Left(FileName, xIndex - 1)
FileName = FileName & "_" + ActiveSheet.Name & ".pdf"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, FileName:=FileName
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(0)
With OutlookMail
.To = "xxx@aaa.com"
.CC = "Email Address"
.BCC = "Email Address"
.Subject = "test"
.Body = "test"
.Attachments.Add FileName
.Display
'.Send
End With
Kill FileName
Set OutlookMail = Nothing
Set OutlookApp = Nothing
End Sub
1. Normalement, vous devez appuyer sur la touche autre + F11 clés pour ouvrir le Microsoft Visual Basic pour applications fenêtre.
2. dans le Microsoft Visual Basic pour applications fenêtre, cliquez sur insérer > Module. Collez ensuite le code VBA 2 ci-dessus dans la fenêtre Module (Code).
3. Pour conserver la signature Outlook par défaut dans l'e-mail envoyé depuis Excel, vous devez modifier le code VBA 2 comme suit :
Voici le code complet après modification.
Sub SendWorkSheetToPDF()
'Update by Extendoffice 20220803
Dim Wb As Workbook
Dim FileName As String
Dim OutlookApp As Object
Dim OutlookMail As Object
On Error Resume Next
Set Wb = Application.ActiveWorkbook
FileName = Wb.FullName
xIndex = VBA.InStrRev(FileName, ".")
If xIndex > 1 Then FileName = VBA.Left(FileName, xIndex - 1)
FileName = FileName & "_" + ActiveSheet.Name & ".pdf"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, FileName:=FileName
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(0)
With OutlookMail
.Display
.To = "xxx@aaa.com"
.CC = "Email Address"
.BCC = "Email Address"
.Subject = "test"
.HTMLBody = "Email body" & "
" & .HTMLBody
.Attachments.Add FileName
'.Send
End With
Kill FileName
Set OutlookMail = Nothing
Set OutlookApp = Nothing
End Sub
4. appuie sur le F5 clé pour exécuter le code. Ensuite, vous obtiendrez une nouvelle fenêtre de message avec la feuille de calcul actuelle jointe sous forme de fichier PDF, tandis que la signature par défaut d'Outlook sera automatiquement insérée à la fin du corps de l'e-mail.
3. Envoyer automatiquement des e-mails depuis Excel lorsqu'une condition est remplie (avec des scripts VBA)
Dans les exemples ci-dessus, vous devez exécuter le code manuellement pour obtenir la livraison par e-mail. Si vous souhaitez déclencher le code automatiquement lorsqu'une certaine condition est remplie, comme lorsqu'une cellule atteint une certaine valeur, lorsque la valeur d'une cellule change, lorsqu'une date est atteinte, etc., l'e-mail sera envoyé automatiquement. Cette section répertorie les conditions que les utilisateurs d'Excel recherchaient souvent dans Google pour vous aider à envoyer automatiquement des e-mails à partir d'Excel lorsqu'une certaine condition est remplie.
3.1 Envoyer automatiquement un e-mail lorsqu'une cellule atteint une certaine valeur
Comme le montre la capture d'écran ci-dessous, supposons que vous ayez un tableau des ventes avec la cellule D6 contenant le total des ventes. Vous souhaitez envoyer automatiquement un e-mail à votre patron en fonction du total des ventes. Par exemple, créez ou envoyez un e-mail automatiquement lorsque le total des ventes dépasse 10000 10000, mais si le total des ventes est égal ou inférieur à XNUMX XNUMX, aucune action n'est entreprise.
1. Dans la feuille de calcul contenant le tableau des ventes, cliquez avec le bouton droit sur l'onglet de la feuille et cliquez sur Voir le code dans le menu contextuel.
2. Dans l'ouverture Microsoft Visual Basic pour applications fenêtre, collez le code VBA suivant dans la Feuille (Code) fenêtre.
Code VBA : envoyer automatiquement un e-mail lorsqu'une cellule atteint une certaine valeur dans Excel
Dim xRg As Range
'Update by Extendoffice 20200803
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Target.Cells.Count > 1 Then Exit Sub
Set xRg = Intersect(Range("D6"), Target)
If xRg Is Nothing Then Exit Sub
If IsNumeric(Target.Value) And Target.Value > 10000 Then
Call Mail_small_Text_Outlook
End If
End Sub
Sub Mail_small_Text_Outlook()
Dim xOutApp As Object
Dim xOutMail As Object
Dim xMailBody As String
Set xOutApp = CreateObject("Outlook.Application")
Set xOutMail = xOutApp.CreateItem(0)
xMailBody = "Hi boss" & vbNewLine & vbNewLine & _
"Total sales of over $10,000 in January: " & Range("D6")
On Error Resume Next
With xOutMail
.To = "xxx@aaa.com"
.CC = "Email address"
.BCC = "Email address"
.Subject = "test"
.Body = xMailBody
.Display 'or use .Send
End With
On Error GoTo 0
Set xOutMail = Nothing
Set xOutApp = Nothing
End Sub
Private Sub Worksheet_Calculate()
Dim xI As Integer
Dim xRg As Range
Set xRg = Range("D6")
On Error GoTo Err01
xI = Int(xRg.Value)
If xI > 10000 Then
Call Mail_small_Text_Outlook
End If
Err01:
End Sub
Florales:
xMailBody = "Hi boss" & vbNewLine & vbNewLine & _
"Total sales of over $10,000 in January: " & Range("D6")
À partir de maintenant, lorsque la valeur de la cellule D6 dépasse 10000, un e-mail sera créé comme indiqué dans la capture d'écran ci-dessous.
3.2 Envoyer automatiquement un e-mail lorsqu'une valeur de cellule change
Comme illustré dans la capture d'écran ci-dessous, supposons que vous receviez un classeur contenant les ventes mensuelles dans différentes feuilles de calcul et le total des ventes dans une feuille de calcul. Vous devez vérifier le total des ventes et si le total des ventes est modifié, renvoyer le classeur à l'expéditeur et informer l'expéditeur que la cellule a été modifiée.
1. Dans la feuille de calcul contenant le tableau des ventes, cliquez avec le bouton droit sur l'onglet de la feuille et cliquez sur Voir le code dans le menu contextuel.
2. Dans l'ouverture Microsoft Visual Basic pour applications fenêtre, collez le code VBA suivant dans la fenêtre Feuille (Code).
Code VBA : envoyer automatiquement un e-mail lorsqu'une valeur de cellule spécifiée change
Private Sub Worksheet_Change(ByVal Target As Range)
'Updated by Extendoffice 20220803
Dim xRgSel As Range
Dim xOutApp As Object
Dim xMailItem As Object
Dim xMailBody As String
Dim xBoolean As Boolean
Dim xItsRG As Range
Dim xDDs As Range
Dim xDs As Range
On Error Resume Next
Application.ScreenUpdating = False
Application.DisplayAlerts = False
xBoolean = False
Set xRg = Range("B14")
Set xItsRG = Intersect(Target, xRg)
Set xDDs = Intersect(Target.DirectDependents, xRg)
Set xDs = Intersect(Target.Dependents, xRg)
If Not (xItsRG Is Nothing) Then
Set xRgSel = xItsRG
xBoolean = True
ElseIf Not (xDDs Is Nothing) Then
Set xRgSel = xDDs
xBoolean = True
ElseIf Not (xDs Is Nothing) Then
Set xRgSel = xDs
xBoolean = True
End If
ActiveWorkbook.Save
If xBoolean Then
Debug.Print xRgSel.Address
Set xOutApp = CreateObject("Outlook.Application")
Set xMailItem = xOutApp.CreateItem(0)
xMailBody = "The cell " & xRgSel.Address(False, False) & _
" in the worksheet '" & Me.Name & "' were modified on " & _
Format$(Now, "mm/dd/yyyy") & " at " & Format$(Now, "hh:mm:ss") & _
" by " & Environ$("username") & "."
With xMailItem
.To = "xxx@aaa.com"
.CC = "Email address"
.BCC = "Email address"
.Subject = "Worksheet modified"
.Body = xMailBody
.Attachments.Add (ThisWorkbook.FullName)
.Display
End With
Set xRgSel = Nothing
Set xOutApp = Nothing
Set xMailItem = Nothing
End If
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
Florales: Dans le code,
À partir de maintenant, lorsque la valeur de la cellule B14 changera, un message Outlook sera créé automatiquement, comme indiqué dans la capture d'écran ci-dessous.
3.3 Envoyer automatiquement un e-mail lorsqu'un classeur est enregistré
Si vous avez un classeur qui doit être partagé avec d'autres après modification, vous devez normalement enregistrer le classeur, lancer le client de messagerie, créer un nouvel e-mail avec ce classeur en pièce jointe, composer les champs correspondants puis envoyer l'e-mail. Cette section vous montrera une méthode pour créer un e-mail automatiquement à chaque fois que vous enregistrez le classeur. Veuillez procéder comme suit.
1. appuie sur le autre + F11 clés pour ouvrir le Microsoft Visual Basic pour applications fenêtre.
2. Dans cette fenêtre, double-cliquez Ce classeur dans le Projet volet, puis collez le code VBA suivant dans le Ce classeur (code) fenêtre.
Code VBA : envoyer automatiquement un e-mail lorsqu'un classeur est enregistré
Private Sub Workbook_AfterSave(ByVal Success As Boolean)
'Updated by Extendoffice 20220804
Dim xOutApp As Object
Dim xMailItem As Object
Dim xName As String
On Error Resume Next
Set xOutApp = CreateObject("Outlook.Application")
Set xMailItem = xOutApp.CreateItem(0)
xName = ActiveWorkbook.FullName
With xMailItem
.To = "xxx@aaa.com"
.CC = "Email address"
.BCC = "Email address"
.Subject = "The workbook has been updated"
.Body = "Hi," & Chr(13) & Chr(13) & "File is now updated."
.Attachments.Add xName
.Display
'.send
End With
Set xMailItem = Nothing
Set xOutApp = Nothing
End Sub
Florales: Dans le code,
3. A partir de maintenant, lors de l'enregistrement du classeur en appuyant sur la touche Ctrl + S touches ou en cliquant sur le Enregistré bouton, un e-mail Outlook sera créé automatiquement. Vous pouvez voir que le classeur actuel est joint en tant que pièce jointe et que les champs sont remplis avec le contenu spécifié. Voir capture d'écran :
Astuces: Si vous utilisez fréquemment ce classeur, nous vous recommandons ici de l'enregistrer en tant que Cahier de travail Excel avec macro-activé pour enregistrer le script VBA pour une utilisation future. Les étapes sont les suivantes.
3.4 Envoyer automatiquement un e-mail à une heure précise
Supposons que vous deviez envoyer un e-mail avec un classeur d'affectation de tâches à quelqu'un tous les vendredis matin à 9h, et que vous souhaitez le faire automatiquement dans Excel sans avoir à utiliser manuellement le client de messagerie. Cette section vous montrera la méthode pour y parvenir.
1. appuie sur le autre + F11 clés pour ouvrir le Microsoft Visual Basic pour applications fenêtre.
2. dans le Microsoft Visual Basic pour applications fenêtre, cliquez sur insérer > Module. Collez ensuite le code VBA suivant dans la fenêtre Module.
Code VBA1 : Envoyez par e-mail le classeur actuel en pièce jointe à partir d'Excel
Sub Timer()
If Weekday(Date) = vbFriday Then
SendWorkBook
Application.OnTime TimeValue("09:00:00"), "Timer"
Else
Application.OnTime TimeValue("09:00:00"), "Timer"
End If
End Sub
Sub SendWorkBook()
'Update by Extendoffice 20220802
Dim OutlookApp As Object
Dim OutlookMail As Object
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(0)
On Error Resume Next
With OutlookMail
.To = "xxx@aaa.com"
.CC = "Email Address"
.BCC = "Email Address"
.Subject = "kte feature"
.Body = "Hello, please check and read this document, thank you."
.Attachments.Add Application.ActiveWorkbook.FullName
.Display
'.Send
End With
Set OutlookMail = Nothing
Set OutlookApp = Nothing
End Sub
3. Dans cette fenêtre, double-cliquez Ce classeur dans le Projet volet, puis collez le code VBA suivant dans le Ce classeur (code) fenêtre.
Code VBA 2 : Envoyer automatiquement un e-mail à une heure précise
Private Sub Workbook_Open()
Application.OnTime TimeValue("09:00:00"), "Timer"
End Sub
Florales:
4. Enregistrez les codes, puis enregistrez le classeur en tant que classeur Excel prenant en charge les macros comme suit.
5. Ouvrez votre classeur de macros enregistré, puis un e-mail sera créé ou envoyé automatiquement lorsque le jour et l'heure arriveront.
4. Sujets supplémentaires
Cette section rassemble d'autres sujets que vous pouvez rencontrer lors de l'envoi d'e-mails à partir d'Excel.
4.1 Envoyer par e-mail une plage de cellules à partir d'Excel (avec le script VBA)
Supposons qu'il existe un tableau des ventes mensuelles dans une feuille de calcul Excel, comme indiqué dans la capture d'écran ci-dessous, et que vous deviez envoyer ce tableau des ventes mensuelles à d'autres en tant que contenu du corps d'un e-mail ou en pièce jointe directement. Nous vous proposons ici deux méthodes pour y parvenir.
4.1.1 Envoyer une plage par e-mail dans le cadre du contenu du corps à partir d'Excel
Vous pouvez exécuter le code VBA suivant pour envoyer une plage de cellules dans le cadre du contenu du corps de l'e-mail à partir d'Excel
1. appuie sur le autre + F11 clés pour ouvrir le Microsoft Visual Basic pour applications fenêtre.
2. dans le Microsoft Visual Basic pour applications fenêtre, cliquez sur Outils > Références . Et puis vérifiez le Bibliothèque d'objets Microsoft Outlook 16.0 boîte et cliquez OK dans le Références - VBAProject boite de dialogue.
3. Cliquez insérer > Module, puis collez le code VBA suivant dans le Module (Code) fenêtre.
Code VBA : envoyer une plage de cellules dans le cadre du contenu du corps de l'e-mail à partir d'Excel
Sub SendARangeofCells()
'Updated by Extendoffice 20220809
Dim xRg As Range
Dim I, J As Long
Dim xAddress As String
Dim xMailOut As Object
Dim xOutApp As Object
On Error Resume Next
Set xOutApp = CreateObject("Outlook.Application")
Set xMailOut = xOutApp.CreateItem(olMailItem)
xAddress = ActiveWindow.RangeSelection.Address
Set xRg = Application.InputBox("Please select range you need to paste into email body", "KuTools For Excel", xAddress, , , , , 8)
If xRg Is Nothing Then Exit Sub
Application.ScreenUpdating = False
Set xOutApp = CreateObject("Outlook.Application")
Set xMailOut = xOutApp.CreateItem(olMailItem)
With xMailOut
.Subject = "test"
.To = "xxx@aaa.com"
.CC = "Email address"
.BCC = "Email address"
.HTMLBody = RangetoHTML(xRg)
.Display
'.Send
End With
Set xMailOut = Nothing
Set xOutApp = Nothing
Application.ScreenUpdating = True
End Sub
' The following VBA script is cited from this page:
' https://stackoverflow.com/questions/18663127/paste-excel-range-in-outlook
Function RangetoHTML(rng As Range)
' By Ron de Bruin.
Dim fso As Object
Dim ts As Object
Dim TempFile As String
Dim TempWB As Workbook
TempFile = Environ$("temp") & "/" & Format(Now, "dd-mm-yy h-mm-ss") & ".htm"
'Copy the range and create a new workbook to past the data in
rng.Copy
Set TempWB = Workbooks.Add(1)
With TempWB.Sheets(1)
.Cells(1).PasteSpecial Paste:=8
.Cells(1).PasteSpecial xlPasteValues, , False, False
.Cells(1).PasteSpecial xlPasteFormats, , False, False
.Cells(1).Select
Application.CutCopyMode = False
On Error Resume Next
.DrawingObjects.Visible = True
.DrawingObjects.Delete
On Error GoTo 0
End With
'Publish the sheet to a htm file
With TempWB.PublishObjects.Add( _
SourceType:=xlSourceRange, _
Filename:=TempFile, _
Sheet:=TempWB.Sheets(1).Name, _
Source:=TempWB.Sheets(1).UsedRange.Address, _
HtmlType:=xlHtmlStatic)
.Publish (True)
End With
'Read all data from the htm file into RangetoHTML
Set fso = CreateObject("Scripting.FileSystemObject")
Set ts = fso.GetFile(TempFile).OpenAsTextStream(1, -2)
RangetoHTML = ts.ReadAll
ts.Close
RangetoHTML = Replace(RangetoHTML, "align=center x:publishsource=", _
"align=left x:publishsource=")
'Close TempWB
TempWB.Close savechanges:=False
'Delete the htm file we used in this function
Kill TempFile
Set ts = Nothing
Set fso = Nothing
Set TempWB = Nothing
End Function
Florales: Dans le code,
4. appuie sur le F5 clé pour exécuter le code. Dans le pop up Kutools for Excel boîte de dialogue, sélectionnez la plage de cellules que vous devez envoyer dans le cadre du contenu du corps d'un e-mail, puis cliquez sur OK. Voir la capture d'écran:
Ensuite, un e-mail Outlook sera créé automatiquement. Vous pouvez voir que la plage que vous avez sélectionnée dans la feuille de calcul est insérée dans le corps de l'e-mail. Voir capture d'écran :
4.1.2 Envoyer une plage par e-mail en pièce jointe à partir d'Excel
Si vous devez envoyer par e-mail une plage de cellules dans une feuille de calcul en tant que pièce jointe à partir d'Excel. Vous pouvez essayer le code VBA suivant.
1. appuie sur le autre + F11 clés.
2. Dans l'ouverture Microsoft Visual Basic pour applications fenêtre, cliquez sur insérer > Module. Collez ensuite le code VBA suivant dans le Module (Code) fenêtre.
Code VBA : envoyez une plage par e-mail en pièce jointe à partir d'Excel
Sub SendRange()
'Update 20220809
Dim xFile As String
Dim xFormat As Long
Dim Wb As Workbook
Dim Wb2 As Workbook
Dim Ws As Worksheet
Dim FilePath As String
Dim FileName As String
Dim OutlookApp As Object
Dim OutlookMail As Object
Dim WorkRng As Range
xTitleId = "KutoolsforExcel"
Set WorkRng = Application.Selection
Set WorkRng = Application.InputBox("Range", xTitleId, WorkRng.Address, Type:=8)
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Set Wb = Application.ActiveWorkbook
Wb.Worksheets.Add
Set Ws = Application.ActiveSheet
WorkRng.Copy Ws.Cells(1, 1)
Ws.Copy
Set Wb2 = Application.ActiveWorkbook
Select Case Wb.FileFormat
Case xlOpenXMLWorkbook:
xFile = ".xlsx"
xFormat = xlOpenXMLWorkbook
Case xlOpenXMLWorkbookMacroEnabled:
If Wb2.HasVBProject Then
xFile = ".xlsm"
xFormat = xlOpenXMLWorkbookMacroEnabled
Else
xFile = ".xlsx"
xFormat = xlOpenXMLWorkbook
End If
Case Excel8:
xFile = ".xls"
xFormat = Excel8
Case xlExcel12:
xFile = ".xlsb"
xFormat = xlExcel12
End Select
FilePath = Environ$("temp") & "\"
FileName = Wb.Name & Format(Now, "dd-mmm-yy h-mm-ss")
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(0)
Wb2.SaveAs FilePath & FileName & xFile, FileFormat:=xFormat
With OutlookMail
.To = "xxx@aaa.com"
.CC = "Email address"
.BCC = "Email address"
.Subject = "Monthly sales for 2021"
.Body = "Hello, please check and read this document. "
.Attachments.Add Wb2.FullName
.Display
'.Send
End With
Wb2.Close
Kill FilePath & FileName & xFile
Set OutlookMail = Nothing
Set OutlookApp = Nothing
Ws.Delete
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
Florales:
3. appuie sur le F5 clé pour exécuter le code. Dans le pop up Kutools for Excel boîte de dialogue, sélectionnez la plage de cellules que vous devez envoyer en pièce jointe dans un e-mail, puis cliquez sur OK. Voir la capture d'écran:
Ensuite, un e-mail Outlook sera créé automatiquement. Et la plage de cellules que vous avez sélectionnée dans la feuille de calcul est enregistrée en tant que classeur Excel et jointe dans la fenêtre Message. Voir capture d'écran :
4.2 Envoyer des e-mails lorsqu'un bouton est cliqué dans Excel
Si vous devez cliquer sur un bouton de commande pour déclencher une macro pour envoyer un e-mail à partir d'Excel, par exemple, envoyez le classeur actuel en tant que pièce jointe à d'autres en cliquant sur un bouton de commande dans la feuille de calcul. Vous pouvez suivre les étapes suivantes pour le faire.
1. Cliquez Développeur > insérer > Bouton de commande (contrôle ActiveX). Dessinez ensuite un bouton de commande dans la feuille de calcul.
Astuces: Si vous avez déjà un bouton de commande, ignorez cette étape.
2. appuie sur le autre + F11 clés pour ouvrir le Microsoft Visual Basic pour applications la fenêtre. Dans la fenêtre, cliquez sur insérer > Mode, puis collez le code VBA (le code utilisé pour envoyer par courrier électronique le classeur actuel en tant que pièce jointe à partir d'Excel) dans la fenêtre Module (Code).
Cliquez ici pour obtenir le code.
Notes: Ici, le nom de la macro que vous avez créée à l'étape 2 est Envoyer le classeur.
3. appuie sur le autre + Q touches pour fermer le Microsoft Visual Basic pour applications fenêtre.
4. Vous devez maintenant affecter la macro au bouton de commande. Faites un clic droit sur le bouton de commande, sélectionnez Voir le code dans le menu contextuel.
5. Puis le Microsoft Visual Basic pour applications fenêtre apparaît, vous pouvez voir que les deux lignes suivantes sont répertoriées dans le Feuille (Code) fenêtre.
Private Sub CommandButton1_Click()
End Sub
6. Entrez le nom de la macro existante dans la sous-procédure du bouton de commande.
7. appuie sur le autre + Q touches pour fermer le Éditeur Visual BasicEt cliquez Développeur > Mode de conception pour désactiver le mode conception.
Vous pouvez maintenant cliquer sur le bouton de commande pour envoyer un e-mail avec le classeur actuel en pièce jointe dans l'e-mail.
4.3 Envoyer des e-mails à partir d'un compte de messagerie spécifié
Normalement, lors du lancement d'un e-mail à partir d'Excel avec le code VBA, le compte de messagerie de l'expéditeur est le compte par défaut dans Outlook. Supposons que vous ayez configuré plusieurs comptes de messagerie dans votre Outlook et que vous souhaitiez utiliser un certain compte pour envoyer les e-mails depuis Excel au lieu d'utiliser le compte par défaut. Le code VBA suivant peut vous aider.
Les codes suivants sont nécessaires dans ce cas.
Code VBA 1 :
Dim OutlookMail As Outlook.MailItem
Code VBA 2 :
For Each xAccount In OutlookApp.Session.Accounts
If VBA.LCase(xAccount.SmtpAddress) = VBA.LCase("zxm@addin99.com") Then 'Specify your email account here
OutlookMail.SendUsingAccount = xAccount
End If
Next
Comment utiliser le code VBA ci-dessus ?
Dans cet exemple, nous allons spécifier un certain compte de messagerie pour envoyer le classeur actuel en pièce jointe à partir d'Excel. Veuillez procéder comme suit.
1. appuie sur le autre + F11 clés. Dans le Microsoft Visual Basic pour applications fenêtre, cliquez sur Outils > Références . Et puis vérifiez le Bibliothèque d'objets Microsoft Outlook 16.0 boîte et cliquez OK dans le Références - VBAProject boite de dialogue.
2. Cliquez insérer > Module. Collez ensuite le code VBA suivant dans le Module (Code) fenêtre.
Code VBA : envoyez le classeur en cours sous forme de pièce jointe à partir d'Excel via un compte Outlook spécifié
Sub SendWorkBook()
'Update by Extendoffice 20220809
Dim OutlookApp As Object
Dim OutlookMail As Outlook.MailItem 'important! Here can’t be declared as Object
Dim xAccount As Account
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(olMailItem)
On Error Resume Next
'The following lines helps to specify a certian email account
For Each xAccount In OutlookApp.Session.Accounts
If VBA.LCase(xAccount.SmtpAddress) = VBA.LCase("zxm@addin99.com") Then 'Specify your email account here
OutlookMail.SendUsingAccount = xAccount
End If
Next
'End
With OutlookMail
.To = "xxx@aaa.com"
.CC = "Email Address"
.BCC = "Email Address"
.Subject = "kte feature"
.Body = "Hello, please check and read this document, thank you."
.Attachments.Add Application.ActiveWorkbook.FullName
.Display
'.Send
End With
Set OutlookMail = Nothing
Set OutlookApp = Nothing
End Sub
3. appuie sur le F5 clé pour exécuter le code. Ensuite, un message électronique Outlook apparaît, vous pouvez voir que le À partir de champ est rempli avec le compte de messagerie que vous avez spécifié dans le code.
4.4 Envoyer un email lorsqu'une date est atteinte
Si vous devez envoyer un e-mail en fonction d'une date d'échéance spécifique, par exemple, comme indiqué dans la capture d'écran ci-dessous, il existe un tableau de projet, lorsque la date d'échéance dans la plage E2:E7 est égale ou inférieure à 7 jours à compter d'aujourd'hui (en supposant que la date actuelle est le 2022/8/4), un e-mail sera envoyé automatiquement aux chefs de projet correspondants et les avertira que le projet est sur le point d'expirer.
1. Dans la feuille de calcul contient la table de projet, cliquez avec le bouton droit sur l'onglet de la feuille et cliquez sur Voir le code dans le menu contextuel.
2. Dans l'ouverture Microsoft Visual Basic pour applications fenêtre, collez le code VBA suivant dans la Feuille (Code) fenêtre.
Code VBA : envoyer automatiquement un e-mail lorsqu'une date d'échéance est respectée
Public Sub SendMailDueDate()
'Updated by Extendoffice 20220804
Dim xRgDate As Range
Dim xRgSend As Range
Dim xRgText As Range
Dim xRgDone As Range
Dim xOutApp As Object
Dim xMailItem As Object
Dim xLastRow As Long
Dim vbCrLf As String
Dim xMailBody As String
Dim xRgDateVal As String
Dim xRgSendVal As String
Dim xMailSubject As String
Dim i As Long
On Error Resume Next
Set xRgDate = Range("E2:E7") 'Please reference the due date column range
If xRgDate Is Nothing Then Exit Sub
Set xRgSend = Range("C2:C7") 'Please reference the email addresses column range
If xRgSend Is Nothing Then Exit Sub
Set xRgText = Range("D2:D7") 'Please reference the remark column range (the remark used to notify project leaders of the expiration of the project)
If xRgText Is Nothing Then Exit Sub
xLastRow = xRgDate.Rows.Count
Set xRgDate = xRgDate(1)
Set xRgSend = xRgSend(1)
Set xRgText = xRgText(1)
Set xOutApp = CreateObject("Outlook.Application")
For i = 1 To xLastRow
xRgDateVal = ""
xRgDateVal = xRgDate.Offset(i - 1).Value
If xRgDateVal <> "" Then
If CDate(xRgDateVal) - Date <= 7 And CDate(xRgDateVal) - Date > 0 Then
xRgSendVal = xRgSend.Offset(i - 1).Value
xMailSubject = xRgText.Offset(i - 1).Value & " on " & xRgDateVal
vbCrLf = "
"
xMailBody = ""
xMailBody = xMailBody & "Dear " & xRgSendVal & vbCrLf
xMailBody = xMailBody & "Remark : " & xRgText.Offset(i - 1).Value & vbCrLf
xMailBody = xMailBody & ""
Set xMailItem = xOutApp.CreateItem(0)
With xMailItem
.Subject = xMailSubject
.To = xRgSendVal
.CC = "Email address"
.BCC = "Email address"
.HTMLBody = xMailBody
.Display
'.Send
End With
Set xMailItem = Nothing
End If
End If
Next
Set xOutApp = Nothing
End Sub
Florales: Dans le code,
3. appuie sur le F5 clé pour exécuter le code. Ensuite, si la date d'expiration correspond aux conditions, l'e-mail correspondant sera créé. Dans ce cas, deux e-mails seront créés comme indiqué dans la capture d'écran ci-dessous.
5. Un outil pratique pour vous aider à envoyer facilement des e-mails depuis Excel
Si vous êtes un débutant en VBA, les méthodes ci-dessus peuvent ne pas être faciles à gérer. Ici, nous recommandons Kutools for Excel's Envoyer des emails fonctionnalité, avec cette fonctionnalité, vous pouvez facilement envoyer des e-mails à partir d'Excel en quelques clics seulement. Veuillez procéder comme suit.
Avant d'appliquer Kutools for Excel, S'il vous plaît téléchargez et installez-le d'abord.
5.1 Créez facilement une liste de diffusion qui inclut les champs d'e-mail dont vous avez besoin
Avant d'appliquer la fonctionnalité Envoyer des e-mails, vous devez créer une liste de diffusion contenant les champs d'e-mail dont vous avez besoin. Ici, la fonction Créer une liste de diffusion peut vous aider.
1. Cliquez Kutools Plus > Créer une liste de diffusion.
2. Dans l'ouverture Créer une liste de diffusion fenêtre, vous devez configurer comme suit.
Ensuite, un exemple de tableau de liste de diffusion est créé, comme indiqué dans la capture d'écran ci-dessous.
3. Vous devez maintenant remplacer les données d'origine de l'échantillon par vos propres données de terrain.
Vous avez maintenant créé une table de liste de diffusion. Veuillez continuer à appliquer le Envoyer des emails fonctionnalité pour envoyer des e-mails à partir d'Excel en fonction des champs que vous avez créés.
Si vous souhaitez bénéficier d'un essai gratuit (30 jours) de cet utilitaire, veuillez cliquer pour le télécharger, puis passez à appliquer l'opération selon les étapes ci-dessus.
5.2 Envoyez facilement des e-mails, y compris les champs que vous avez créés dans la liste de diffusion
Après avoir créé la liste de diffusion (cliquez pour savoir comment) qui contient les champs dont vous pourriez avoir besoin dans vos e-mails, vous pouvez désormais envoyer des e-mails depuis Excel avec ces champs.
1. Sélectionnez la liste de diffusion entière, cliquez sur Kutools Plus > Envoyer des emails.
2. dans le Envoyer des emails boîte de dialogue, veuillez effectuer la configuration suivante.
3. Puis un Kutools for Excel boîte de dialogue apparaît pour vous dire combien d'e-mails sont envoyés, cliquez sur le OK bouton pour fermer cette boîte de dialogue.
Astuces: Vous pouvez aller au Éléments envoyés dossier dans votre Outlook pour vérifier les e-mails que vous avez envoyés.
5.3 Envoyez facilement des e-mails avec un corps HTML (y compris un lien hypertexte, une image, etc.)
Cette fonctionnalité d'envoi d'e-mails vous permet de créer un e-mail html, qui comprend un lien hypertexte, une image, différentes tailles de police et couleurs de police, etc.
Après créer une liste de diffusion qui inclut les champs d'e-mail dont vous avez besoin,
Lorsque vous configurer la boîte de dialogue Envoyer des e-mails, vous pouvez enrichir le contenu du corps en utilisant les options de la barre d'outils.
Voir la capture d'écran ci-dessous:
5.4 Insérez facilement la signature par défaut d'Outlook lors de l'envoi d'e-mails
Dans la méthode ci-dessus, nous avons démontré un code VBA pour vous aider à envoyer des e-mails avec la signature par défaut d'Outlook. Ici, avec la fonctionnalité Envoyer des e-mails, il vous suffit de cocher une option, puis la signature par défaut d'Outlook sera insérée dans les e-mails que vous avez envoyés depuis Excel.
Après créer une liste de diffusion qui inclut les champs d'e-mail dont vous avez besoin,
Quand configurer la boîte de dialogue Envoyer des e-mails, vous devez cliquer Options > Utiliser les paramètres de signature d'Outlook.
Notes: Veuillez vous assurer qu'une coche s'affiche avant l'option Utiliser les paramètres de signature d'Outlook.
Lorsque les destinataires reçoivent l'e-mail, ils peuvent voir la signature par défaut d'Outlook affichée à la fin du corps de l'e-mail.
5.5 Envoyer facilement des e-mails à partir d'un compte de messagerie spécifié
Pour utiliser un certain compte de messagerie pour envoyer les e-mails à partir d'Excel au lieu d'utiliser le compte par défaut, la fonction Envoyer des e-mails peut également vous aider à le faire facilement.
Après créer une liste de diffusion qui inclut les champs d'e-mail dont vous avez besoin,
Quand configurer la boîte de dialogue Envoyer des e-mails, vous devez cliquer Options > Envoyé de, puis cliquez sur le compte de messagerie à partir duquel vous devez envoyer des e-mails.
Notes: Après avoir sélectionné le compte de messagerie, une coche s'affichera devant celui-ci.
Cliquez ici pour en savoir plus sur cette fonctionnalité d'envoi d'e-mails.
Si vous souhaitez bénéficier d'un essai gratuit (30 jours) de cet utilitaire, veuillez cliquer pour le télécharger, puis passez à appliquer l'opération selon les étapes ci-dessus.
En conclusion, envoyer des emails depuis Excel est assez utile dans notre travail quotidien. Cet article couvre des sujets plus complets sur l'envoi d'e-mails à partir d'Excel, s'il existe d'autres sujets ou des solutions plus simples, veuillez laisser un commentaire pour me le faire savoir.
Meilleurs outils de productivité bureautique
Améliorez vos compétences Excel avec Kutools for Excel et faites l'expérience d'une efficacité comme jamais auparavant. Kutools for Excel offre plus de 300 fonctionnalités avancées pour augmenter la productivité et gagner du temps. Cliquez ici pour obtenir la fonctionnalité dont vous avez le plus besoin...
Office Tab apporte une interface à onglets à Office et facilite grandement votre travail
- Activer l'édition et la lecture par onglets dans Word, Excel, PowerPoint, Publisher, Access, Visio et Project.
- Ouvrez et créez plusieurs documents dans de nouveaux onglets de la même fenêtre, plutôt que dans de nouvelles fenêtres.
- Augmente votre productivité de 50% et réduit des centaines de clics de souris chaque jour!