2009-11-10 15 views
1

Il y a une chose que je veux faire dans PowerPoint VBA.Comment créer des points dans Power Point VBA, les déplacer dans différentes directions tout en les gardant connectés avec des lignes droites?

Je veux créer deux points dans la fenêtre principale - point A et point B - par leurs coordonnées données: par exemple, A (232, 464) et B (109, 567). Je ne sais pas comment le faire dans PowerPoint VBA. Je sais comment créer une ligne droite simple. J'utilise ce code de macro pour que:

Sub CreateLine() 
    ActiveWindow.Selection.SlideRange.Shapes.AddLine(192#, 180#, 360#, 252#).Select 
End Sub 

Mais je ne sais toujours pas comment quel code je besoin de créer quelques points, pas de lignes.

Ensuite, je veux déplacer ces points en quelque sorte. Encore une fois, je sais chaud pour déplacer des lignes entières ou d'autres objets - pour que j'utilise ce code:

Sub move() 
    ActiveWindow.Selection.ShapeRange.IncrementLeft 6# 
End Sub 

Mais je ne sais pas comment déplacer des points, surtout si je veux déplacer un point dans un sens (par exemple, déplacez-le vers le haut) et l'autre point d'une autre manière (par exemple, déplacez-le vers la gauche).

Pourquoi est-ce que je veux le faire? Parce que plus tard, je prévois de garder ces points "connectés" par des lignes droites, peu importe dans quelles directions je déplace ces points.

Si vous connaissez la réponse, partagez avec moi ici.

Merci d'avance.

Répondre

4

afin de créer un « point » vous utilisez la forme « ovale », à savoir un petit cercle, où vous pouvez définir la ligne et de remplissage à la même, à savoir

Sub DoDot() 

    'create a circular shape  
    ActiveWindow.Selection.SlideRange.Shapes.AddShape(msoShapeOval, 144.5, 150.88, 11.38, 11.38).Select 

    With ActiveWindow.Selection.ShapeRange 

     ' color it 
     .Line.ForeColor.SchemeColor = ppAccent1 
     .Line.Visible = msoTrue 
     .Fill.ForeColor.SchemeColor = ppAccent1 
     .Fill.Visible = msoTrue 
     .Fill.Solid 

     ' move it 
     .Top = 10 
     .Left = 10 

    End With 
End Sub 

J'utilisé la propriété SchemeColor ici pour colorier la forme, vous pouvez bien sûr utiliser une couleur RVB explicite aussi.

Plus tard, si vous souhaitez connecter des points avec des lignes, vous devrez soit déplacer les points et (re) créer des lignes entre eux, ou vous utilisez la ligne en forme de point types de fin

Sub LineWithEndType() 
    ActiveWindow.Selection.SlideRange.Shapes.AddLine(195.62, 162.25, 439.38, 309.75).Select 
    With ActiveWindow.Selection.ShapeRange 
     .Line.Visible = msoTrue 
     .Fill.Transparency = 0# 
     .Line.BeginArrowheadStyle = msoArrowheadOval 
     .Line.EndArrowheadStyle = msoArrowheadOval 
     .Line.BeginArrowheadLength = msoArrowheadLong 
     .Line.BeginArrowheadWidth = msoArrowheadWide 
     .Line.EndArrowheadLength = msoArrowheadLong 
     .Line.EndArrowheadWidth = msoArrowheadWide 
    End With 

End Sub 

espoir qui aide Bonne chance MikeD

+0

WOW !!!! Mike, merci beaucoup soooooo !!!! Dommage, je ne peux pas voter maintenant car ma réputation n'est pas encore de 15 points. (Y a-t-il un autre moyen de marquer votre réponse comme complète et correcte?) Je promets que je voterai en faveur de votre réponse actuelle dès que j'obtiendrai 15 points de ma réputation. Merci encore. – brilliant

+1

c'est bon - vous avez accepté la solution, c'est assez de récompense pour moi. Je ne vise pas à battre le record du monde, juste partager ce que je peux partager facilement. BTW ... utilisez fréquemment la fonction "Record Macro" dans n'importe quel programme Office, cela vous donnera un aperçu de certaines propriétés et méthodes rapidement. – MikeD