Как создавать точки в Power Point VBA, перемещать их в разных направлениях, сохраняя при этом соединение прямыми линиями?
-
19-09-2019 - |
Вопрос
Есть одна вещь, которую я хочу сделать в PowerPoint VBA.
Я хочу создать в главном окне две точки — точку A и точку B — по заданным им координатам:например, А (232, 464) и Б (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
Но я не знаю, как перемещать точки, особенно если я хочу переместить одну точку в одну сторону (например, переместить ее вверх), а другую точку в другую сторону (например, переместить ее влево).
Почему я хочу это сделать?Потому что позже я планирую сохранить эти точки «соединенными» прямыми линиями, независимо от того, в каком направлении я их перемещаю.
Если вы знаете ответ, пожалуйста, поделитесь им со мной здесь.
Заранее спасибо.
Решение
для создания «точки» используется «овал», т.е.небольшой кружок, где вы можете установить одинаковые цвета линии и заливки, т.е.
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
Надеюсь, это поможет удачи