dynamic embedded interactive menus in powerpoint presentation: Part II the crude solution

  • Thread starter Incredulous Dreamer
  • Start date
I

Incredulous Dreamer

OK, Here is my first attempt to solve the problem I posted a couple days
back. It is functional but I am sure it is not as elegant as it could be,
because I am just a code hacker. My thanks to Steve Rindsberg and David
Marcovitz for setting me down the path.

Some troubles I had and what I learned:
1) It was necessary to be able to allow the user to toggle the selection
boxes "on and off" repeatedly. So, the only thing I could think of to do
was update the box status for all the boxes and rewrite the entire text file
every time the user changed ANY selection box. If there is a more elegent
way to do this, please let me know.
2) Now I believe I know why David used the
Set fs = CreateObject("Scripting.FileSystemObject")
Set answerFile = fs.CreateTextFile("C:\Documents .......
methods in his quiz code. That seems to be the only method I could use that
would overwrite the file each time. I couldn't find a way to do that with
the "open" method.
3) I don't "read" the value for the comboBox yet, I haven't figured out
that command yet but I hope to accomplish that without much additional
grief.

Next I need to bring the txt file created into specific cells in a
spreadsheet. In future versions some of the response may be numbers but I
assume I can deal with that as well.

The code follows below. Improvements are welcome.

Private Sub UserForm_Initialize()
ComboBox1.Clear
ComboBox1.ColumnCount = 2
ComboBox1.BoundColumn = 2
ComboBox1.TextColumn = 1

ComboBox1.AddItem "Low"
ComboBox1.AddItem "Medium"
ComboBox1.AddItem "High"

ListBox1.AddItem "Beam Blanker"
ListBox1.ColumnCount = 1
ListBox1.BoundColumn = 1
ListBox1.TextColumn = 4

End Sub
Public Sub ListBox1_Change()
Set fs = CreateObject("Scripting.FileSystemObject")
Set answerFile = fs.CreateTextFile("C:\Documents and
Settings\Desktop\powerpoint VB files\answers.txt", True)
answerFile.Close
ListBox2.AddItem "Electron Lithography"
ListBox2.ColumnCount = 1
ListBox2.BoundColumn = 1

Open "C:\Documents and Settings\Desktop\powerpoint VB
files\answers.txt" For Output As #1

If ListBox1.Selected(0) = True Then

Write #1, "Beam Blanker"
Else
Write #1, "No Beam Blanker"

End If

If ListBox2.Selected(0) = True Then
Write #1, "Electron Lithography"
Else
Write #1, "No Electron Lithograpy"
End If
If ListBox3.Selected(0) = True Then
Write #1, "Ion Lithography"
Else
Write #1, "No Ion Lithography"
End If
If ListBox4.Selected(0) = True Then
Write #1, "TEM Sample Preparation"
Else
Write #1, "No TEM Sample Prep"
End If

Close #1
End Sub
Private Sub ListBox2_Change()
Set fs = CreateObject("Scripting.FileSystemObject")
Set answerFile = fs.CreateTextFile("C:\Documents and
Settings\Desktop\powerpoint VB files\answers.txt", True)
answerFile.Close

ListBox3.AddItem "ion Lithography"
ListBox3.ColumnCount = 1
ListBox3.BoundColumn = 1
Open "C:\Documents and Settings\Desktop\powerpoint VB
files\answers.txt" For Output As #1
If ListBox1.Selected(0) = True Then

Write #1, "Beam Blanker"
Else
Write #1, "No Beam Blanker"

End If

If ListBox2.Selected(0) = True Then
Write #1, "Electron Lithography"
Else
Write #1, "No Electron Lithograpy"
End If
If ListBox3.Selected(0) = True Then
Write #1, "Ion Lithography"
Else
Write #1, "No Ion Lithography"
End If
If ListBox4.Selected(0) = True Then
Write #1, "TEM Sample Preparation"
Else
Write #1, "No TEM Sample Prep"
End If

Close #1
End Sub
Private Sub ListBox3_Change()
Set fs = CreateObject("Scripting.FileSystemObject")
Set answerFile = fs.CreateTextFile("C:\Documents and
Settings\Desktop\powerpoint VB files\answers.txt", True)
answerFile.Close
ListBox4.AddItem "TEM Sample Preparation"
ListBox4.ColumnCount = 1
ListBox4.BoundColumn = 1
Open "C:\Documents and Settings\Desktop\powerpoint VB
files\answers.txt" For Output As #1
If ListBox1.Selected(0) = True Then

Write #1, "Beam Blanker"
Else
Write #1, "No Beam Blanker"

End If

If ListBox2.Selected(0) = True Then
Write #1, "Electron Lithography"
Else
Write #1, "No Electron Lithograpy"
End If
If ListBox3.Selected(0) = True Then
Write #1, "Ion Lithography"
Else
Write #1, "No Ion Lithography"
End If
If ListBox4.Selected(0) = True Then
Write #1, "TEM Sample Preparation"
Else
Write #1, "No TEM Sample Prep"
End If

Close #1
End Sub
Private Sub ListBox4_Change()
Set fs = CreateObject("Scripting.FileSystemObject")
Set answerFile = fs.CreateTextFile("C:\Documents and
Settings\Desktop\powerpoint VB files\answers.txt", True)
answerFile.Close
Open "C:\Documents and Settings\Desktop\powerpoint VB
files\answers.txt" For Output As #1

If ListBox1.Selected(0) = True Then

Write #1, "Beam Blanker"
Else
Write #1, "No Beam Blanker"

End If

If ListBox2.Selected(0) = True Then
Write #1, "Electron Lithography"
Else
Write #1, "No Electron Lithograpy"
End If
If ListBox3.Selected(0) = True Then
Write #1, "Ion Lithography"
Else
Write #1, "No Ion Lithography"
End If
If ListBox4.Selected(0) = True Then
Write #1, "TEM Sample Preparation"
Else
Write #1, "No TEM Sample Prep"
End If

Close #1
End Sub
 
I

Incredulous Dreamer

Well, I am having a few more problems understanding the information you
provided.

I tried running both the examples you provided a link to in the message
below and neither ran successfully, both having trouble with the same part
of the code:
Set oShape = ActiveWindow.Selection.ShapeRange(1)

both errors are similar:
1) Selection (unknown member): Invalid request. Nothing appropriate is
currently selected.

2) Selection (unknown member): Invalid request. This view does not support
selection.

I also have two questions:

1) When running in presentation mode how do I get the code (macro) to run
automatically when the slide is brought up in the presentation. In other
words, I'd like the code to run either when the presentation is started
automatically, or when the slide on which the code module is in, is
selected.
2) When I am trying to read, write or manipulate the contents of a listbox
or combobox, I don't understand the code to reference that object by name
(rather than being selected by the mouse). That may be the problem (or one
of) the code and my errors. It looks like the code is based upon an active
window and the currently selected object. What I want is to refer to a
specfic object (i.e., ListBox_1 ) and manipulate that object (read the name
of an item in that box that was selected for instance, or the text name of
that object. Also, my sub routine " Sub Initialize UserForm() doesn't
appear in any list of macros.

Clearly there are gaps in my knowledge and I believe I am missing something
very basic. Thanks for your patience.

-Ed
 

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

Top