Mój szef chce, aby wszystkie wiadomości, które mu wysłałem po godzinie 17:00, zostały dostarczone o 8 rano następnego dnia. Czy jest jakiś sposób, aby ustawić to jako regułę w Outlooku, tak że nie muszę za każdym razem zmieniać go ręcznie?
Mój szef chce, aby wszystkie wiadomości, które mu wysłałem po godzinie 17:00, zostały dostarczone o 8 rano następnego dnia. Czy jest jakiś sposób, aby ustawić to jako regułę w Outlooku, tak że nie muszę za każdym razem zmieniać go ręcznie?
Odpowiedzi:
W porządku. Więc umieścić w tym ThisOutlookSession
poprzez developer
zakładkę wvisual basic
Prywatny sub będzie sprawdzał, czy nie masz elementów pocztowych, które są to
twoim szefem (zmień adres e-mail, myślę, że może to uwzględniać wielkość liter)
Jeśli jest to dla twojego szefa, uruchomi makro, które sprawdza czas i opóźnia go. Miałem kłopoty z wysłaniem o 8 rano , może będziesz musiał się tym zająć.
Private Sub application_itemsend(ByVal item As Object, cancel As Boolean)
Dim myItem As mailItem
Set myItem = item
If myItem.Class = olMail And myItem.To = "boss@company.net" Then
Call CheckSendTime
End If
End Sub
Public Sub CheckSendTime()
Dim myobj As Object
Dim myMail As mailItem
Dim WkDay As String
Dim MinNow As Integer
Dim SendHour As Integer
Dim SendDate As Date
Dim SendNow As String
'Set Variables
SendDate = Now()
SendHour = Hour(Now)
MinNow = Minute(Now)
WkDay = Weekday(Now)
SendNow = Y
'Check if after 5PM
If SendHour > 17 Then 'After 5 PM
SendHour = 34 - SendHour 'Send at 8 am next day
SendDate = DateAdd("h", SendHour, SendDate)
SendDate = DateAdd("n", -MinNow, SendDate)
SendNow = N
End If
'Send the Email
Set myobj = Application.ActiveInspector.CurrentItem
If TypeOf myobj Is Outlook.mailItem Then
Set myMail = myobj
'Check if we need to delay delivery
If SendNow = N Then
myMail.DeferredDeliveryTime = SendDate
End If
Else: myMail.Send
End If
End Sub
Niektórzy pochodzą stąd
To rozwiązanie jest zasadniczo takie samo, jak zaproponowane przez Raystafarian, ale z uproszczoną logiką.
Aby użyć:
1. W programie Outlook otwórz edytor kodu, Alt+ F11.
2. W Project1> Microsoft Outlook Objects kliknij dwukrotnie ThisOutlookSession
3. Wklej kod poniżej do edytora.
4. Zmień adres e-mail i zakres czasu, jeśli to konieczne.
5. Kliknij przycisk Zapisz i zamknij okno edytora kodu.
6. Zmień zabezpieczenia makr programu Outlook: kliknij opcję Plik> Opcje programu Outlook> Centrum zaufania. Kliknij Ustawienia Centrum zaufania, a następnie Ustawienia makra i wybierz Powiadomienia dla wszystkich makr.
7. Uruchom ponownie program Outlook i kliknij opcję Włącz makra po wyświetleniu monitu.
Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
Dim bossEmail As String
Dim delaySendAt As Date
Dim currentHour As Integer
bossEmail = "boss@company.net"
delaySendAt = (Date + 1) & " 8:01:00 AM"
currentHour = Hour(Now())
' Delay emails sent between 5PM and 8AM
If currentHour >= 17 Or currentHour < 8 Then
' where To field contains boss's email address (case insensitive)
' but don't delay message sent to boss and other recipients
If InStr(1, Item.To, bossEmail, vbTextCompare) > 0 _
And InStr(Item.To, ";") = 0 Then
Item.DeferredDeliveryTime = delaySendAt
End If
End If
End Sub
Wysyłane wiadomości e-mail spełniające określone warunki zostaną umieszczone w folderze Skrzynka nadawcza po kliknięciu przycisku „Wyślij”, ale nie zostaną dostarczone do określonego czasu. Aby wiadomości mogły zostać dostarczone, aplikacja Outlook musi działać w zaplanowanym czasie dostawy. Jeśli otworzysz wiadomość ze Skrzynki nadawczej, ponownie kliknij „Wyślij” lub wiadomość nie zostanie wysłana.
And Item.Importance < 2 _
tuż poniżej If InStr(...
pozwoli na wysyłanie wiadomości do bossa z „Dużą ważnością”, aby zawsze były dostarczane natychmiast. Ref 2) Tak. Jeśli jest to lista dystrybucyjna Exchange, adres e-mail w polu Do nie będzie pasował do bossEmaila; jeśli jest to lista kontaktów programu Outlook, InStr(Item.To, ";") = 0
warunek umożliwi natychmiastowe wysłanie wiadomości do szefa i innych odbiorców.