"audience specific presentation"

  • Thread starter Thread starter =?ISO-8859-15?Q?Karsten_Vo=DF?=
  • Start date Start date
?

=?ISO-8859-15?Q?Karsten_Vo=DF?=

Hello everybody,

as i am using the german powerpoint version i hope you you can a)
understand me and b) help me...

I care about a big presentation which is being rebuilt every month.

it has implemented several "audience specific presentations" (in german:
zielgruppenorientierte Präsentation).

I recently got requirement to spread one of these specific presentations
and save it into the network.

as i don't want to perform that copy/split manually i am searchiung for
VBA way to do that.

Is anybody here who can help me?

Thx


KV
 
Hi Karsten,

Shyam has a neat bit of code that shows you how to write VBA to save each of
the slides in a presentation out as a series of individual slide
presentations.
http://skp.mvps.org/ppt00036.htm#2

Is this what you need?


--
Bill Dilworth
A proud member of the Microsoft PPT MVP Team
Users helping fellow users.
http://billdilworth.mvps.org
-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
vestprog2@ Please read the PowerPoint FAQ pages.
yahoo. They answer most of our questions.
com www.pptfaq.com
..
 
Thank you so far,

it seems to me that....

--quote
For Each oSld In oPres.Slides
sFilename = (sSlideOutputFolder) & "Slide" & _
Format(oSld.SlideIndex, "000") & ".ppt"
oSld.Export sFilename, "PPT"
---quote end

exports every slide. If i can modify the code in the way only to export
slides from "target group specific audience",that would be best.

Anyone able to help me?

KV
 
Hello Karsten,

You're correct, the code that Bill mentioned will export every slide in a
presentation.

Your "target group specific audience" is a direct translation from the Deutsch
name for the feature, isn't it? I'm guessing that this is what's called
"Custom Slide Shows" in the English version.

If so, something like this will give you the Slide IDs of the slides in a
custom show:

Sub WhoIsInSlideShow()

Dim x As Long
Dim y As Long

With ActivePresentation
With .SlideShowSettings.NamedSlideShows
Debug.Print .Count
For x = 1 To .Count
Debug.Print .Item(x).Name
' .SlideIDs returns an *array* of slide IDs
For y = 1 To UBound(.Item(x).SlideIDs)
Debug.Print .Item(x).SlideIDs(y)
' you'd want to save the slide here
Next
Next
End With
End With

End Sub


Sub SampleHelpCode()
' This is a bit of example code from PPT's help file:

'NOTE - The following code line is NOT optional.
'Can't redim array without this
Dim customShowSlideIDs As Variant
Dim customShowToExpand As NamedSlideShow

customShowName = "Marketing Short Version"
Set customShowToExpand = ActivePresentation.SlideShowSettings _
.NamedSlideShows(customShowName)
slideToAddID = ActiveWindow.View.Slide.SlideID
customShowSlideIDs = customShowToExpand.SlideIDs
numSlides = UBound(customShowSlideIDs)

ReDim Preserve customShowSlideIDs(numSlides + 1)

customShowSlideIDs(numSlides + 1) = slideToAddID
customShowToExpand.Delete
ActivePresentation.SlideShowSettings.NamedSlideShows _
.Add customShowName, customShowSlideIDs

End Sub
 
Hello Steve,

yes, "Custom Slide Shows" is what i meant. Your code can give me arrays
of all slide shows and the contained slideIDs. I added a "save as" in
the first line to be able to rework a new ppt and not to vary the
original one.

Now i want to implement a "delete" for every slide, which is not within
the wanted custom slide show. All what i would have at the end should be
a copy of the original ppt, but only with the slides of the custom slide
show.

Where and how should i add this "delete"?

Thx

KV
 
Hello Steve,

yes, "Custom Slide Shows" is what i meant. Your code can give me arrays
of all slide shows and the contained slideIDs. I added a "save as" in
the first line to be able to rework a new ppt and not to vary the
original one.

Now i want to implement a "delete" for every slide, which is not within
the wanted custom slide show. All what i would have at the end should be
a copy of the original ppt, but only with the slides of the custom slide
show.

Where and how should i add this "delete"?

You'd want to do something like (air code, off top of head, beware):

Dim lCounter as Long
Dim oSl as Slide
Dim sCustomShowName as String

sCustomShowName = "Fill in name here"
' or you could adapt the logic in the original code below to
' step through each custom show ....

' Step backward through the slides collection
For lCounter = ActivePresentation.Slides.Count to 1 Step -1
Set oSl = ActivePresentation.Slides(lCounter)
' Check each slide to see if it's part of the array
For y = 1 To UBound(.Item(sCustomShowName).SlideIDs)
If .Item(x).SlideIDs(y) = oSl.SlideID Then
oSl.Delete
Exit For
End If
Next
Next
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Back
Top