Returning a constant name instead of its value

J

Jeff

I have a powerpoint slide with a table. The following code returns the value 19 which indicates the
shape is a table

MsgBox ActivePresentation.Slides(1).Shapes(1).Type

The shape types are enumerated under the MsoShapeType class and the value of 19 is assigned to
msoTable. Is there a simple command that will return "msoTable" instead of it's value of 19?

Thanks...

Jeff
 
D

David M. Marcovitz

I don't know for sure, but I don't think that is possible. I believe that
the compiler automatically converts any constants (like msoTable) to
their corresponding value (19 in this case). When it is running,
PowerPoint/VBA has no way of knowing that the 19 it is looking at came
from msoTable instead of msoSomethingElse. You can, of course, compare
the value returned to msoTable, rather than 19 as in

If ActivePresentation.Slides(1).Shapes(1).Type = msoTable Then
msgBox "Look ma! It's a table, an msoTable, that is."
Else
msgBox "This ain't no darn table."
End If

--David

--
David M. Marcovitz
Director of Graduate Programs in Educational Technology
Loyola College in Maryland
Author of _Powerful PowerPoint for Educators_
http://www.loyola.edu/education/PowerfulPowerPoint/
 
J

Jeff

WOW, thanks for the fast reply! (I read your book, by the way.) I'm writing a procedure that will
list all the shapes in a given presentation. Right now, the only way I can figure to do it is to
retype all the mso shape constants into a Select Case statement. I was hoping there was a better
way to work with an enum type without having to type all those constants into a VBA procedure.

I wrote a simple Access program that gives multiple choice quizzes and I wondered if I could do the
same thing in Powerpoint. Your book came out just in time and it was fun reading, but unfortunately
it was made for total beginners who only have a handful of questions to present instead of hundreds
like I have. All my questions are in an Access table. I don't know if I should write it all in
Powerpoint or do it in Access and call the Powerpoint objects when needed. I'd rather just do it in
Powerpoint. Seems like it would be less clunky that way. Do you know anyone who's done a multiple
choice quiz program in Powerpoint where the questions are retrieved from an Access table?

Jeff
 
D

David M. Marcovitz

Yes, I think the Case statement is the way you will have to go, unless
someone else here has better information.

Bill Foley is the other PowerPoint/VBA Quiz expert here. I don't know if he
has done what you want with linking PowerPoint and Access. It is certainly
possible, but I have never done it.

I have created quizzes by reading the questions from a text file. I could
imagine that it wouldn't be too hard to create an Access database of quiz
questions, use queries to pick the questions you want and dump the results
to a text file that could be read by PowerPoint. This is probably a
convoluted way to do this, but if you're interested in pursuing it, here is
some simple code that reads the first line of a text file as the question
and the next two lines as the answers and then adjusts the question on
slide 2:

Sub AdjustQuestion()
Const ForReading = 1, ForWriting = 2, ForAppending = 8
Dim fs, f
Dim theQuestion As String
Dim answer1 As String
Dim answer2 As String
Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.OpenTextFile("mytestfile.txt", ForReading, TristateFalse)
theQuestion = f.readline
answer1 = f.readline
answer2 = f.readline
ActivePresentation.Slides(2).Shapes(1).TextFrame.TextRange.Text _
= theQuestion
ActivePresentation.Slides(2).Shapes(2).TextFrame.TextRange.Text _
= answer1
ActivePresentation.Slides(2).Shapes(3).TextFrame.TextRange.Text _
= answer2

f.Close
End Sub

I'm glad you enjoyed my book. I also would be interested in someone taking
this to the next level and writing a more advanced book, but, for the time
being, that someone isn't me.

--David

--
David M. Marcovitz
Director of Graduate Programs in Educational Technology
Loyola College in Maryland
Author of _Powerful PowerPoint for Educators_
http://www.loyola.edu/education/PowerfulPowerPoint/
 
L

Lance Wynn

You may want to look into the TypeLib Information library (tlbInf32.dll). I
don't know how well it will work through VBA, but it should do fine, VBA is
just like any other ActiveX language I think.

I've used it to enumerate constants, enums, and method names. I haven't
found a lot of great documentation for it though, but check on google, and
you should find some sample code.

Lance


Yes, I think the Case statement is the way you will have to go, unless
someone else here has better information.

Bill Foley is the other PowerPoint/VBA Quiz expert here. I don't know if he
has done what you want with linking PowerPoint and Access. It is certainly
possible, but I have never done it.

I have created quizzes by reading the questions from a text file. I could
imagine that it wouldn't be too hard to create an Access database of quiz
questions, use queries to pick the questions you want and dump the results
to a text file that could be read by PowerPoint. This is probably a
convoluted way to do this, but if you're interested in pursuing it, here is
some simple code that reads the first line of a text file as the question
and the next two lines as the answers and then adjusts the question on
slide 2:

Sub AdjustQuestion()
Const ForReading = 1, ForWriting = 2, ForAppending = 8
Dim fs, f
Dim theQuestion As String
Dim answer1 As String
Dim answer2 As String
Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.OpenTextFile("mytestfile.txt", ForReading, TristateFalse)
theQuestion = f.readline
answer1 = f.readline
answer2 = f.readline
ActivePresentation.Slides(2).Shapes(1).TextFrame.TextRange.Text _
= theQuestion
ActivePresentation.Slides(2).Shapes(2).TextFrame.TextRange.Text _
= answer1
ActivePresentation.Slides(2).Shapes(3).TextFrame.TextRange.Text _
= answer2

f.Close
End Sub

I'm glad you enjoyed my book. I also would be interested in someone taking
this to the next level and writing a more advanced book, but, for the time
being, that someone isn't me.

--David

--
David M. Marcovitz
Director of Graduate Programs in Educational Technology
Loyola College in Maryland
Author of _Powerful PowerPoint for Educators_
http://www.loyola.edu/education/PowerfulPowerPoint/
 
J

Jonathan West

Hi Jeff,

MZ-Tools 3.0 (free download from http://www.mztools.com/v3/mztools3.htm)
includes a "Select Case Assistant" If you position the cursor on a Select
Case statement where the variable given is an Enum, then the Select Case
assistant will display a dialog listing all the possible values for the
enum, allowing you to pick which one(s) to include in the block.

You can then put the necessary code below the relevant Case statements to
return the name of the enum.
 
Top