2015-11-20 2 views
1

J'essaie d'écrire un programme simple pour envoyer automatiquement des emails à partir d'une liste dans Excel, et ça marche, mais Outlook continue d'ouvrir des pop-ups demandant la permission. Comment obtenez-vous les perspectives de ne pas demander la permission plus et faire tout ce que Excel dit sans les pop upsDonner un excellent contrôle explicite de Outlook

Heres le code que j'ai jusqu'à présent:

Sub SendMessage() 

     Dim objOutlook As Outlook.Application 
     Dim objOutlookMsg As Outlook.MailItem 
     Dim objOutlookRecip As Outlook.Recipient 
     Dim objOutlookAttach As Outlook.Attachment 
     Dim recemail 
     Dim i As Integer 

     i = 1 

     recemail = Sheet1.Cells(i, 1) 

     ' Create the Outlook session. 
     Set objOutlook = CreateObject("Outlook.Application") 

     ' Create the message. 
     Set objOutlookMsg = objOutlook.CreateItem(olMailItem) 

     With objOutlookMsg 
      ' Add the To recipient(s) to the message. 
      Set objOutlookRecip = .Recipients.Add(recemail) 
      objOutlookRecip.Type = olTo 

     ' Set the Subject, Body, and Importance of the message. 
     .Subject = "TEST!" 
     .Body = "DOES THIS WORK!?" 

     ' Should we display the message before sending? 
     If DisplayMsg Then 
      .Display 
     Else 
      .Save 
      .Send 
     End If 
     End With 
     Set objOutlook = Nothing 

     i = i + 1 
    End Sub 

Répondre

1

C'est une opération manuelle que vous devez ne:

  1. Exécuter en tant qu'administrateur d'Outlook
  2. Allez dans Outils (Outlook 2007) ou fichier, options (Outlook 2010 et plus)
  3. Aller au Trust Center
  4. Modifier la configuration de l'accès à Programmatic: Never warn me about suspicious activity

Vous pouvez maintenant fermez Outlook et à partir de maintenant, vous aurez accès à chaque fois sans pop-up!


BTW, afin d'éviter l'ouverture d'une nouvelle instance d'Outlook (s'il y a déjà un), utilisez ceci:

'Create or Get the Outlook session. 
    On Error Resume Next 
    Set objOutlook = GetObject(, "Outlook.Application") 
    If Err.Number > 0 Then Set objOutlook = CreateObject("Outlook.Application") 
    On Error GoTo 0 
+0

Merci! Je n'avais pas pensé à ajouter une prise pour vérifier plusieurs instances, alors assurez-vous d'ajouter cela, merci! – user1787114