dagkalender maken met powerpoint

Status
Niet open voor verdere reacties.

sherpa14

Gebruiker
Lid geworden
26 okt 2004
Berichten
232
Ik wil graag een dagkalender opmaken met powerpoint met voor elke dia een andere dag. Handmatig de datum telkens invoeren is tijdrovend. Bestaat er een mogelijkheid om er voor te zorgen dat elke dia in bijvoorbeeld een kader automatisch een datum krijgt, vertrekkend van de datum van de eerste dia. De volgorde van de data dient zich eveneens aan te passen aan de volgorde in de reeks. vb als een dia ergens tussen wordt geschoven dan past de datum van de bingeschoven dia zich aan en de zich daaronder bevindende dia's ook.

misschien een moeilijke klus maar ik heb al ervaren dat er echt wel bollebozen op dit forum zitten, dus ik hoop :D
 
Je moet daarvoor tekstvakken maken op elke dia. Kan met deze procedure:
Code:
Sub testje()
Dim MySlide As Slide
Dim pres As Presentation
Dim i As Integer
Dim iDate As Date
    Set myDocument = ActivePresentation.Slides(1)
    Set pres = ActivePresentation
    For Each sld In pres.Slides
        i = i + 1
        Set MySlide = pres.Slides(i)
        With MySlide.Shapes.AddShape(Type:=msoShapeRectangle, _
            Top:=450, Left:=100, Width:=200, Height:=50)
            .Name = "Red Square"
            .Fill.ForeColor.RGB = RGB(255, 0, 0)
            .TextFrame.TextRange.Text = Date + i
        End With
    Next sld
End Sub
 
Dank je. ik probeer dit even uit. kan nog even duren eer je hierover resultaat krijgt. Nu nog wat andere dingen te doen.
toch nu al bedankt voor deze aanbreng.
vg.
 
@ Octafish (en andere creatievelingen)

even uitgetest;
heb de macro kunnen opmaken (en dat is al een hele klus gezien ik met het maken van macro's helemaal niet onder de knie heb )
wanneer bij een serie van slides de macro wordt uitgevoerd dan komt de begindatum (de eerste slide) om het huidige datum +1 te staan. dus vandaag zijn we 19/12/2014 de eerste slide wordt dus 20/12/2014. de rest van de slides volgen netjes op elkaar: dat is dus puik.

Nu zou ik graag de mogelijkheid hebben om
1. de datum van de eerste slide aan te passen waardoor de opeenvolgende slides dan ook worden aangepast.
2. de datum laten vooraf gaan van de dagnaam (maandag, ...)

Ik kijk er al naar uit wat de creatievelingen op het web hiervoor in petto hebben!


alvast bedankt hiervoor.
Rob
 
Dit lukt wel maar is echter onhandig omdat je als je een begindatum in de toekomst wil hebben je de macro zelf moet gaan aanpassen ofwel miet je x aantal blanco slides invoegen. Niet zo handig dus.
Ik dacht eerder naar een mogelijkheid waar bij het uitvoeren van de macro een scherm komt met de vraag welke begindatum er moet worden ingevoerd.

sorry maar ik hou deze beide vragen nog als "onopgelost".
 
Wat jij wilt is überhaupt een handeling die handmatige actie vereist; je kunt in PowerPoint niet automatisch een koppeling maken met een tekstvak waarin een datum staat, zodanig dat als je gaat schuiven met de dia's dat de datums in de betreffende tekstvakken zich ook automatisch aanpassen. Vandaar de macro die op elke dia een tekstvak aanmaakt en daarin een oplopende (vaste) datum zet. Ga je na het maken van die tekstvakken schuiven met je dia's, dan heb je dus een probleem omdat de datums er vast in staan. Voer je de macro 3 keer uit, krijg je 3 tekstvakken per dia met een datum. Lijkt mij niet handig, want je weet niet altijd zeker dat het bovenste tekstvak de goede datum laat zien.

De simpelste oplossing is uiteraard procedureel: genereer de tekstvakken pas als je klaar bent met de presentatie. Het heeft sowieso heel weinig nut om de tekstvakken eerder aan te maken, lijkt mij. Kwestie van gebruikersinstructie dus.
Maar uiteraard is er altijd wel een mouw aan te passen; je kunt de macro laten controleren of de tekstvakken bestaan, en als dat zo is dan kun je de inhoud veranderen. Zo niet, dan moet het tekstvak uiteraard worden aangemaakt.

Code:
Sub Datum_In_Tekstvak()
Dim MySlide As Slide
Dim pres As Presentation, shp As Shape
Dim i As Integer, boo As Boolean
Dim iDate As Date
    
DatumInvoeren:
    iDate = InputBox("Typ een startdatum", "Datum invoer", Date)
    If Not IsDate(iDate) Then
        MsgBox "Dit is geen goede datum, probeer het nog een keer.", vbOKOnly
        GoTo DatumInvoeren
    End If
    Set myDocument = ActivePresentation.Slides(1)
    Set pres = ActivePresentation
    For Each sld In pres.Slides
        i = i + 1
        Set MySlide = pres.Slides(i)
        For Each shp In MySlide.Shapes
            If shp.Name = "Red_Square" Then
                boo = True
                Exit For
            End If
        Next shp
        If boo = True Then Exit For
    Next sld
    If boo = True Then
        i = 0
        For Each sld In pres.Slides
            i = i + 1
            Set MySlide = pres.Slides(i)
            For Each shp In MySlide.Shapes
                If shp.Name = "Red_Square" Then
                    shp.TextFrame.TextRange.Text = iDate + i
                    Exit For
                End If
            Next shp
        Next sld
    Else
        i = 0
        For Each sld In pres.Slides
            i = i + 1
            Set MySlide = pres.Slides(i)
            With MySlide.Shapes.AddShape(Type:=msoShapeRectangle, _
                Top:=450, Left:=100, Width:=200, Height:=50)
                .Name = "Red_Square"
                .Fill.ForeColor.RGB = RGB(255, 0, 0)
                .TextFrame.TextRange.Text = iDate + i
            End With
        Next sld
    End If

End Sub
 
Perfect Octafish !
Dat ik het tekstvak enkel na het maken van de presentatie mag maken is eigenlijk geen probleem; net wat u aangeeft! Daar valt heus wel mee te leven.

Nu enkel nog en naam van de dag voor de datum zetten :o en u maakt me een gelukkig man! :thumb:
 
Heb je nog meer wensen? Dan is het handiger als je die bundelt, pakken we ze in één keer op. Scheelt jou tijd, en mij :D
Code:
                shp.TextFrame.TextRange.Text = Format(iDate + i, "dddd dd-mm-yyyy")
 
Ik dacht dat al deze wensen al werden opgesomd (cfr 19/12/2014) :)

De aanpassing werkt trouwens uitstekend. Bedankt voor het aanreiken van de oplossing. Hier zit nu een gelukkig man!:cool:

deze vraag is dus opgelost.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan