2017-06-08 1 views
2

J'essaie d'envoyer un e-mail personnalisé à plus d'une centaine de destinataires.Envoi d'e-mails personnalisés à plusieurs destinataires via la macro

Je suis en mesure d'envoyer mon email à une personne maintenant mais je n'ai aucune idée de comment le boucler pour plusieurs destinataires et pour changer le contenu à l'intérieur.

je quelque chose comme ça et ça marche, mais je ne sais pas comment procéder

With OutlookMailItem 
.To = Range("O2").Value 
.Subject = "Promotion campaign" 
.Body = "Dear Sir/Madam," & vbNewLine & vbNewLine & _ 
     "You are eligible for & Range("A2").Value & _ 
     "Please follow the instruction below to redeem your gift" 
+0

N'envoyez pas de tels spams à quiconque. – Rahul

+0

https://stackoverflow.com/a/38303646/4539709 – 0m3r

Répondre

2

Nice place à la recherche d'une solution dans ce genre de questions est: https://www.rondebruin.nl/win/s1/outlook/amail8.htm

Ci-dessous vous » Je vais trouver le code qui est ce que vous voulez atteindre, je pense.

Hypothèses:

  • Liste des adresses e-mails commence à partir de A1
  • Liste, par exemple, les noms, commence de B1. Si vous voulez faire quelques changements plus simplement modifier .Body
  • Liste des sujets commence à partir de C1

Pour l'instant j'utiliser la méthode .Display qui vient de montrer tous les emails, mais si vous changez à .Send il envoie automatiquement ces mails sans les montrer

Sub Send_Row_Or_Rows_Attachment_1() 
'Working in 2000-2016 
'For Tips see: http://www.rondebruin.nl/win/winmail/Outlook/tips.htm 
    Dim OutApp As Object 
    Dim OutMail As Object 
    Set OutApp = CreateObject("Outlook.Application") 
    Dim intHowManyRows As Integer

With Application .ScreenUpdating = False End With intHowManyRows = Application.Range("A1").CurrentRegion.Rows.Count For r = 1 To intHowManyRows 'Save, Mail, Close and Delete the file Set OutMail = OutApp.CreateItem(0) With OutMail .To = Cells(r, 1).Value .Subject = Cells(r, 3).Value '.Attachments.Add FullName -> If you want to add attachments .Body = "Hi there" & vbNewLine & vbNewLine & "How are you " & Cells(r, 2) .Display 'Or use Send End With Next r Set OutMail = Nothing Set OutApp = Nothing Application.ScreenUpdating = True End Sub
+0

OMG cela fonctionne comme une merveille, merci beaucoup! Puis-je demander ce que fait "intHowManyRows = Application.Range (" A1 "). CurrentRegion.Rows.Count" do? Cela signifie-t-il qu'il trouvera la dernière ligne qui a une valeur? – yeocs93

+1

Oui :) C'est la même chose que définir le curseur sur A1 et appuyer sur CTRL + A - la table entière est sélectionnée - et après cela, je compte combien de lignes nous avons dans cette table. C'est pourquoi lorsque vous y collez plus d'éléments, le nombre de messages envoyés dynamiquement sera compté :) ps. vous êtes les bienvenus;) Si ce post vous a été utile, veuillez voter. Merci! – SuShuang

+0

Si vous souhaitez ajouter votre signature dans les e-mails, placez-la dans .Body. Par exemple: .Body = "Hi there" & vbNewLine & vbNewLine & "Comment allez-vous" & Cells (r, 2) & vbNewLine & vbNewLine & "Cordialement", & vbNewLine & "SuShuang" – SuShuang