• 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.

Planning in outlook plaatsen....

Status
Niet open voor verdere reacties.

HarryBee

Gebruiker
Lid geworden
8 jul 2008
Berichten
240
Hallo Experts,

Is het mogelijk als je in een excelbestand met 5 kolommen (projectnummer, startdatum, ramingsdatum, start uitvoering en gereed) deze vult en aan de hand daarvan op de betreffende datum in de agenda van outlook een berichtje wordt ingevoegd. Bijvoorbeeld.

Projectnummer + startdatum. Het zou dan alsvolgt in de agenda kunnen staan: Start project IMM08-HB-001

Misschien weer een uitdaging?

Groeten Harry
 
Hallo Experts,

Is het mogelijk als je in een excelbestand met 5 kolommen (projectnummer, startdatum, ramingsdatum, start uitvoering en gereed) deze vult en aan de hand daarvan op de betreffende datum in de agenda van outlook een berichtje wordt ingevoegd. Bijvoorbeeld.

Projectnummer + startdatum. Het zou dan alsvolgt in de agenda kunnen staan: Start project IMM08-HB-001

Misschien weer een uitdaging?

Groeten Harry

Gezien het feit dat:

1. Zoiets schrijven niet makkelijk is, aangezien kennis van VBA Outlook niet echt wijd verspreid is (Excel VBA is toch meer verspreid);

2. op internet zoiets zeker te vinden is;

wat leveren wat Google zoekacties jou op?

Ik kan er wellicht geen tijd voor vrijmaken om het helemaal uit te pluizen, maar ik denk wel dat je hier wat basiscode kan zetten die door anderen kan aangepast worden.

Wigi
 
Op internet vind je kant en klare oplossingen voor je vraag.
Even googlen en je vindt onder meer:

Code:
Sub SetAppt()

    Dim olApp As Outlook.Application
    Dim olApt As AppointmentItem

    Set olApp = New Outlook.Application
    Set olApt = olApp.CreateItem(olAppointmentItem)

    With olApt
        .Start = Date + 1 + TimeValue("19:00:00")    
        .End = .Start + TimeValue("00:30:00")
        .Subject = "Piano lesson"
        .Location = "The teachers house"
        .Body = "Don't forget to take an apple for the teacher"
        .BusyStatus = olBusy
        .ReminderMinutesBeforeStart = 120
        .ReminderSet = True
        .Save
    End With

    Set olApt = Nothing
    Set olApp = Nothing

End Sub
Bovenstaande macro (die je in Excel kunt draaien) maakt een afspraak in Outlook voor een pianoles van een half uur. De les begint om 19:00.
Met een beetje kennis van VBA kan je de tekst aanpassen en/of laten verwijzen naar cellen van je bestand.

Met vriendelijke groet,


Roncancio
 
Op internet vind je kant en klare oplossingen voor je vraag.
Even googlen en je vindt onder meer:

Code:
Sub SetAppt()

    Dim olApp As Outlook.Application
    Dim olApt As AppointmentItem

    Set olApp = New Outlook.Application
    Set olApt = olApp.CreateItem(olAppointmentItem)

    With olApt
        .Start = Date + 1 + TimeValue("19:00:00")    
        .End = .Start + TimeValue("00:30:00")
        .Subject = "Piano lesson"
        .Location = "The teachers house"
        .Body = "Don't forget to take an apple for the teacher"
        .BusyStatus = olBusy
        .ReminderMinutesBeforeStart = 120
        .ReminderSet = True
        .Save
    End With

    Set olApt = Nothing
    Set olApp = Nothing

End Sub
Bovenstaande macro (die je in Excel kunt draaien) maakt een afspraak in Outlook voor een pianoles van een half uur. De les begint om 19:00.
Met een beetje kennis van VBA kan je de tekst aanpassen en/of laten verwijzen naar cellen van je bestand.

Met vriendelijke groet,


Roncancio

Hallo Rocancio,

Ik heb de code even geprobeerd, maar het Type is niet gedefineerd. Hij opent dus geen outlook. Komt dit nu doordat outlook is afgeschermt of moet ik in een module een Type instructie plaatsen? Zo ja, hoe kan ik dat het beste doen? :confused:

Groeten Harry
 
Hallo Rocancio,

Ik heb de code even geprobeerd, maar het Type is niet gedefineerd. Hij opent dus geen outlook. Komt dit nu doordat outlook is afgeschermt of moet ik in een module een Type instructie plaatsen? Zo ja, hoe kan ik dat het beste doen? :confused:

Groeten Harry

Mea culpa :o:o

Ik was wat vergeten te vermelden.
Je moet nog een verbinding maken naar de library van Outlook. Hoe?

- Ga naar Extra - Macro - Visual Basic Editor.
- Ga naar Extra - Verwijzingen..
- Zoek in de lijst van "Beschikbare verwijzingen" naar Microsoft Outlook 11.0 Office Library (Kan een andere versie nummer zijn).
- Vink het aan
- Klik op OK.

Als je opnieuw de code start, zal de afspraak automatisch in Outlook worden geplaatst.

Met vriendelijke groet,


Roncancio
 
Mea culpa :o:o

Ik was wat vergeten te vermelden.
Je moet nog een verbinding maken naar de library van Outlook. Hoe?

- Ga naar Extra - Macro - Visual Basic Editor.
- Ga naar Extra - Verwijzingen..
- Zoek in de lijst van "Beschikbare verwijzingen" naar Microsoft Outlook 11.0 Office Library (Kan een andere versie nummer zijn).
- Vink het aan
- Klik op OK.

Als je opnieuw de code start, zal de afspraak automatisch in Outlook worden geplaatst.

Met vriendelijke groet,


Roncancio

Roncancio,

Dit werkt inderdaad. Ik had er zelf niet opgekomen. Bedankt :thumb:
Misschien kan en wil je me alleen nog helpen met hetvolgende:

Ik zou graag willen dat bijvoorbeeld het projectnummer wordt meegenomen in de afspraak. (Vandaag "projectnummer" bespreken met de opdrachtgever). Deze projectnummers staan in kolom 2. De datum waarop de afspraak gemaakt moet worden staat in kolom 5. Ligt die datum in het verleden dan zou het mooi zijn als er een vraag gesteld wordt (Herrinnering toch plaatsen? Ja / Nee).

En dit dan voor elke regel in het bestand. Ik weet niet of het simpel te realiseren is..
In ieder geval bedankt voor je inzet en je hulp.

Groeten Harry
 
Code:
Sub SetAppt()

    Dim olApp As Outlook.Application
    Dim olApt As AppointmentItem
    Dim Ddatum As Date

    Set olApp = New Outlook.Application
    Set olApt = olApp.CreateItem(olAppointmentItem)
    If [E2] < Date Then
        BerichtDatum = MsgBox("De datum ligt in het verleden." & Chr(13) & "Wil je een herinnering plaatsen?", vbInformation + vbYesNo, "Datum in verleden.")
        If BerichtDatum = vbYes Then
            With olApt
                .Start = [E2] + TimeValue("19:00:00")
                .End = .Start + TimeValue("00:30:00")
                .Subject = "Piano lesson"
                .Location = "The teachers house"
                .Body = "Vandaag " & [B2] & " bespreken met de opdrachtgever"
                .BusyStatus = olBusy
                .ReminderMinutesBeforeStart = 120
                .ReminderSet = True
                .Save
            End With
        End If
    End If
    Set olApt = Nothing
    Set olApp = Nothing

End Sub
Met de informatie die je leverde heb ik de code aangepast. Er zijn nog wel wat verbeterpunten. Zo zou je bijvoorbeeld met een lus een reeks van afspraken kunnen boeken.

Met vriendelijke groet,


Roncancio
 
Code:
Sub SetAppt()

    Dim olApp As Outlook.Application
    Dim olApt As AppointmentItem
    Dim Ddatum As Date

    Set olApp = New Outlook.Application
    Set olApt = olApp.CreateItem(olAppointmentItem)
    If [E2] < Date Then
        BerichtDatum = MsgBox("De datum ligt in het verleden." & Chr(13) & "Wil je een herinnering plaatsen?", vbInformation + vbYesNo, "Datum in verleden.")
        If BerichtDatum = vbYes Then
            With olApt
                .Start = [E2] + TimeValue("19:00:00")
                .End = .Start + TimeValue("00:30:00")
                .Subject = "Piano lesson"
                .Location = "The teachers house"
                .Body = "Vandaag " & [B2] & " bespreken met de opdrachtgever"
                .BusyStatus = olBusy
                .ReminderMinutesBeforeStart = 120
                .ReminderSet = True
                .Save
            End With
        End If
    End If
    Set olApt = Nothing
    Set olApp = Nothing

End Sub
Met de informatie die je leverde heb ik de code aangepast. Er zijn nog wel wat verbeterpunten. Zo zou je bijvoorbeeld met een lus een reeks van afspraken kunnen boeken.

Met vriendelijke groet,


Roncancio

Roncancio,

De bovenstaande code werkt. Ik zit alleen nog even met hetvolgende: kolom B bevat het projectnummer en kolom E de datum. Nu zet hij alleen de afspraak in outlook van de cel E2. Kan je mij misschien helpen om de volgende aanpassingen te maken: Van elke rij zou een afspraak gemaakt moeten worden zodra de datum in kolom E is ingevuld. Als van de betreffende projectnummer al een afspraak is aangemaakt, dan zou er een schermpje moeten verschijnen met de vraag: "Er is al een melding in Outlook gezet, wil je deze vervangen?" Ja/nee. Bij nee gebeurd er dus niks. Bij Ja zal de "oude" melding vervangen moeten worden. Is dat te doen denk je? Groeten Harry
 
Kan je mij misschien helpen om de volgende aanpassingen te maken: Van elke rij zou een afspraak gemaakt moeten worden zodra de datum in kolom E is ingevuld

Ik ga er geen code voor schrijven, want in Outlook programmeren heb ik bijna nog niet gedaan.

Maar waarom begin je niet zelf met een kleine lus te schrijven? Je vindt daarvan massa's voorbeelden op het forum, wel in de context van andere problemen maar syntax-gewijs krak hetzelfde.
 
Ik ga er geen code voor schrijven, want in Outlook programmeren heb ik bijna nog niet gedaan.

Maar waarom begin je niet zelf met een kleine lus te schrijven? Je vindt daarvan massa's voorbeelden op het forum, wel in de context van andere problemen maar syntax-gewijs krak hetzelfde.

Volgens mij hoef je hier ook niet veel code voor te schrijven en zeker niet in Outlook.
Iedere keer dat je een afspraak in Outlook aanmaakt kan je ook een veldje in je sheet met een waarde (b.v. 1) vullen.
Code:
Range("F2").Value = 1
Als je nu de lus doorloopt (die ik nog niet zie staan in de code) dan kan je deze waarde afvragen voordat je werkelijk iets doet.
Is de waarde '1' dan geef je de boodschap die je wilt. Anders ga je gewoon een afspraak maken.

Succes
Wim
 
Code:
Sub SetAppt()

    Dim olApp As Outlook.Application
    Dim olApt As AppointmentItem
    Dim Ddatum As Date

    Set olApp = New Outlook.Application
    Set olApt = olApp.CreateItem(olAppointmentItem)
    If [E2] < Date Then
        BerichtDatum = MsgBox("De datum ligt in het verleden." & Chr(13) & "Wil je een herinnering plaatsen?", vbInformation + vbYesNo, "Datum in verleden.")
        If BerichtDatum = vbYes Then
            With olApt
                .Start = [E2] + TimeValue("19:00:00")
                .End = .Start + TimeValue("00:30:00")
                .Subject = "Piano lesson"
                .Location = "The teachers house"
                .Body = "Vandaag " & [B2] & " bespreken met de opdrachtgever"
                .BusyStatus = olBusy
                .ReminderMinutesBeforeStart = 120
                .ReminderSet = True
                .Save
            End With
        End If
    End If
    Set olApt = Nothing
    Set olApp = Nothing

End Sub
Met de informatie die je leverde heb ik de code aangepast. Er zijn nog wel wat verbeterpunten. Zo zou je bijvoorbeeld met een lus een reeks van afspraken kunnen boeken.

Met vriendelijke groet,


Roncancio

Roncancio,

Als ik nu i.p.v. een afspraak een vergaderverzoek automatisch wilt plaatsen, hoe moet de code dan aangepast worden?

Groeten Harry
 
Code:
Sub SetAppt()

    Dim olApp As Outlook.Application
    Dim olApt As AppointmentItem
    Dim Ddatum As Date

    Set olApp = New Outlook.Application
    Set olApt = olApp.CreateItem(olAppointmentItem)
    
    If [E2] < Date Then
        BerichtDatum = MsgBox("De datum ligt in het verleden." & Chr(13) & "Wil je een herinnering plaatsen?", vbInformation + vbYesNo, "Datum in verleden.")
        If BerichtDatum = vbYes Then
            With olApt
                .Start = [E2] + TimeValue("19:00:00")
                .End = .Start + TimeValue("00:30:00")
                .Subject = "Piano lesson"
                .Location = "The teachers house"
                .Body = "Vandaag " & [B2] & " bespreken met de opdrachtgever"
                .BusyStatus = olBusy
                .ReminderMinutesBeforeStart = 120
                .ReminderSet = True
[B]                .MeetingStatus = olMeeting[/B]
                .Save
            End With
            
        End If
    End If
    Set olApt = Nothing
    Set olApp = Nothing

End Sub
Alleen het vetgedrukte is toegevoegd/gewijzigd.
Er bestaat eventueel ook de mogelijkheid om mensen automatisch toe te voegen en daarbij ook de mate van belang dat men aanwezig is.

Met vriendelijke groet,


Roncancio
 
Code:
Sub SetAppt()

    Dim olApp As Outlook.Application
    Dim olApt As AppointmentItem
    Dim Ddatum As Date

    Set olApp = New Outlook.Application
    Set olApt = olApp.CreateItem(olAppointmentItem)
    
    If [E2] < Date Then
        BerichtDatum = MsgBox("De datum ligt in het verleden." & Chr(13) & "Wil je een herinnering plaatsen?", vbInformation + vbYesNo, "Datum in verleden.")
        If BerichtDatum = vbYes Then
            With olApt
                .Start = [E2] + TimeValue("19:00:00")
                .End = .Start + TimeValue("00:30:00")
                .Subject = "Piano lesson"
                .Location = "The teachers house"
                .Body = "Vandaag " & [B2] & " bespreken met de opdrachtgever"
                .BusyStatus = olBusy
                .ReminderMinutesBeforeStart = 120
                .ReminderSet = True
[B]                .MeetingStatus = olMeeting[/B]
                .Save
            End With
            
        End If
    End If
    Set olApt = Nothing
    Set olApp = Nothing

End Sub
Alleen het vetgedrukte is toegevoegd/gewijzigd.
Er bestaat eventueel ook de mogelijkheid om mensen automatisch toe te voegen en daarbij ook de mate van belang dat men aanwezig is.

Met vriendelijke groet,


Roncancio

Roncancio,

Bedankt voor je reactie. Ik denk dat ik iets niet helemaal goed doe. Zodra ik de vetgedrukte regel toevoeg, geeft hij een foutmelding dat de typen niet overeenkomen.

Wat eigenlijk de bedoeling is waar dit een onderdeel van zou moeten zijn is het volgende:
Een excelsheet gevuld met projectgegevens heeft een aantal kolommen met begindatum(kolom 4,6,8,10 en 12) en einddatum (kolom 5,7,9,11 en 13) die de start en eind van een bepaalde stap van het betreffende project weergeeft. Degene die zo'n regel invult zou in zijn agenda een bepaalde afspraak (die tevens ook naar een 2e persoon als deelnemer gestuurd moet worden) geplaatst moeten zien worden.

Weet jij een oplossing?

Groeten Harry
 
Dit klinkt wel heel erg als #4.
In dat geval zie mijn reactie in #5.

Met vriendelijke groet,


Roncancio

Dat is het nou juist, die optie staat gewoon aan. #5 had betrekking op het niet gedefineerd zijn van het type. Nu komt het type niet overeen.....

Groeten Harry
 
Toch raar omdat ik alleen 1 regel toevoeg.:confused:

Ik moet 'ns kijken als ik wat tijd heb.

Met vriendelijke groet,


Roncancio
 
Toch raar omdat ik alleen 1 regel toevoeg.:confused:

Ik moet 'ns kijken als ik wat tijd heb.

Met vriendelijke groet,


Roncancio

Hoi Roncancio,

Alweer even een tijdje geleden. Ik ben er sinds gister weer even mee aan het stoeien. Uiteindelijk zou het wel moeten lukken, alleen moet ik er wat controle en vervangings punten in zien te bouwen. Bijvoorbeeld als de datum in excelbestand wijzigd, er in outook een nieuwe melding wordt geplaatst en de oude verwijderd wordt. En ergens een overzichtje maken waarin alle meldingen onder elkaar staan (overzicht)
Pff een hele klus. Weet jij misschien een oplossing? Bedankt voor je hulp tot nu toe :thumb:

Groeten Harry
 
Nog een poging.....

Hoi Roncancio,

Alweer even een tijdje geleden. Ik ben er sinds gister weer even mee aan het stoeien. Uiteindelijk zou het wel moeten lukken, alleen moet ik er wat controle en vervangings punten in zien te bouwen. Bijvoorbeeld als de datum in excelbestand wijzigd, er in outook een nieuwe melding wordt geplaatst en de oude verwijderd wordt. En ergens een overzichtje maken waarin alle meldingen onder elkaar staan (overzicht)
Pff een hele klus. Weet jij misschien een oplossing? Bedankt voor je hulp tot nu toe :thumb:

Groeten Harry

Roncancio,

Ik ben er een tijdje uit geweest. Mijn probleem of meer wens is nog niet opgelost. Tot nu toe wordt er wel een melding in outlook geplaatst, maar wordt niet aangepast zodra er in excel een datum wijzigd. Misschien moet elke melding een unieke code meekrijgen zodat je die als sleutel kan gebruiken. Ik weet alleen niet hoe. Misschien een idee?

In ieder geval bedankt voor je hulp.

Groeten Harry
 
Roncancio,

Ik ben er een tijdje uit geweest. Mijn probleem of meer wens is nog niet opgelost. Tot nu toe wordt er wel een melding in outlook geplaatst, maar wordt niet aangepast zodra er in excel een datum wijzigd. Misschien moet elke melding een unieke code meekrijgen zodat je die als sleutel kan gebruiken. Ik weet alleen niet hoe. Misschien een idee?

In ieder geval bedankt voor je hulp.

Groeten Harry

Ay, dat is een tijdje geleden.:shocked:
Ik moet mijn geheugen nog een beetje opfrissen, maar ik zal me er over buigen.

Het kan (wellicht) even duren maar je hoort van mij.

Met vriendelijke groet,


Roncancio
 
Ik heb de gehele topic doorgenomen om je code aan te passen naar je wensen.

Code:
Sub SetAppt()

Dim olApp As New Outlook.Application
Dim olApt As AppointmentItem
Dim Ddatum As Date
Dim sFind As String
Dim ns As Outlook.Namespace
Dim olFolder As Outlook.MAPIFolder
Dim Appt As Outlook.AppointmentItem
Dim lRij As Long
    
    Set ns = olApp.GetNamespace("MAPI")
    lRij = 2
    While ActiveSheet.Range("B" & lRij) <> ""
        sFind = "[Start] = '" & Format(ActiveSheet.Range("E" & lRij), "ddddd h:mm") & "' AND [Subject]='" & ActiveSheet.Range("B" & lRij) & "'"
        
        Set olFolder = ns.GetDefaultFolder(olFolderCalendar)
        Set Appt = olFolder.Items.Find(sFind)
    
        If ActiveSheet.Range("E" & lRij) < Date Then
            BerichtDatum = MsgBox("De datum ligt in het verleden." & Chr(13) & "Wil je een herinnering plaatsen?", vbInformation + vbYesNo, "Datum in verleden.")
            If BerichtDatum = vbYes Then
                If Not Appt Is Nothing Then
                    Wijzigen = MsgBox("wilt u de afspraak wijzigen?", vbYesNo + vbExclamation, "Afspraak wijzigen.")
                End If
                Set olApp = New Outlook.Application
                Set olApt = olApp.CreateItem(olAppointmentItem)
        
                If Appt Is Nothing Then Set Appt = olFolder.Items.Add
                    With Appt
                        .Start = ActiveSheet.Range("E" & lRij)
                        .End = .Start + TimeValue("00:30:00")
                        .Subject = ActiveSheet.Range("B" & lRij)
                        .Location = ActiveSheet.Range("C" & lRij)
                        .Body = "Vandaag " & ActiveSheet.Range("B" & lRij) & " bespreken met de opdrachtgever"
                        .MeetingStatus = olMeeting
                        .Save
                    End With
            End If
        End If
        lRij = lRij + 1
    Wend
    Set olApt = Nothing
    Set olApp = Nothing

End Sub

De macro controleert vanaf rij 2 in kolom B of er iets is ingevuld.
Vervolgens wordt gekeken naar de datum in de E-kolom.
Is die datum in het verleden dan verschijnt een melding voor een afspraak.
Bestaat die afspraak al dan verschijnt de vraag of je deze wilt wijzigen.
De afspraak wordt gemaakt danwel aangepast.

Dat wat het globaal wel.

Met vriendelijke groet,


Roncancio
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan