• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

excel naar Outlook

Status
Niet open voor verdere reacties.

leonvr1

Gebruiker
Lid geworden
18 mei 2010
Berichten
29
Beste allemaal,

graag zou ik vanuit excel middels een macro rechtstreeks afspraken in een gedeelde outlook calendar zetten. Wie zou mij hierbij kunnen helpen.

Gr, Leon
 

Bijlagen

Hierbij een begin ... Ik weet niet hoe ik een item in een andere outlook calendar kan zetten (ik heb geen meerdere kalenders).

Deze code moet je plakken achter "Dashboard". De code wordt geactiveerd op het moment dat je een datum invult of wijzigt in kolom H. Er zijn nog diverse optimalisaties mogelijk zoals het verwijderen van een item op het moment dat je de datum wijzigt.
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
  
Dim oApp As Object

    If Target.Column = 8 And Target.Value <> "" Then
    
        On Error Resume Next
  
        ' Controleer of Outlook draait
        Set oApp = GetObject("Outlook.Application")
        If Err <> 0 Then
        ' Eventueel starten Outlook
            Set oApp = CreateObject("Outlook.Application")
        End If
      
        On Error GoTo 0
      
        With oApp.CreateItem(1)
            .Subject = "Maintenance/ Inspection " & Cells(7, "C").Value
            .Start = Cells(7, "H").Value
    '        .Duration = 60     ' In minuten
        
            .AllDayEvent = True
            .Importance = 2     ' 0=Low, 1=Normal, 2=High
            .Location = "Locatie"
        
            .ReminderSet = True
            .ReminderMinutesBeforeStart = "15"
            .ReminderPlaySound = True
        
            .Save               ' Direct opslaan, anders .Display
      
        End With
    End If

End Sub
 
Laatst bewerkt:
Waarschijnlijk doe ik iets fout want als ik de code in de sheet zet en vervolgens een aantal data in kolom H gebeurt er in outlook niets..
 
dank, maar dit gaat mij echt boven mijn pet. Zoveel kennis van VBA heb ik helaas nog niet
 
Post je voorbeeldbestand eens. Dan kan ik kijken waar het fout gaat.
 
Je moet hem wel opslaan als macro enabled workbook (xlsm). Anders wordt de macro niet bewaard.
 
Nu werkt het inderdaad wel, zou ook handig zijn als ik tijdstip e.d. kon toevoegen. Als iemand weet hoe ik dit mogelijk kan maken zou dat heel fijn zijn.

en nog een aanvullende vraag: Subject en Start staan nu als volgt .Subject = Cells(7, "C").Value
.Start = Cells(7, "H").Value

Dit betekend dat de code alleen de informatie van rij 7 afhaalt, hoe kan ik dit aanpassen zodat hij de hele kolom checkt op nieuwe data
 
Laatst bewerkt:
Aangepaste code. Hierin wordt de rij bepaald van de wijzging, waarna de gegevens van die rij worden gebruikt. Daarnaast heb ik starttijd 10:00 gekozen en duur 60 minuten. Dit is natuurlijk vrij aan te passen. Als je wilt dat dit vanuit de sheet gebeurd zul bv. kolom H anders moeten vullen (datum+tijd) en dit tijd overnemen als starttijd/ of kolommen toevoegen voor starttijd en duur:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
  
Dim oApp As Object
Dim rij As Long

    If Target.Column = 8 And Target.Value <> "" Then
    
        On Error Resume Next
  
        ' Controleer of Outlook draait
        Set oApp = GetObject("Outlook.Application")
        If Err <> 0 Then
        ' Eventueel starten Outlook
            Set oApp = CreateObject("Outlook.Application")
        End If
      
        On Error GoTo 0
      
        rij = Target.Row
      
        With oApp.CreateItem(1)
            .Subject = "Maintenance/ Inspection " & Cells(rij, "C").Value
            .Start = Cells(rij, "H").Value + TimeValue("10:00")     ' Nu wordt hier 10 uur opgeteld, dus aanvangstijd = 10:00
            .Duration = 60                                                      ' In minuten. Beter lijkt het om dit dan over te nemen uit de sheet
        
            .AllDayEvent = False                                              ' Deze moet op False, anders wordt alsnog de hele dag geselecteerd
            .Importance = 2                                                    ' 0=Low, 1=Normal, 2=High
            .Location = "Locatie"
        
            .ReminderSet = True
            .ReminderMinutesBeforeStart = "15"
            .ReminderPlaySound = True
        
            .Save               ' Direct opslaan, anders .Display
      
        End With
    End If

End Sub

Succes!
 
Dankjewel Peter...

Kan ik ook nog automatisch een distributielijst of een aantal mensen toevoegen die de melding dan ook meteen in hun agenda krijgen. Het kan ook handmatig, maar alles wat automatisch kan bespaart mij veel tijd en verkleind de kans op fouten
 
Met de code die ik heb gegeven wordt een vergaderverzoek in een agenda geplaatst. Wil je nu dat dit vergaderverzoek in meerdere agenda's wordt geplaatst (en heb jij de rechten om dat te doen)? Of wil je dat er een meeting request uitgaat naar meerdere ontvangers?
 
het vergaderverzoek kan ik handmatig aanpassen, maar als er een meeting request naar meerdere ontvangers automatisch verstuurd kan worden is dat natuurlijk veel handiger. Zo hoef ik maar een systeem up to date te houden.

In dit geval zijn is het altijd dezelfde groep mensen dus ik hoef niet telkens nieuwe personen toe te voegen
 
Niemand een passende oplossing voor mijn laatste vraag? Dan kan ik eventueel het topic op slot gooien...
 
Je wens is mij nog niet helemaal duidelijk. Wat ik nu begrijp wil je en een taak in een gedeelde kalender en een lijst met mensen apart "spammen" met meeting requests voor iets wat ze in de gedeelde kalender kunnen zien.

Ik vraag mij dan het nut van de gedeelde kalender af.

Ik kan mij 2 oplossingen voorstellen:
1. Je zet daadwerkelijk een afspraak in een gedeelde kalender en je stuurt eventueel een mail ter info naar de betrokkenen
2. Je stuurt alleen een vergaderverzoek uit naar alle betrokkenen

Geef maar aan wat je wilt. In alle gevallen help ik graag met een geschikte oplossing ...
 
Peter,

ik wil graag een vergaderverzoek sturen naar alle betrokkenen. De taak hoeft niet in een gedeelde kalender.

Gr, Leon
 
'SNB

leuk allemaal die codes maar ik heb geen idee hoe ik ze kan integreren in de bestaande code en dat is waar ik naar op zoek ben...
 
Code uit de link en website van SNB en de vorige code gecombineerd.
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
  
Dim oApp As Object
Dim rij As Long

    If Target.Column = 8 And Target.Value <> "" Then
    
        On Error Resume Next
  
        ' Controleer of Outlook draait
        Set oApp = GetObject("Outlook.Application")
        If Err <> 0 Then
        ' Eventueel starten Outlook
            Set oApp = CreateObject("Outlook.Application")
        End If
      
        On Error GoTo 0
      
        rij = Target.Row
      
        With oApp.CreateItem(1)
            .Subject = "Maintenance/ Inspection " & Cells(rij, "C").Value
            .MeetingStatus = 1
            .Location = "Locatie"
            .Start = Cells(rij, "H").Value + TimeValue("10:00")
            .Duration = 60      ' In minuten
            .Recipients.Add "someone@somewhere.nl;another.one@somewhere.nl"
            .Display            ' Vergaderverzoek tonen; anders .Send
        End With
    End If

End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan