2017-09-26 2 views
0

Ich bin auf der Suche nach einem verallgemeinerten PowerPoint-Makro zu gruppieren bestimmte Formen zusammen. Das Problem ist, dass ich die spezifischen Shapedamen im Voraus nicht kenne, da sich mein Slidedeck jedes Mal leicht verändert. Hier ist meine Situation: Ich habe eine Sammlung von PowerPoint-Formen, deren Namen mit dem Präfix "rc" beginnen. Zum Beispiel könnten sie "rc48", "rc49", "rc50", "rc51" sein. Sie sind immer in steigender numerischer Reihenfolge und die einzigen "rc" genannten Formen auf der Folie. Nach diesen Formen habe ich eine Sammlung von Formen mit dem Präfix "tx" (sie sind nicht die einzigen "tx" Formen in der Folie, aber sie folgen immer den "rc" Formen) und es gibt immer eine äquivalente Zahl von "tx "Objekte folgen den" rc "-Objekten. In diesem Beispiel hätte ich also "tx52", "tx53", "tx54", "tx55".Generalisierte Form Gruppierung Makro VBA PowerPoint

Was ich tun möchte, ist diese Objekte zu gruppieren. Also wäre group1 ("rc48", "tx52"). group2 wäre ("rc49", "tx53") und so weiter.

Ich weiß sehr wenig über das Codieren in VBA, aber mein Ansatz in anderen Programmiersprachen wäre, die Positionen der "rc" -Formen im Namenvektor sequentieller Shapes zu finden und dann die Länge (rcshapes_vector) nach dem "rc" Positionen, um die "tx" Formen zu finden, die ich brauche, und dann über diese Paare zu schleifen.

Ich weiß, dies ist eine komplizierte Frage, aber jede Hilfe würde sehr geschätzt werden.

Antwort

0

Arbeiten mit VBA-Code in Powerpoint ist wirklich schmerzhaft, weil Sie nicht eine Menge von Funktionen wie Excel VBA, aber ich hoffe, dass die folgenden Ideen, die Ihnen helfen können:

Sie können die Art von Form validieren wie If oShp.Type = msoTextBox Then oder If oShp.Type = msoPicture Then.

Auch für jede Form können Sie die obere oder linke Eigenschaft validieren, um die Position auf der Folie zu finden. Wenn Sie sicher sind, dass Ihre Formen diese Namen haben, können Sie vielleicht versuchen mit:

Dim oShp As Shape 
For Each oShp In ActivePresentation.Slides(SldNumber).Shapes 
    If oShp.Name = "rc49" Then 
     Do Something 
    End If 
next 
Verwandte Themen