Connecting PowerPoint and Excel - vba

How do I connect PowerPoint and Excel such that each slide in the PowerPoint slideshow shows the next Excel cell in the cell in column A of Excel?

Well, it's a bit of programming, but basically you'll want to:
Set a reference to Excel in
PowerPoint VBE.
Figure out where in PowerPoint you
want the Excel cell text to appear,
like a Title placeholder.
Create a SlideChange event in a
class and with with the slide
change, read the index of the slide
and map it to the next cell from an
array of cells.
Place that mapped index text in your
slide shape when the slide changes.
Create a sub that initializes that
fires the event monitoring - either
from a Ribbon button, manually from
F5 or via Auto_Open.
If you come back with code that you're having problems with, I'd be happy to consult further.

Related

VBA for Powerpoint: Change Slide in One Powerpoint by Selecting Button in Another

I am a beginner at VBA.
I am designing a somewhat interactive Powerpoint presentation/s. I want to be able to have three separate Powerpoint presentations open that will link together. I have been trying (without success) to create, in VBA, code which will change the current displayed slide on one Powerpoint file by clicking a button in another. I can hyperlink to the set slide but this causes this slide to pop up on the same screen in which it is clicked, despite it being already open in another screen (I don't want this).
Thanks in advance for any help,
Holly
VBA uses an object model that is a huge hierarchy of attributes and functions that represent the application. You can use this model to view and update attributes to get text, resize, and modify the application. You should look at some tutorials to get you started. When editing your code, you can press F2 to see and explore this object model. You can press F8 to run your code line by line (debug mode) and see what is happening.
To your question, you can access the open presentations in the application.presentations object (https://learn.microsoft.com/en-us/office/vba/api/powerpoint.presentations). You could then use a presentation in that list and use the ActiveWindow.View.goToSlide function (https://learn.microsoft.com/en-us/office/vba/api/powerpoint.view.gotoslide). Here is a free tutorial that I've used in my VBA journey (https://www.tutorialspoint.com/vba/index.htm).
PowerPoint has a Presentations collection that contains all currently open presentations. You can get a reference to any of them via Presentations("name") where "name" is the filename of the presentation, sans extension.
So ... assuming you've got three presentations open, a.pptx, b.pptx, c.pptx you can do something like this:
Sub SlideChange()
With Presentations("c")
.SlideShowWindow.View.GotoSlide (3)
End With
End Sub
If you run the above in any of the presentations, it will change the slide show window displaying presentation c to the third slide.

Copy to clipboard button for Powerpoint

I embedded a Powerpoint slide to Sharepoint. It is some kind of guide where you can click on stuff and go back with hyperlinks. There is a front page where you can click hyperlinks to go to slides A, B and C. Unfortunately embedded slides do not allow CTRL C. I would like to create a Powerpoint macro and then assign this to a button, where clicking would copy the TextA on Slide A to user's clipboard.
I tried recording macro on excel and then using it on Powerpoint and it did not work. I'm also curious even if I got the right code for the macro, would it work on an embedded slide? Hyperlinks work.

Hide PowerPoint presentation while VBA macro is running

I have this macro that copies excel tables and charts to power point. However the power point has to be visible for it to work. Unfortunately when it is visible and while the code is running and user touches the slides the program crashes.
I use this code to hide the presentation.
Set pres = Papp.presentatjons.open(path + pptfilename, with window:=msofalse).
It works, unfortunately this code (below) which is needed, needs the window or presentation slide to be open to copy charts and tables to the presentation.
Set ppslide = pres.slides(Papp.activewindow.selection.sliderange.slideindex)
Is there a code that substitute the second code so that I could hide the presentation window while running the program ?
Have a look at http://skp.mvps.org/ppt00033.htm
The code there will help you, but does not allow me to post a copy here

Embed a linked copy of a slide from other Powerpoint presentation in another Powerpoint presentation

The problem is this:
I´ve got two Powerpoint presentations.
I want to link the second slide of one presentation into the another presentation.
How I do this?
I can embed a presentation into another but I want to select the second slide, anyone can help?
You must have two powerpoint files opened.
In the source powerpoint:
Click on the slide preview and copy.
In the target powerpoint:
Create a new slide and then select the home ribbon.
Below paste there are more options, click on paste Special and then Paste Link.
One option must appear: 'Microsoft Powerpoint Slide Object'
Resize the object to fill the entire slide and it´s done.

maintaining image object visibility with vba

i am developing a large non-linear powerpoint which has many sub sections to it. This has necessitated a table of contents slide (TOC). in this slide i am representing each section with its own picture. also on the slide are 2 buttons which let the user switch between images. The buttons do this by setting the appropriate section image to visible and all the others to invisible, so that only one sections image is visible at a time. my goal is to make sure that whenever the user goes back to the table of contents slide that the slide displays the same section image each time, regardless of which section what entered the previous time, i.e. the image for section 1 should be visible whenever the user goes back to the table of contents. how do i go about doing this?
also, if i can find new sources to learn more about syntax and other vba coding, i would be most appreciative.
i already consult:
pptalchemy.co.uk
skp.mvps.org
msdn.microsoft.com
i just cannot find more good sites that will help.
I don't quite understand the situation, but one possibility:
Add another slide before the TOC. You could make it a duplicate of the TOC slide (with the image you want in place).
Instead of linking back to the "real" TOC slide, link to this one instead.
On this slide, add a rectangle that covers the entire slide, make it 99% transparent and give it a Run Macro mouse over action setting.
Have the macro do nothing more than set the image you want on slide 2 to be visible, then jump to slide 2 (the real TOC slide), eg
SlideShowWindows(1).View.GoToSlide(2)
The mouse over macro will trigger as soon as the user moves the mouse, and since that will trigger a jump from one slide to an identical one, it will be invisible to the user.
most of the solution came from [pptalchemy] (http://www.pptalchemy.co.uk/PowerPoint_Auto_Open_Code.html):
I downloaded the custom ui editor for microsoft office
I added the code from ppt alchemy to the custom ui editor for the slide show.
In vba i added the code:
Sub onloadcode()
Debug.Print "Running"
End Sub
Sub OnSlideShowPageChange(ByVal SSW As SlideShowWindow)
If SSW.View.CurrentShowPosition = SSW.Presentation.Slides("TOC").SlideIndex Then
'code here'
end if
end sub
the code executes perfectly now, and i have condensed my table of contents from 9 slides down to 1. Just, don't add features to the code until you have everything in place to accept them. In my case i added the code for text boxes which did not exist yet and that messed up my code a lot. Once i made all of the objects for the code and then added the code it worked perfectly.