Clase ShapeNodes (Word VBA)
Una colección de todos los ShapeNode objetos en la forma libre. Para usar una variable de clase ShapeNodes, primero debe ser instanciado, por ejemplo
Count
Devuelve un Long que representa el número de nodos de forma de la colección.
Dim sns As ShapeNodes: Set sns =
Dim lngCount As Long
lngCount = sns.Count
Delete
Elimina el nodo de forma especificado.
Delete (Index)
Index: Número dentro de la colección de nodos de forma del nodo de forma que se va a eliminar.
Dim lngIndex As Long: lngIndex =
Dim sns As ShapeNodes: Set sns =
sns.Delete Index:=lngIndex
Insert
Inserta un nodo en una forma libre.
Insert (Index, SegmentType, EditingType, X1, Y1, X2, Y2, X3, Y3)
Sub InsertShapeNode()
ActiveDocument.Shapes(3).Select
With Selection.ShapeRange
If .Type = msoFreeform Then
.Nodes.Insert _
Index:=3, SegmentType:=msoSegmentCurve, _
EditingType:=msoEditingSymmetric, x1:=35, y1:=100
.Fill.ForeColor.RGB = RGB(0, 0, 200)
.Fill.Visible = msoTrue
Else
MsgBox "This shape is not a Freeform object."
End If
End With
End Sub
Arguments
Estos son los argumentos con nombre :
Index (Long) - Número del nodo de forma detrás del cual va a insertarse un nuevo nodo.
SegmentType (Office.MsoSegmentType) - Tipo de línea que conecta el nodo insertado con los nodos adyacentes.
EditingType (Office.MsoEditingType) - Propiedad de modificación del nodo insertado.
X1 - Single
Y1 - Single
Optional arguments
Los siguientes argumentos son opcionales
X2 - Single
Y2 - Single
X3 (Single) - Si el parámetro EditingType del nuevo segmento es msoEditingCorner, este argumento especifica la distancia horizontal, medida en puntos, desde la esquina superior izquierda del documento hasta el punto final del nuevo segmento.
Y3 - Single
Item
Devuelve un objeto ShapeNode individual de una colección.
Item (Index)
Index: El objeto individual que se va a devolver.
Dim sns As ShapeNodes: Set sns =
Dim shpn As ShapeNode
Set shpn = sns(Index:=1)
SetEditingType
Establece el tipo de edición del nodo especificado por Index.
Si el nodo es un punto de control de un segmento curvo, este método establece el tipo de modificación del nodo adyacente que une dos segmentos.
SetEditingType (Index, EditingType)
Dim lngLoop As lngLoop
With ActiveDocument.Shapes(3).Nodes
For lngLoop = 1 to .Count
If .Item(lngLoop).EditingType = msoEditingCorner Then
.SetEditingType lngLoop, msoEditingSmooth
End If
Next lngLoop
End With
Arguments
Estos son los argumentos con nombre :
Index (Long) - Nodo cuyo tipo de modificación va a establecerse.
EditingType (Office.MsoEditingType) - Propiedad de modificación del vértice.
SetPosition
Establece la ubicación del nodo especificado por Index.
Dependiendo del tipo de modificación del nodo, este método puede afectar a la posición de los nodos adyacentes.
With ActiveDocument.Shapes(3).Nodes
pointsArray = .Item(2).Points
currXvalue = pointsArray(1, 1)
currYvalue = pointsArray(1, 2)
.SetPosition 2, currXvalue + 200, currYvalue + 300
End With
Arguments
Estos son los argumentos con nombre :
Index (Long) - Nodo cuya posición va a establecerse.
X1 - Single
Y1 - Single
SetSegmentType
Establece el tipo de segmento que sigue al nodo especificado por Index.
Si el nodo es un punto de control de un segmento curvo, este método establece el tipo de segmento de esa curva.
SetSegmentType (Index, SegmentType)
Dim lngLoop As Long
With ActiveDocument.Shapes(3).Nodes
lngLoop = 1
While lngLoop <= .Count
If .Item(lngLoop).SegmentType = msoSegmentLine Then
.SetSegmentType lngLoop, msoSegmentCurve
End If
lngLoop = lngLoop + 1
Wend
End With
Arguments
Estos son los argumentos con nombre :
Index (Long) - Nodo cuyo tipo de segmento va a establecerse.
SegmentType (Office.MsoSegmentType) - Especifica si el segmento es recto o curvo.