Макрос Outlook для автоматического создания 15-минутного буфера перед основным собранием с приглашением в комнату - PullRequest
0 голосов
/ 03 мая 2019

Мы резервируем конференц-залы от внешнего вида.Мы создаем нашу встречу и добавляем комнату в качестве ресурса в запрос на встречу, и приглашение отправляет комнате приглашение по электронной почте, и комната принимает.У меня проблема в том, что я хотел бы добавить 15-минутный буфер перед моей встречей для настройки.Я пытаюсь создать макрос, который я могу запустить во время настройки моего собрания, который автоматически создаст 15-минутное собрание и отправит запрос.

Пока у меня все это работает, КРОМЕ, он не отправляет комнатуприглашение на буферную встречу.Он извлечет все данные, когда я захожу на это буферное собрание и смотрю, он показывает, что комната собраний находится в списке приглашенных участников, но фактически не отправляет приглашение.Как я могу это сделать?Даже если это связано с открытием 15-минутного периода в реальном окне, где мне нужно нажать «Отправить», я в порядке, но я хочу, чтобы он извлек ВСЕ данные с основного собрания. Ниже приведено то, что я имею до сих пор.

     Public Sub AddTravelTime()
       Dim coll As VBA.Collection
       Dim obj As Object
       Dim Appt As Outlook.AppointmentItem
       Dim Travel As Outlook.AppointmentItem
       Dim Items As Outlook.Items
       Dim Before&, After&
       Dim Category$, Subject$

     '1. Block minutes before and after the appointment
       Before = 30
       After = 30

     '2. Skip this if the default values never change
       Before = InputBox("Minutes before:", , Before)
       After = InputBox("Minutes after:", , After)

     If Before = 0 And After = 0 Then Exit Sub

     '3. Assign this category
       Category = "Travel"

     Set coll = GetCurrentItems
     If coll.Count = 0 Then Exit Sub
     For Each obj In coll
         If TypeOf obj Is Outlook.AppointmentItem Then
         Set Appt = obj
         If TypeOf Appt.Parent Is Outlook.AppointmentItem Then
           Set Items = Appt.Parent.Parent.Items
         Else
           Set Items = Appt.Parent.Items
         End If

      '4. Use the main appointment's subject
      Subject = Appt.Subject
      Location = Appt.Location
      Resources = Appt.Resources

      If Before > 0 Then
        Set Travel = Items.add
        Travel.Subject = Subject
        Travel.Location = Location
        Travel.Resources = Resources
        Travel.Start = DateAdd("n", -Before, Appt.Start)
        Travel.Duration = Before
        Travel.Categories = Category
        Travel.Save
      End If

      If After > 0 Then
        Set Travel = Items.add
        Travel.Subject = Subject
        Travel.Start = Appt.End
        Travel.Duration = After
        Travel.Categories = Category
        Travel.Save
      End If
    End If
  Next
End Sub

 Private Function GetCurrentItems(Optional IsInspector As Boolean) As 
   VBA.Collection
   Dim coll As VBA.Collection
   Dim Win As Object
   Dim Sel As Outlook.Selection
   Dim obj As Object
   Dim i&

   Set coll = New VBA.Collection
   Set Win = Application.ActiveWindow

   If TypeOf Win Is Outlook.Inspector Then
     IsInspector = True
     coll.add Win.CurrentItem
   Else
     IsInspector = False
     Set Sel = Win.Selection
     If Not Sel Is Nothing Then
       For i = 1 To Sel.Count
         coll.add Sel(i)
       Next
     End If
   End If
   Set GetCurrentItems = coll
 End Function

Мне бы очень хотелось просто создать 15-минутный буфер для меня при запуске макроса, а также отправить в комнату приглашение на это буферное собрание и больше ничего не делать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...