Бывают случаи, когда мы забываем отменить запланированную встречу, может быть, из-за отсутствия кого-то важного, а может, из-за нехватки времени. Но во многих случаях мы забываем отменить встречу из Outlook. Итак, я ищу код VBA, который спросит у организатора встречи, подходит ли она для проведения встречи или ее следует отменить, и отправит письмо об отмене, если ее нужно отменить. Пожалуйста, помогите мне с этим. Заранее спасибо! :)
Отмена собрания Outlook с помощью VBA
comment
Что вы уже пробовали?
- person Luca Geretti   schedule 18.03.2013
comment
Добро пожаловать в StackOverflow. Лука указывает на то, что на SO мы ценим людей, которые сначала пытаются изо всех сил понять что-то самостоятельно, а затем задают вопрос о конкретной вещи, на которой они застряли.
- person Joshua Honig   schedule 18.03.2013
comment
Я совершенно новичок в VBA. Я искал коды VBA, которые помогут мне сделать то же самое, но безрезультатно. Самое близкое, к чему я пришел, это код, который будет отправлять напоминания о встречах.
- person raslams   schedule 19.03.2013
Ответы (2)
После использования кода от @alina, а также некоторых других макросов из Интернета, я придумал решение для того же, которым я делюсь здесь.
Public WithEvents objReminders As Outlook.Reminders
Sub Initialize_handler()
Set objReminders = Application.Reminders
End Sub
Private Sub objReminders_ReminderFire(ByVal ReminderObject As reminder)
Dim oApp As Outlook.Application
Dim oNameSpace As Outlook.NameSpace
Dim oApptItem As Outlook.AppointmentItem
Dim oFolder As Outlook.MAPIFolder
Dim oMeetingoApptItem As Outlook.MeetingItem
Dim oObject As Object
Dim iUserReply As VbMsgBoxResult
Dim sErrorMessage As String
MsgBox (VBA.Time)
On Error Resume Next
' check if Outlook is running
Set oApp = GetObject("Outlook.Application")
If Err <> 0 Then
'if not running, start it
Set oApp = CreateObject("Outlook.Application")
End If
On Error GoTo Err_Handler
Set oNameSpace = oApp.GetNamespace("MAPI")
Set oFolder = oNameSpace.GetDefaultFolder(olFolderCalendar)
For Each oObject In oFolder.Items
If oObject.Class = olAppointment Then
Set oApptItem = oObject
If ReminderObject.Caption = oApptItem.Subject Then
If oApptItem.Organizer = Outlook.Session.CurrentUser Then
iUserReply = MsgBox("Meeting found:-" & vbCrLf & vbCrLf _
& Space(4) & "Date/time (duration): " & Format(oApptItem.Start, "dd/mm/yyyy hh:nn") _
& " (" & oApptItem.Duration & "mins)" & Space(10) & vbCrLf _
& Space(4) & "Subject: " & oApptItem.Subject & Space(10) & vbCrLf _
& Space(4) & "Location: " & oApptItem.Location & Space(10) & vbCrLf & vbCrLf _
& "Do you want to continue with the meeting?", vbYesNo + vbQuestion + vbDefaultButton1, "Meeting confirmation")
If iUserReply = vbNo Then
oApptItem.MeetingStatus = olMeetingCanceled
oApptItem.Save
oApptItem.Send
oApptItem.Delete
End If
End If
End If
End If
Next oObject
Set oApp = Nothing
Set oNameSpace = Nothing
Set oApptItem = Nothing
Set oFolder = Nothing
Set oObject = Nothing
Exit Sub
Err_Handler:
sErrorMessage = Err.Number & " " & Err.Description
End Sub
person
raslams
schedule
22.03.2013
Я нашел это здесь
Public Function DeleteAppointments(ByVal subjectStr As String)
Dim oOL As New Outlook.Application
Dim oNS As Outlook.NameSpace
Dim oAppointments As Object
Dim oAppointmentItem As Outlook.AppointmentItem
Dim iReply As VbMsgBoxResult
Set oNS = oOL.GetNamespace("MAPI")
Set oAppointments = oNS.GetDefaultFolder(olFolderCalendar)
Count = oAppointments.Items.Count 'for test purposes
For Each oAppointmentItem In oAppointments.Items
If InStr(oAppointmentItem.Subject, subjectStr) > 0 Then
iReply = msgbox("Appointment found:" & vbCrLf & vbCrLf _
& Space(4) & "Date/time: " & Format(oAppointmentItem.Start, "dd/mm/yyyy hh:nn") & vbCrLf _
& Space(4) & "Subject: " & oAppointmentItem.Subject & Space(10) & vbCrLf & vbCrLf _
& "Delete this appointment?", vbYesNo + vbQuestion + vbDefaultButton2, "Delete Appointment?")
If iReply = vbYes Then oAppointmentItem.Delete
oAppointmentItem.Delete
End If
Next
Set oAppointmentItem = Nothing
Set oAppointments = Nothing
Set oNS = Nothing
Set oOL = Nothing
End Function
person
Alina B.
schedule
18.03.2013
Спасибо за код. Но у меня есть еще одно сомнение по этому поводу. Пожалуйста, потерпите меня, так как я совершенно новичок в VBA. Итак, сомнение в том, как вы называете весь этот макрос? Кроме того, где вы дадите значение для переменной subjectStr, которая, я думаю, является проверочной переменной в этом случае. Еще раз спасибо за код! :)
- person raslams; 19.03.2013