Outlook에서 기본 지연 보내기 변경

Outlook에서 기본 지연 보내기 변경

기본 전송 지연 옵션을 변경하여 주말에 보내는 경우 월요일 오전 6시 30분 또는 7시까지 지연할 수 있는 빠른 링크를 갖고, 주중(월~목)에 보내는 경우에는 저녁에 보내기 지연을 선택할 수 있으며 지연 보내기 빠른 액세스 도구 모음의 기본값은 다음 날 오전 6시 30분 또는 7시경입니다.

이 게시물에 설명된 대로 매크로를 생성하기 위한 모든 단계를 수행했습니다. Outlook: "이전에 전달하지 않음" 기능에 대한 기본 이메일 지연 변경

하지만 매크로를 실행하려고 했더니 다음 오류가 발생했습니다.

0번째 줄에 오류가 발생했습니다. 설명: 개체 변수 또는 블록 변수가 설정되지 않음 및 오류 번호 91.

이 문제를 어떻게 해결할 수 있나요?

답변1

나는 본질적으로 당신과 동일한 솔루션을 원했고 해당 매크로에도 약간의 문제가 있었습니다. 몇 군데 다른 사이트를 검색하다가 결국 발견했습니다.이 솔루션그게 내가 거기까지 가는 데 가장 많은 도움이 됐어요. 나는 아래 코드로 끝나기 위해 매크로를 약간 수정했습니다. 새 메시지에 대한 빠른 액세스 도구 모음에 매크로를 실행하기 위한 버튼만 추가했고 원본 코드의 오류 처리를 테스트하지 않았기 때문에 보증할 수는 없지만 그대로 두었습니다.

원본에서 변경한 사항:

  • 지연이 이미 설정된 경우에만 지연을 제거하려고 하므로 NoDeferredDelivery 기본 시간과의 비교를 동일하지 않도록 변경했습니다.
  • If 블록에 Exit Sub를 추가했습니다. 그렇지 않으면 계속해서 지연이 발생하기 때문입니다.
  • 기본 전송 시간이 일요일~목요일인 경우 다음날 오전 7시 38분, 금요일이나 토요일인 경우 월요일 아침이 되도록 날짜 계산 논리를 수정했습니다.
  • 요일을 포함하도록 새로운 전송 시간을 알려주는 메시지 상자를 업데이트하여 금요일이나 토요일에 실행한 경우 내일 아침이 아닌 월요일로 이동한다는 것이 명확해질 수 있도록 했습니다.
Sub DelaySendMail()
        On Error GoTo ErrHand               ' Error Handling
        Dim objMailItem As MailItem         ' Object to hold mail item
        Dim SendDate As String              ' The date to send delayed mail
        Dim SendTime As String              ' The time to send delayed mail
        Dim MailIsDelayed As Boolean        ' Set if the mail will be delayed
        Dim NoDeferredDelivery As String    ' Value if deferred delivery is disabled
        
        SendTime = " 07:38:00"              ' Time to deliver delayed mail (7:38 AM)
        MailIsDelayed = False               ' We assume it's being delivered now
        NoDeferredDelivery = "1/1/4501"     ' Magic number Outlook uses for "delay mail box isn't checked"
        
        'Set object to mail item you have open
        Set objMailItem = Outlook.ActiveInspector.CurrentItem
        
        ' Check and make sure current item is an unsent message
        If objMailItem.Sent = True Then
            Err.Raise 9000
        End If
     
        ' If mail is currently delayed, remove the delay and quit
        If objMailItem.DeferredDeliveryTime  NoDeferredDelivery Then  'Altered since test wasn't working in original
            objMailItem.DeferredDeliveryTime = NoDeferredDelivery
            MsgBox "Mail will be delivered immediately when sent", _
                    vbOKOnly, "Deferred delivery removed"
            Exit Sub 'Added since otherwise it didn't actually quit the method
        End If
            
        ' Set the date appropriately for the next weekday
        If Weekday(Date, vbMonday) = 5 Then
            ' Today is Friday
            ' Delay mail three days
            SendDate = Date + (3)
            MailIsDelayed = True
        ElseIf Weekday(Date, vbMonday) = 6 Then
            ' Today is Saturday
            ' Delay mail two days
            SendDate = Date + (2)
            MailIsDelayed = True
        Else
        ' Today is Sunday-Thursday so delay till tomorrow morning
            SendDate = Date + (1)
            MailIsDelayed = True
        End If
        
        If MailIsDelayed Then
            ' Mail should be delayed - set the delivery date/time
            objMailItem.DeferredDeliveryTime = SendDate & SendTime
            'Altered to include day it would be sent for visiblity over a weekend
            MsgBox "Mail will be delivered on " & _
                    WeekdayName(Weekday(SendDate)) & ", " & SendDate & " at" & SendTime, _
                    vbOKOnly, "Mail delayed"
        End If
    
        Exit Sub
    
    ErrHand:
        ' Handle well-known errors with message
        ' Other errors, just tell the user
        If Err.Number = 13 Then
            ' No current item or current item isn't a mail message
            MsgBox "Future delivery can only be set on mail items", vbOKOnly, "Not a mail item"
        ElseIf Err.Number = 9000 Then
            ' The active message has already been sent
            MsgBox "Please run this macro from an unsent mail item", vbOKOnly, "Not an unsent mail item"
        Else
            MsgBox "An error has occured on line " & Erl & _
                    ", with a description: " & Err.Description & _
                    ", and an error number " & Err.Number
        End If
            
    End Sub

관련 정보