>source

Outlook 연락처를 메일 그룹에 넣는 코드를 VBA (Excel)로 작성하고 있습니다.

지금까지는 작동하지만 접점이없는 경우 오류 처리가 작동하지 않습니다. MS는 말한다

If the specified recipient is not valid, the AddMember method will fail.

이 방법이 실패하면 어떻게 알 수 있습니까?

Public Function olAddContactToList(ByVal sLastName As String, _
  Optional ByVal sFirstName As String, _
  Optional ByVal sGroup As String) As Boolean
  Dim oOutlook As Object    ' Outlook.Application
  Dim oNameSpace As Object  ' Outlook.NameSpace
  Dim oMAPIFolder As Object ' Outlook.MAPIFolder
  Dim oContact As Object    ' Outlook.ContactItem
  Dim oList As Object       ' Outlook.DistListItem
  Dim oMail As Object       ' Outlook.MailItem
  Dim oRecip As Object      ' Outlook.Recipient
  Const olFolderContacts = 10
  On Error GoTo ErrHandler
  Set oOutlook = CreateObject("Outlook.Application")
  Set oNameSpace = oOutlook.GetNamespace("MAPI")
  Set oMAPIFolder = oNameSpace.GetDefaultFolder(olFolderContacts)
  Set oList = oNameSpace.GetDefaultFolder(olFolderContacts).Items(sGroup)
 'Adds a member to a new distribution list
 Set oMail = oOutlook.CreateItem(olMailItem)
 'Create recipient for distlist
 Set oRecip = oOutlook.Session.CreateRecipient(sFirstName & " " & sLastName)
 oRecip.Resolve
 oList.AddMember oRecip
 oList.Save
 olAddContactToList = True
ErrHandler:
  If Err.Number <> 0 Then
    MsgBox "Fehler beim Hinzufügen des Outlook-Kontakts zu einer Liste." & vbCrLf & _
      CStr(Err.Number) & " " & Err.Description, vbExclamation + vbOKOnly
    olAddContactToList = False
  End If
  Set oContact = Nothing
  Set oMAPIFolder = Nothing
  Set oNameSpace = Nothing
  Set oOutlook = Nothing
  Set oList = Nothing
  Set oMail = Nothing
  Set oRecip = Nothing
End Function

내가 시도했다

Dim AddCheck As Long
AddCheck = oList.AddMember(oRecip)

하지만 AddCheck  기존 연락처와 상관없이 0으로 유지되며 목록에 성공적으로 추가되었거나 존재하지 않고 추가되지 않습니다.


  • 답변 # 1

    Recipient.Resolve 의 결과   True 입니다  또는 False  (Microsoft 말) 확인해야합니다.
    그렇지 않으면 이름과 성만 있고 전체 이메일 주소는 없습니다 :

    If Not oRecip.Resolve Then
        ' no resulting email address
    Else
        ' email address found, go further
    End If
    
    

    와이즈 비즈  간단한 전화 번호 문자열을 추가하려고하면 오류가 발생하지 않습니다 (추가하지는 않음), DistListItem.AddMember 를 비교하는 것이 좋습니다  (멤버의 oList.MemberCount)는 새 멤버를 추가하기 전과 후에 추가로 발생합니다.

    문제가 생겼을 때 오류가 발생하거나 회원 수가 변경되지 않으면 추가 점검을 수행 할 수 있습니다.

    DistListItem.MemberCount

관련 자료

  • 이전 html - 패딩, 여백, 테두리와 다른 방식으로 픽셀 값을 할당하는 상자 그림자? 맨 위-> 오른쪽-> 아래-> 왼쪽 순서가 아님
  • 다음 readlines - vbnet - 공백으로 구분 된 텍스트 파일에서 열 값 바꾸기