![]() |
|
|
Welcome to the { mindfrost82.com } forums. You are currently viewing our boards as a guest which gives you limited access to view most discussions and access our other features. By joining our free community you will have access to post topics, communicate privately with other members (PM), respond to polls, upload content and access many other special features. Registration is fast, simple and absolutely free so please, join our community today! If you have any problems with the registration process or your account login, please contact contact us. |
|
|||||||
![]() |
|
|
LinkBack | Thread Tools | Search this Thread | Display Modes |
|
|||
|
Determining whether a PPT shape has other shapes within it
I'm trying to write some code that will enumerate all of the shapes on a
slide. Got this part working for the top level shapes, but if a shape is Group or a diagram, or something else, how do I determine whether it has shapes imbedded within it, and if so, how do I iterate through the shapes within that higher level shape? Dale |
|
|||
|
RE: Determining whether a PPT shape has other shapes within it
Dim s As Shape
Set s = ActiveWindow.Selection.ShapeRange(1) If s.Type = msoGroup Then With s For i = 1 To s.GroupItems.Count 's.GroupItems (i) will give you each item Next i End With End If "Dale Fye" wrote: > I'm trying to write some code that will enumerate all of the shapes on a > slide. > > Got this part working for the top level shapes, but if a shape is Group or a > diagram, or something else, how do I determine whether it has shapes > imbedded within it, and if so, how do I iterate through the shapes within > that higher level shape? > > Dale > > > |
|
|||
|
Re: Determining whether a PPT shape has other shapes within it
Will this work for all types of shapes that have other shapes imbedded
within them, or only "Groups"? "vindys" <vindys@discussions.microsoft.com> wrote in message news:8AD02676-2F38-4F6F-9F1B-905E133EB542@microsoft.com... > Dim s As Shape > Set s = ActiveWindow.Selection.ShapeRange(1) > If s.Type = msoGroup Then > With s > For i = 1 To s.GroupItems.Count > 's.GroupItems (i) will give you each item > Next i > End With > End If > > > "Dale Fye" wrote: > >> I'm trying to write some code that will enumerate all of the shapes on a >> slide. >> >> Got this part working for the top level shapes, but if a shape is Group >> or a >> diagram, or something else, how do I determine whether it has shapes >> imbedded within it, and if so, how do I iterate through the shapes within >> that higher level shape? >> >> Dale >> >> >> |
|
|||
|
Re: Determining whether a PPT shape has other shapes within it
In article <ON7ujd5iIHA.4080@TK2MSFTNGP03.phx.gbl>, Dale Fye wrote:
> Will this work for all types of shapes that have other shapes imbedded > within them, or only "Groups"? Only Groups have other PPT shapes embedded within them; embedded OLE objects, linked OLE objects and some pictures are embedded as WMF/EMF representations that turn INTO shapes when ungrouped. As a general solution, you'd have to ungroup them to get at the component shapes. > > "vindys" <vindys@discussions.microsoft.com> wrote in message > news:8AD02676-2F38-4F6F-9F1B-905E133EB542@microsoft.com... > > Dim s As Shape > > Set s = ActiveWindow.Selection.ShapeRange(1) > > If s.Type = msoGroup Then > > With s > > For i = 1 To s.GroupItems.Count > > 's.GroupItems (i) will give you each item > > Next i > > End With > > End If > > > > > > "Dale Fye" wrote: > > > >> I'm trying to write some code that will enumerate all of the shapes on a > >> slide. > >> > >> Got this part working for the top level shapes, but if a shape is Group > >> or a > >> diagram, or something else, how do I determine whether it has shapes > >> imbedded within it, and if so, how do I iterate through the shapes within > >> that higher level shape? > >> > >> Dale > >> > >> > >> > -- Steve Rindsberg, PPT MVP PPT FAQ: www.pptfaq.com PPTools: www.pptools.com ================================================ |
|
|||
|
Re: Determining whether a PPT shape has other shapes within it
Steve,
Vindy's code below helped me crack the nut for Group types 8 and 13 and appears to handle part of the issue with shape type (14, Diagram 4). However, with the Diagram shape, although that code did allow me to delve into the diagram, it did not identify the types of shapes that were embedded in the diagram, and when I went into PPT and clicked on the diagram, there did not appear to be a way to ungroup the shapes that make it up, to give me access to the individual shapes. I would be interested in knowing how to do this, as well as how to ungroup embedded OLE Objects. Once ungrouped, I can always close the presentation without saving the changes, but I need to be able to diassemble the entire presentation so that I can look at each of it's component parts. Thanks for your help Dale "Steve Rindsberg" <abuse@localhost.com> wrote in message news:VA.00003e6e.0085336d@localhost.com... > In article <ON7ujd5iIHA.4080@TK2MSFTNGP03.phx.gbl>, Dale Fye wrote: >> Will this work for all types of shapes that have other shapes imbedded >> within them, or only "Groups"? > > Only Groups have other PPT shapes embedded within them; embedded OLE > objects, > linked OLE objects and some pictures are embedded as WMF/EMF > representations > that turn INTO shapes when ungrouped. As a general solution, you'd have > to > ungroup them to get at the component shapes. > > > >> >> "vindys" <vindys@discussions.microsoft.com> wrote in message >> news:8AD02676-2F38-4F6F-9F1B-905E133EB542@microsoft.com... >> > Dim s As Shape >> > Set s = ActiveWindow.Selection.ShapeRange(1) >> > If s.Type = msoGroup Then >> > With s >> > For i = 1 To s.GroupItems.Count >> > 's.GroupItems (i) will give you each item >> > Next i >> > End With >> > End If >> > >> > >> > "Dale Fye" wrote: >> > >> >> I'm trying to write some code that will enumerate all of the shapes on >> >> a >> >> slide. >> >> >> >> Got this part working for the top level shapes, but if a shape is >> >> Group >> >> or a >> >> diagram, or something else, how do I determine whether it has shapes >> >> imbedded within it, and if so, how do I iterate through the shapes >> >> within >> >> that higher level shape? >> >> >> >> Dale >> >> >> >> >> >> >> > > -- > Steve Rindsberg, PPT MVP > PPT FAQ: www.pptfaq.com > PPTools: www.pptools.com > ================================================ > |
|
|||
|
Re: Determining whether a PPT shape has other shapes within it
> However, with the Diagram shape, although that code did allow me to delve
> into the diagram, it did not identify the types of shapes that were embedded > in the diagram, and when I went into PPT and clicked on the diagram, there > did not appear to be a way to ungroup the shapes that make it up, to give me > access to the individual shapes. This should do it, I think: Dim oSh As Shape Dim x As Long ' for demo purposes, assume you've selected a diagram Set oSh = ActiveWindow.Selection.ShapeRange(1) With oSh For x = 1 To .GroupItems.Count Debug.Print .GroupItems(x).Name ' deal with other properties here Next End With > > I would be interested in knowing how to do this, as well as how to ungroup > embedded OLE Objects. And something like his for the latter. The odd loop is because some object when ungrouped turn into a PPT group. Sub UngroupOLEObject() Dim oSh As Shape Dim oShapeRange As ShapeRange Dim x As Long ' assume you've selected an ole embedded or linked object Set oSh = ActiveWindow.Selection.ShapeRange(1) Set oShapeRange = oSh.Ungroup Do Until oShapeRange.Count > 1 Set oShapeRange = oShapeRange.Ungroup Loop With oShapeRange For x = 1 To .Count Debug.Print .Item(x).Name Next End With End Sub > > Once ungrouped, I can always close the presentation without saving the > changes, but I need to be able to diassemble the entire presentation so that > I can look at each of it's component parts. > > Thanks for your help > > Dale > > "Steve Rindsberg" <abuse@localhost.com> wrote in message > news:VA.00003e6e.0085336d@localhost.com... > > In article <ON7ujd5iIHA.4080@TK2MSFTNGP03.phx.gbl>, Dale Fye wrote: > >> Will this work for all types of shapes that have other shapes imbedded > >> within them, or only "Groups"? > > > > Only Groups have other PPT shapes embedded within them; embedded OLE > > objects, > > linked OLE objects and some pictures are embedded as WMF/EMF > > representations > > that turn INTO shapes when ungrouped. As a general solution, you'd have > > to > > ungroup them to get at the component shapes. > > > > > > > >> > >> "vindys" <vindys@discussions.microsoft.com> wrote in message > >> news:8AD02676-2F38-4F6F-9F1B-905E133EB542@microsoft.com... > >> > Dim s As Shape > >> > Set s = ActiveWindow.Selection.ShapeRange(1) > >> > If s.Type = msoGroup Then > >> > With s > >> > For i = 1 To s.GroupItems.Count > >> > 's.GroupItems (i) will give you each item > >> > Next i > >> > End With > >> > End If > >> > > >> > > >> > "Dale Fye" wrote: > >> > > >> >> I'm trying to write some code that will enumerate all of the shapes on > >> >> a > >> >> slide. > >> >> > >> >> Got this part working for the top level shapes, but if a shape is > >> >> Group > >> >> or a > >> >> diagram, or something else, how do I determine whether it has shapes > >> >> imbedded within it, and if so, how do I iterate through the shapes > >> >> within > >> >> that higher level shape? > >> >> > >> >> Dale > >> >> > >> >> > >> >> > >> > > > > -- > > Steve Rindsberg, PPT MVP > > PPT FAQ: www.pptfaq.com > > PPTools: www.pptools.com > > ================================================ > > > -- Steve Rindsberg, PPT MVP PPT FAQ: www.pptfaq.com PPTools: www.pptools.com ================================================ |
![]() |
|
| Thread Tools | Search this Thread |
| Display Modes | |
|
|