2012-04-06 9 views
6

Buduję dodatek programu Excel, który wysyła aktywny skoroszyt jako załącznik w szablonie wiadomości e-mail programu Outlook do określonej grupy kontaktów.Jak uzyskać dostęp do grup kontaktów w programie Excel VBA?

Otrzymałem dwie pierwsze części do pracy z poniższym kodem, ale nie jestem pewien, jak ustawić pole .TO do grupy kontaktów.

Public Sub Mail_Reports() 
    Dim rng As Range 
    Dim OutApp As Object 
    Dim OutMail As Object 

    With Application 
     .EnableEvents = False 
     .ScreenUpdating = False 
    End With 

    On Error Resume Next 

    Set OutApp = CreateObject("Outlook.Application") 

    'Set this line to the path and file name of your template 
    Set OutMail = OutApp.CreateItemFromTemplate("C:\Users\moses\AppData\Roaming\Microsoft\Templates\test.oft") 
    On Error Resume Next 

    With OutMail 
     '.TO field should be set to the contact group 
     .BCC = "" 
     .Attachments.Add ActiveWorkbook.FullName 
     .HTMLBody = Replace(OutMail.HTMLBody, strOldPeriod, strNewPeriod) 
     .Subject = Replace(OutMail.Subject, strOldPeriod, strNewPeriod) 
     'To display the email leave as is; to send the Email, change to .Send 
     .Display 'or Send 
    End With 

    On Error GoTo 0 

    With Application 
     .EnableEvents = True 
     .ScreenUpdating = True 
    End With 

    Set OutMail = Nothing 
    Set OutApp = Nothing 
End Sub 

Odpowiedz

3

Wystarczy użyć nazwy grupy kontaktów (poprzednio nazywanej "listami dystrybucyjnymi"). Po prostu próbowałem go, jak zasugerowałem na stronie Ron de Bruin's i działa.

+0

Zignoruj ​​to, działa. Moje zamieszanie polegało na tym, że mimo że pole to stanowiło wartość prostego tekstu, Outlook jest na tyle sprytny, że rozpoznaje go jako grupę kontaktową. Miałem odpowiedź od samego początku, ale nie znałem XD. – Moses

+0

Zauważyłem również, że nie wydaje się, aby rozwiązać i powinien wspomnieć o tym w mojej odpowiedzi. Jeśli trafisz w "Sprawdź nazwę", to tak się stanie, a jak się dowiedzieliśmy, nawet jeśli nie, wysyła się dobrze. –

+1

Hej, stary, wiem, ale ten link jest zepsuty - czy mógłbyś umieścić tutaj odpowiedni fragment odpowiedzi Rona - zakładając, że wciąż go masz? – Huw

0

Aby adres e-mail lub nazwy adresatów odbiorcy zostały rozwiązane (aby nie wyświetlały tylko zwykłego tekstu), można wykonać następujące czynności.

With OutMail 
    '.TO field should be set to the contact group 
    .BCC = "" 
    .Attachments.Add ActiveWorkbook.FullName 
    .HTMLBody = Replace(OutMail.HTMLBody, strOldPeriod, strNewPeriod) 
    .Subject = Replace(OutMail.Subject, strOldPeriod, strNewPeriod) 
    'To display the email leave as is; to send the Email, change to .Send 
    .Display 'or Send 
    If Not .Recipients.ResolveAll Then 
     For Each Recipient In .Recipients 
      If Not Recipient.Resolved Then 
       MsgBox Recipient.Name & " could not be resolved" 
      End If 
     Next 
    End If 
End With 
Powiązane problemy