Solved

Item name not found in shapes collection

Posted on 2013-06-12
7
2,635 Views
Last Modified: 2013-06-18
Hi,

I am an experienced VBA programmer but have only just begun using VBA in Powerpoint 2010.  I am trying to set write code to a) set two shape object variables to particular shapes on the slide, b) check the value of a checkbox and c) to show or hide the two shapes depending on the value of the checkbox.

I have named the two shapes "ProspectText" and "ProspectCallout" and the checkbox (ProspectCheck).

My initial code (below) to set the shape objects is generating an error that says something like "Item "ProspectText" not found in shapes collection."

Dim oText As Shape
Dim oCallout As Shape
Dim oCheck As Boolean
    Set oText = ActivePresentation.Slides(2).Shapes("ProspectText")
    Set oCallout = ActivePresentation.Slides(2).Shapes("ProspectCallout")
    oCheck = ActivePresentation.Slides(2).Shapes("ProspectCheck")
    If oCheck = True Then
        ShowShapes oText, oCallout
    Else
        HideShapes oText, oCallout
    End If
End Sub

I have checked in the Selection and Visibility pane and through code to ensure the names are correct.

Does anyone have any ideas on what to try?

Thanks!
0
Comment
Question by:msblane
  • 4
  • 3
7 Comments
 
LVL 23

Expert Comment

by:JSRWilson
ID: 39240769
Are these PowerPoint shapes or Items from the Control Toolbox? Probably worth posting a simple example AND what you want to acheive because non native activx shapes need to be referenced differently.

This line will return a Shape and since oCheck is declared as Boolean it is bound to error.
oCheck = ActivePresentation.Slides(2).Shapes("ProspectCheck")

If it is an ActivX checkBox you need to say:

oCheck = ActivePresentation.Slides(2).Shapes("ProspectCheck").OLEFormat.Object.Value

Almost certainly you would want to put the checkbox routine into the checkbox Change event.

Private Sub ProspectCheck_Click()
If Me.ProspectCheck.Value = True Then

Else

End If
End Sub
0
 

Author Comment

by:msblane
ID: 39251408
Hi,

The two shapes are PowerPoint shapes (one is a callout, the other a text box).  The checkbox is a form control (but not an activex).  I understand what you are saying about putting it on the checkbox change event and will do that.  However, the problem with the code still remains - it will not recognize the named shapes as shapes.

Thanks for your help!
0
 
LVL 23

Expert Comment

by:JSRWilson
ID: 39251418
And you are sure the shapes are on Slide 2?

If you run this does it return the correct shape names.

Sub chexNames()
Dim strReport As String
Dim oshp As Shape
For Each oshp In ActivePresentation.Slides(2).Shapes
strReport = strReport + oshp.Name & vbCrLf
Next oshp
MsgBox strReport
End Sub
0
Backup Your Microsoft Windows Server®

Backup all your Microsoft Windows Server – on-premises, in remote locations, in private and hybrid clouds. Your entire Windows Server will be backed up in one easy step with patented, block-level disk imaging. We achieve RTOs (recovery time objectives) as low as 15 seconds.

 

Author Comment

by:msblane
ID: 39255549
I have run various pieces of code (see the most recent below) to check the names, and they all found it, but your code does not.  In fact the names in the Selection and Visibility pane are quite different from those listed in strReport.

Now I am very confused!  What am I missing?

Public Sub RenameShapes()
Dim s As Integer, NewName As String

With ActiveWindow.Selection.SlideRange
    For s = 1 To .Shapes.Count
        .Shapes(s).Select ' So you can see the object in question
        NewName = InputBox(.Shapes(s).Name) ' Tell what current name it is and ask for new name
        If Len(NewName) > 0 Then .Shapes(s).Name = NewName ' If you typed a new name, apply it
    Next s ' 1 To .Shapes.Count
End With
End Sub

Sub identifyme()
On Error GoTo errhandler
MsgBox "The shape is named " & ActiveWindow.Selection.ShapeRange.Name _
& Chr$(13) & "The slide is named " & ActiveWindow.Selection.SlideRange.Name
Exit Sub
errhandler:
MsgBox "There's an error, maybe you've selected more that one shape?"
End Sub
0
 
LVL 23

Expert Comment

by:JSRWilson
ID: 39255832
My code should return the correct names. Are you SURE the shapes are on Slide 2. (That's the second slide not a name you recovered from code.)

If you want to send me a couple of slides I can take a look johnATSIGNHEREpptalchemy.co.uk

Add a note to remind me what it's about.

You probably know this but you don't need code to name shapes. Just select the name in the selection pane and type.

John
0
 

Author Comment

by:msblane
ID: 39255866
You have hit the nail on the head.  When I began this exercise, it was slide 2.  Now it's slide 1.  Sorry to waste your time!  Can you tell me how I rename the slides so that I can refer to them more stably?

Thanks so much for your help!

MSB
0
 
LVL 23

Accepted Solution

by:
JSRWilson earned 500 total points
ID: 39255950
You can name the slides in code

Sub name_Slide()
Dim strName As String
strName = InputBox("Name?")
ActiveWindow.Selection.SlideRange(1).Name = strName
End Sub

Sub chex()
MsgBox ActivePresentation.Slides("myName").Shapes(1).Name
End Sub

I would use the SlideID though this doesn't change in normal use. You need to read the ID first though (just once)


Sub getID()
MsgBox ActiveWindow.Selection.SlideRange(1).SlideID
End Sub
Sub getslideByID()
Dim osld As Slide
Set osld = ActivePresentation.Slides.FindBySlideID(257)' put in the correct ID
MsgBox osld.Shapes(1).Name 'now use osld to refer to the slide
End Sub
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
dialer.exe 4 58
send as works in OWA, but not outlook client 8 105
Is there a 32-bit & 64-bit version of Mac Office 2016? 8 64
PowerPoint 2013 Issues 9 29
Setting the Scene Animations in PowerPoint are a great tool to convey messages when used carefuly with the content of your slides. There are plenty of animation effects and options, including a Repeat feature for individual animation effects. …
Many programs have tried to outwit PowerPoint in terms of technology and skill. These programs, however, still lack several characteristics that PowerPoint has possessed from the start. Here's why PowerPoint replacements won't entirely work for desi…
This video teaches viewers how to fit pictures into slides, crop and remove backgrounds, and alter photos to look more professional.
The viewer will learn how to use a discrete random variable to simulate the return on an investment over a period of years, create a Monte Carlo simulation using the discrete random variable, and create a graph to represent the possible returns over…

910 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

16 Experts available now in Live!

Get 1:1 Help Now