Excel bestanden in Powerpoint automatisch laten updaten (misschien met VBA?)

Status
Niet open voor verdere reacties.

GJvD

Gebruiker
Lid geworden
13 nov 2011
Berichten
16
Ik heb veel gezocht op Google en op dit forum maar alle oplossingen die ik voorbij zag komen werken op de 1 of andere manier niet, voorbeeld:
Sub Auto_ShowBegin()
MsgBox "test"
ActivePresentation.UpdateLinks
SlideShowWindows(1).View.Next
End Sub
Als ik deze macro met titel Auto_ShowBegin aanmaak krijg ik bij testen meteen een foutmelding, en zo is dat bij alle "oplossingen" die ik uitgeprobeert heb.
In bovenstaand voorbeeld blijft het hangen op "SlideShowWindows(1)."

Dus vraag is, heeft iemand een werkende methode om een Excel weergave (die ik via Invoegen/Bestand gebruiken -> bladeren en invoegen ) automatisch te updaten als de waarden in het
Excel bestand gewijzigd zijn?.
Nu doe ik dat steeds met de hand door op elke sheet in Powerpoint op het betreffende Excel bestand te dubbeklikken en zo de meest recnte data op te halen, dat moet makkelijker kunnen.

Gebruik MS office 2003
Alvast bedank G-J
 
Hallo GJ !

Als ik het goed begrepen heb, heb je te veel werk om de Excel-gegevens in een Powerpoint-presentatie manueel te updaten en wil je een macro om dat te automatiseren.

In feite begrijp ik dat niet zo goed. Als je in gelijk welk MS-office-onderdeel gegevens uit een ander onderdeel importeert en linkt, dan worden die gegevens automatsch aangepast als de brongegevens gewijzigd worden. Dat is het DDE-pricipe.

Bij wijze van voorbeeld vind je in bijlage een pdf-bestand van de werkwijze. Als men het ppt-bestand opent vraagt Office om de links te Updaten. Als men daar op klikt worden alle gelinkte gegevens geactualiseerd.

Grtz,
MDN111.
 

Bijlagen

  • test1.pdf
    79,4 KB · Weergaven: 378
  • test2.pdf
    89,7 KB · Weergaven: 267
Beste MDN111, wat jij beschrijft klopt, ik heb de koppelingen van Excel in Powerpoint gewijzigd want die had ik niet goed aangelegd.
Ik heb ze nu zo gemaakt (link) zoals jij dat ook al aangeeft, dan krijg je bij openen van Powerpoint i.d.d. de vraag de links te updaten.
Nu heb ik in de Excel bestanden een corvee rooster gemaakt wat namen weergeeft o.b.v. de huidige datum =vandaag()
De Powerpoint presentatie draait continu op een monitor in de werkplaats met diverse mededelingen en dus ook dit corvee rooster.
Het komt voor dat de presentatie niet gesloten wordt maar b.v. 2 weken onveranderd doordraait en dat wilde ik "automatiseren".
Nu heb ik er weer een script (macro) in gezet maar dat werkt ook niet als je die macro niet tussentijds aanzet.
Ik zoek dus een methode / macro die als de presentatie loopt "continu" de links checkt op wijzigingen.
Ik heb als v.b. ook een internet website pagina ingevoegd met LiveWeb en die pakt wel steeds de meest verse versie.

Hopelijk ben ik nu wat duidelijker in wat mijn bedoeling is, wel bedankt voor de tip van linken want dat had ik verkeerd gedaan.


Bekijk bijlage Update links.doc
 
Dag GJ !

Zoals je het nu beschrijft is het een flink stuk duidelijker.

Je wil dat Powerpoint automatisch de nieuwe gegevens toont zodra Excel aangepast wordt, en dat terwijl de Powerpoint continue open blijft. Volgens mij impliceert dat een soort timer die na een bepaald tijdsinterval de links actualiseert. Ik heb op het www gezocht maar een timer in Powerpoint-VBA heb ik niet gevonden.

Men zou het ook kunnen bekijken vanuit Excel. Dat wil zeggen: bij het wijzigen van de Excel-gegevens moet de Powerpoint aangepast worden. Dat is redelijk gemakkelijk te realiseren vanuit Excel.

In bijlage twee bestanden: test.doc en test.xls. Zet die in dezelfde folder en wijzig de extensie van test.doc naar test.ppt (het is in feite een ppt-bestand maar dan kan ik niet als bijlage uploaden).

Open eerst test.ppt en dan test.xls. Breng een wijziging aan in de Excel-tabel en klik op de knop. De tabel in Powerpoint wordt geactualiseerd.

Misschien is dat een mogelijke denkpiste.

Grtz,
MDN111.
 

Bijlagen

  • test.doc
    69 KB · Weergaven: 285
  • Test.xls
    22,5 KB · Weergaven: 342
Laatst bewerkt:
Beste MDN111, even een terugkoppeling over wat ik nu gedaan heb en hoe dit loopt.
Vandaag ging een nieuwe roosterdag in en heb de Powerpoint gisteren niet afgesloten maar vandaag gewoon weer afgespeeld.
Het Excel bronbestand ook niet geopend en de sheet waar het rooster op gekoppeld staat werd niet automatisch aangepast.
Dat had ik al verwacht dus had een oplossing achter de hand die ik ook ergens gelezen had.
Gewoon een ontzichtbare knop op betreffende sheet gemaakt, deze gekoppeld aan de macro van eerdere bijlage en deze op die manier gestart.
Na het verversen op deze manier werden de gegevens wel aangepast zonder dat het Excel bronbestand geopend hoefde te worden.
Want die rekent op basis van de formule =vandaag() alles door en dit ging goed zonder Excel te openen.

Ik had het graag zo gehad dat ik dat handmatig verversen ook niet hoefde te doen maar kennelijk is dat net 1 stap te hoog gegrepen.
Dus wat mij betreft kan ik er op deze manier mee leven.

Dus als niemand met een zelf startende macro / of andere oplossing komt denk ik dat dit het best haalbare is.
 
Dag GJ !

Blijkbaar heb ik toch nog niet goed begrepen hoe de zaak in elkaar zit.

Ik heb al je posts nog eens bestudeerd en ik kom tot het volgende scenario:

  1. Je hebt een Excel-bronbestand met een tabel waarvan de gegevens wijzigen in functie van de datum van vandaag.
  2. Je ppt-bestand bevat een tabel die gelinkt is aan de Excel-tabel. Dit ppt-bestand wordt zelden of nooit gesloten.
  3. De wijzigingen die je aan het bronbestand aanbrengt moeten niet onmiddellijk weerspiegeld worden in de ppt, maar wel op het moment dat de datum van vandaag wijzigt.

Kan u bevestigen of dit het echte scenario is? Of loopt het toch nog anders?

Grtz,
MDN111.
 
Er is hele goede software die dynamische presentaties laat zien, en dat is volgens mij wat je wilt. Ik heb zelf prima ervaringen met DataPoint. Voor een bedrijf moeten die kosten wel op te hoesten zijn :).
 
@Octa

Ik ben bang dat deze suggesties geen zoden aan de dijk zetten.
Het Excelbestand wordt nl. niet gewijzigd. Het gaat erom dat bij een nieuwe datum de resultaten van formules worden aangepast.
Mij lijkt een Application.Ontime procedure die zowel het Excelbestand als de powerpointpresentatie ververst het meest voor de hand liggend.
 
@snb
Dus vraag is, heeft iemand een werkende methode om een Excel weergave (die ik via Invoegen/Bestand gebruiken -> bladeren en invoegen ) automatisch te updaten als de waarden in het
Excel bestand gewijzigd zijn?.
De data in de gegevensbestanden worden dus wél gewijzigd! En dat is het mooie van (in ieder geval) de DataPoint tool dat je dat dus prima zo kunt regelen. Wij hebben hem zelf in een kiosk presentatie gebruikt waarbij keurig netjes alle data live werden bijgewerkt. Ook als je de presentatie continue laat lopen. Volgens mij is dat ook de bedoeling.
Maar het werkt allemaal via add-ins, dus het moet wel te programmeren zijn. Zeker voor jou :).
 
Het lijkt mij zeker doenbaar om het te programmeren, op voorwaarde dat er een slide show draait.
Men kan een class module creëren met daarin:

Code:
Option Explicit
Public WithEvents App As PowerPoint.Application

Private Sub App_SlideShowNextSlide(ByVal Wn As SlideShowWindow)
   MsgBox Application.ActivePresentation.Slides.Count   'dit is slechts bij wijze van (snel) voorbeeld.
End Sub

Vervolgens in een "gewone" module naar het object verwijzen:

Code:
Option Explicit

Dim X As New EventClassModule
Sub InitializeApp()
    Set X.App = Application
End Sub

Als men de procedure InitializeApp() start, en men start dan de slide show, dan wordt de event getriggerd telkens een andere slide in beeld komt. Deze code werkt, heb ik getest. Als we de lijn MsgBox Application.ActivePresentation.Slides.Count vervangen door ActivePresentation.UpdateLinks, dan vermoed ik dat het zal werken. Vooraleer ik dat verder uitzoek moet ik eerst zekerheid hebben over het scenario van GJvD, want als die bijvoorbeeld steeds dezelfde slide in beeld laat, dan zal zoiets niet functioneren, denk ik.

Grtz,
MDN111.
 
Even laatste stand van zaken terugkoppelen

Aan MDN111
1.Je hebt een Excel-bronbestand met een tabel waarvan de gegevens wijzigen in functie van de datum van vandaag. KLOPT
2.Je ppt-bestand bevat een tabel die gelinkt is aan de Excel-tabel. Dit ppt-bestand wordt zelden of nooit gesloten. KLOPT
3.De wijzigingen die je aan het bronbestand aanbrengt moeten niet onmiddellijk weerspiegeld worden in de ppt, maar wel op het moment dat de datum van vandaag wijzigt. KLOPT

Aan OctaFish
Het tooltje van http://skp.mvps.org/updtlinks.htm gehaald en dit lijkt te werken als ik de data in Excel bestand aanpas, weet alleen niet of het op basis van =vandaag() helemaal zelf gaat doen.
Dat is nog even afwachten dus ik moet alles even met rust laten en laten draaien en kijken wat er gebeurt.

Laat het weten als ik meer weet.

Vooral iedereen bedankt die er mee bezig is, het lijkt de goede kant op te gaan :thumb:
 
Het is inderdaad te programmeren.

Omwille van de uitdaging kon ik het niet laten om daarop nog even verder door de bomen. Wat er met het Excel-bestand exact gebeurt is niet duidelijk, maar er zit iets in dat bepaalde gegevens aanpast in functie van de datum en het gaat over een soort dienstrooster. Uit de vorige posts denk ik af te leiden dat er op de monitor waarop het .ppt-bestand draait, berichten getoond worden en ook een dienstrooster dat met het rooster in het Excel-bestand gelinkt is.

Zulke situatie heb ik in z'n aller-eenvoudigste vorm nagebootst. In het Excel-bestand in bijlage staat een rooster dat met de tabel op de 3de slide van het .ppt-bestand gelinkt is. In het Excel-bestand zit een eenvoudige macro die de tabel aanpast als een bepaald tijdstip verstreken is (ik heb een tijdstip gebruikt voor de test-doeleinden want het gebruik van een datum zou onpraktisch zijn). Het komt er op neer dat de tabel in sheet "A" aangepast wordt telkens de macro gestart wordt.

In het .ppt-bestand zit dus een class-module en een gewone module met een sub om de events te activeren. Verder zit in de class module de eventprocedure die aangeroepen wordt, telkens een nieuwe slide getoond wordt in de slideshow. De werkwijze is:

  1. Het .ppt-bestand openen (update links mag, maar hoeft niet).
  2. De path in de macro "App_SlideShowNextSlide()" aanpassen.
  3. De macro "InitializeApp()" laten draaien (events activeren).
  4. De slideshow starten.
  5. De sub "App_SlideShowNextSlide()" opent het Excel-bestand, tenzij het al open was, lanceert de Excel-macro, doet een update van de .ppt-links en sluit de zaak af. Op de slideshow ziet men de tabel op de 3de slide wijzigen telkens die in beeld komt.

Mits aanpassing van de macro's kan men de gewenste acties bereiken zonder gebruik te maken van een Add-In.

Grtz,
MDN111.
 

Bijlagen

  • rooster.xls
    32,5 KB · Weergaven: 154
  • rooster(ppt).zip
    18,3 KB · Weergaven: 176
Het enige wat ik nodig heb in het Excelwerkboek in de codemodule van thisworkbook:

Code:
Dim ververs

Private Sub Workbook_Open()
    M_power
End Sub

Sub M_power()
    Sheet1.Calculate
    ververs = DateAdd("s", 5, Now())
    Application.OnTime ververs, "Thisworkbook.M_power"
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Application.OnTime ververs, "ThisWorkbook.M_power", , False
End Sub

De powerpointpresentatie bevat 1 slide met een koppeling naar een deel van het werkblad; maar verder geen enkele VBA-code.
Dat loopt als een zonnetje (in de voorbeeldcode verversing per 5 seconden).
 
Sorry, hier stond een antwoord op een foutieve topic. Copy-paste error.
Kan iemand met de vereiste forumbevoegdheden dit bericht deleten, a.u.b.?
Dank u.
Grtz,
MDN111.
 
Laatst bewerkt:
@snb:

Ik denk dat ik je code begrijp, behalve de laatste drie lijnen. Wat is de bedoeling om de procedure met onTime nog eens aan te roepen bij het sluiten van het bestand?

Jouw methode vereist, denk in, dat het Excel-bestand geopend wordt en geopend blijft. In z'n post van 15 januari meldt GJvD dat hij dat niet wil. Er staat o.a.: "...zonder dat het Excel bronbestand geopend hoefde te worden..." en "...zonder Excel te openen...". Vandaar m'n aanpak om dat vanuit de Powerpoint te bekijken en niet vanuit Excel.

Grtz,
MDN111.
 
Status probleem

Beste allemaal, ben al 2 weken op een training en hierdoor geen mogelijkheid gehad om de idieeen die jullie hebben aangedragen uit te proberen.
Nog 2 weken en dan heb ik hier weer de tijd voor want dan is de training afgelopen.
Heb wel aan een collega gevraagd of wat ik als laatste gemaakt heb werkt (Gewoon een ontzichtbare knop op betreffende sheet gemaakt, deze gekoppeld aan de macro van eerdere bijlage en deze op die manier gestart).
Dus niet want het wordt niet in de PowerPoint presentatie geupdate als je niets doet, wel als je op een macro klikt die het updaten verzorgt.
Ik hou jullie op de hoogte als ik weer de tijd heb om met de door jullie aangedragen voorstellen aan de gang te gaan.
 
Laatst bewerkt:
Laatste stand van zaken

Er is besloten niet verder te gaan met het automatisch bijwerken van de Excel koppelingen in Excel.
De methode zoals deze nu werkt (met snelkoppeling naar macro) wordt als prima werkbaar ervaren.

Dus dank voor alle input, ik zal het onderwerp sluiten als opgelost.

Gert-Jan
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan