Avatar billede meiland Mester
19. december 2016 - 10:20 Der er 4 kommentarer

Hjælp til VBA: Opret aftale i Outlook

Hej Eksperter.

Jeg har fået lavet (med hjælp fra google) en kode, der opretter en aftale i min kalender baseret på en eller flere e-mail-adresser, men....

hvordan skal koden rettes så:
1: aftalen gemmes i sekretærens kalender "sekretær" (shared)
2: e-mail adresser erstattes med en distributionsgruppe

Ad 2: Kan løses med et LOPSLAG, men det vil være bedre, hvis gruppe kunne hentes direkte.

Mit regneark med kode kan hentes her: https://www.dropbox.com/s/cge0hziltpevpr9/outlook_appointment.xlsm?dl=0

Her er koden:
    Sub AddAppointments()

      Dim myoutlook As Object ' Outlook.Application
      Dim r As Long
      Dim myapt As Object ' Outlook.AppointmentItem
      Dim time As String

      ' late bound constants
      Const olAppointmentItem = 1
      Const olBusy = 2
      Const olMeeting = 1

      ' Create the Outlook session
      Set myoutlook = CreateObject("Outlook.Application")

      ' Start at row 2
      r = 2

      Do Until Trim$(Cells(r, 1).Value) = ""
        ' Create the AppointmentItem
        Set myapt = myoutlook.CreateItem(olAppointmentItem)
        ' Set the appointment properties
        With myapt
          .Subject = Cells(r, 1).Value
      '    .Subject = Cells(Row, Column)
          .Location = Cells(r, 2).Value
          .Start = Cells(r, 4).Value
          time = .Start
          .Duration = Cells(r, 5).Value
          .Recipients.Add Cells(r, 9).Value '& ";" & _
      '    Cells(8, 2).Value & ";" & _
      '    Cells(8, 3).Value & ";" & _
      '    Cells(8, 4).Value & ";" & _
      '    Cells(8, 5).Value & ";" & _
      '    Cells(8, 6).Value & ";" & _
      '    Cells(8, 7).Value & ";" & _
      '    Cells(8, 8).Value & ";" & _
      '    Cells(8, 9).Value & ";" & _
      '    Cells(8, 10).Value

          .MeetingStatus = olMeeting
          ' not necessary if recipients are email addresses
          myapt.Recipients.ResolveAll
          'myapt.Recipients.FreeBusy = "(#8/8/2015#, 60, False)"
        ' .AllDayEvent = Cells(9, 1).Value

          ' If Busy Status is not specified, default to 2 (Busy)
          If Len(Trim$(Cells(r, 6).Value)) = 0 Then
            .BusyStatus = olBusy
          Else
            .BusyStatus = Cells(r, 6).Value
          End If

          If Cells(r, 7).Value > 0 Then
            .ReminderSet = True
            .ReminderMinutesBeforeStart = Cells(r, 7).Value
          Else
            .ReminderSet = False
          End If

          .Body = Cells(r, 8).Value
          .Save
          r = r + 1
          .Display
        End With
      Loop
    End Sub
Avatar billede ebea Ekspert
20. december 2016 - 18:59 #1
Jeg kiggede i din opstilling du bruger i koden, og hvis du indsætter de modtagere som skal have indkaldelsen til mødet, i din kolonne (I), så blir der jo sendt en mail til dem som står på den liste (inklusiv sekretæren), og ved modtagelse af mailen, kan de jo klikke på "Accepter indkaldelse), hvorved den indsættes i deres kalender.
Jeg har prøvet en opstilling her, og der virker det korrekt nok, ved at acceptere indkaldelsen!
Derved slipper du jo også for, at stå med "dilemmaet" ved ikke at ramme den rigtige mappe, hvor en modtagers (Sekretær) kalender ikke er til rådighed.
Avatar billede ebea Ekspert
20. december 2016 - 19:02 #2
Og som et lille tillæg, så kan du som Gruppe, have disse i samme liste i kolonne (I). Derved har du løst begge "problemer", hvis jeg har forstået dit spørgsmål rigtigt.
Avatar billede meiland Mester
27. december 2016 - 15:11 #3
Hej ebea.
Tak for dine svar.
Jeg har måske ikke formuleret mig tydeligt nok.
Hos os har vi 2 sekretærer, der indkalder til de fleste fællesmøder.
Sekretærerne har hver deres private kalender (arne@.... og xxx@......). Da de ikke skal deltage i alle møder, indkalder de via sekretærkalenderen sekretær@....), som de har fuld rettighed over. Sekretær@.... er en shared inbox.

Som koden er nu bookes en aftale i den private kalender, og det er ikke det som var meningen.
Avatar billede ebea Ekspert
27. december 2016 - 15:21 #4
#3  -  Jeg (tror) jeg godt kan følge det som du skriver. Men ved at bruge det som jeg henviste til, så er det kun dem (private eller ej), som accepterer mødeindkaldelsen, som vil få indsat mødet i deres kalender, uanset hvor de er sendt fra! Det burde gerne være det samme som sker, når de som er tiltænkt en mødeindkaldelse, får en mail.

Eller også, så forstår jeg ikke det som du skriver!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester