Как создавать точки в Power Point VBA, перемещать их в разных направлениях, оставляя их соединенными прямыми линиями? - PullRequest
1 голос
/ 10 ноября 2009

В PowerPoint VBA я хочу сделать одну вещь.

Я хочу создать две точки в главном окне - точку A и точку B - по заданным координатам: например, A (232, 464) и B (109, 567). Я не знаю, как это сделать в PowerPoint VBA. Я знаю, как создать простую прямую линию. Я использую этот макрос для этого:

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

Но я до сих пор не знаю, какой код мне понадобится для создания только точек, а не линий.

Тогда я хочу как-то переместить эти точки. Опять же, я знаю, что нужно перемещать целые строки или другие объекты - для этого я использую этот код:

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

Но я не знаю, как перемещать точки, особенно если я хочу переместить одну точку в одну сторону (например, переместить ее вверх), а другую точку - в другую сторону (например, переместить ее влево).

Почему я хочу это сделать? Потому что позже я планирую сохранить эти точки «связанными» прямыми линиями, независимо от того, в каком направлении я перемещаю эти точки.

Если вы знаете ответ, поделитесь им со мной здесь.

Заранее спасибо.

1 Ответ

4 голосов
/ 10 ноября 2009

Чтобы создать «точку», вы используете «овальную» форму, то есть маленький круг, где вы можете установить одинаковые цвета линии и заливки, т.е.

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

Я использовал здесь свойство SchemeColor для раскраски фигуры, вы, конечно, можете использовать и явный цвет RGB.

Позже, если вы хотите соединить точки с линиями, вам нужно будет либо переместить точки и (пере) создать линии между ними, или вы используете конечные типы линий в форме точек

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

Надеюсь, это поможет Удачи MikeD

...