Excel 2013在两个不同组的任意点之间添加一个连接器

我正在使用Excel 2013(以编程方式)在作为分组形状的一部分的矩形的右下angular与分组的一系列线段的端点之间添加直线连接器。 就目前而言,我甚至无法在包含这些形状的Excel工作表上手动执行此操作。

问题包括:

  1. 只有所需长方形的中点将接受连接器。
  2. 分组的一系列线段甚至没有显示直线连接器terminal的“连接点”。

这里是我想要做的事情的图表:

[我没有10个“口碑点”,所以我似乎无法发布我想要做的事情。 不是一个特别有用的function! 我如何在这个游戏中获得声望点?]

我已经能够创build和命名这两个组,并认为与他们合作添加一个连接器是件小事,但事实并非如此。

这是我一直在使用的代码:

Sub create_new_profile() Dim firstRect As Shape Dim firstLine As Shape Set myDocument = Worksheets(1) Set s = myDocument.Shapes ' Set firstRect = s.Range("shpNewGarage") ' Set firstLine = s.Range("shpProfile") Dim Shp As Shape ' For Each Shp In myDocument.Shapes For Each Shp In s If Shp.Name = "shpNewGarage" Then Set firstRect = Shp Else End If Next Shp ' For Each Shp In myDocument.Shapes For Each Shp In s If Shp.Name = "shpProfile" Then Set firstLine = Shp Else End If Next Shp firstRect.Select 'this works firstLine.Select 'this works ' Set firstRect = s.AddShape(msoShapeRectangle, 100, 50, 200, 100) ' Set firstLine = s.AddShape(msoShapeRectangle, 300, 300, 200, 100) ' Set firstRect = ActiveSheet.Shapes.Range("shpNewGarage") ' Set firstLine = ActiveSheet.Shapes.Range("shpProfile") Dim c As Shape Set c = s.AddConnector(msoConnectorStraight, 0, 0, 100, 100) ' On Error Resume Next With c.ConnectorFormat **.BeginConnect ConnectedShape:=firstRect, ConnectionSite:=1** .EndConnect ConnectedShape:=firstLine, ConnectionSite:=1 ' .BeginConnect ConnectedShape:="shpNewGarage", ConnectionSite:=1 ' .EndConnect ConnectedShape:="shpProfile", ConnectionSite:=1 ' .BeginConnect ConnectedShape:=ActiveSheet.Shapes.Range("shpNewGarage"), ConnectionSite:=1 ' .EndConnect ConnectedShape:=ActiveSheet.Shapes.Range("shpProfile"), ConnectionSite:=1 c.RerouteConnections End With End Sub 

代码的这个特定版本以紧跟在行后面的行上的运行时错误结束:

用c.ConnectorFormat

这里是错误信息:

[我没有10个“口碑点”,所以我似乎无法发布我得到的错误信息的图片。 再次,我如何获得声望点?]

任何方向都可以帮助我以编程方式完成这项任务,将不胜感激。

感谢您解释我现在可以发布图片。 这应该有所帮助。

以下是我正在使用的数字:

新车库,现有的车道轮廓和新的配置文件(红色)

矩形组(firstRect,“shpNewGarage”)代表了一个新的车库,我打算在现有的和街道之间build造一个新的车库。 轮廓组(firstLine,“shpProfile”)表示现有车道(浅蓝线)的轮廓(侧视图/仰angular)。这个想法是将新轮廓(红线)附加到新的右下angular车库在一端和现有的configuration文件(路边石)的右端,所以当我向上,向下,左右移动新的车库时,代表新configuration文件的连接器将保持连接到这些点以graphics化地显示angular度等级)和新车道的长度。

以下是我在运行代码时收到的错误消息:

VBA错误消息。

这看起来像一个爬山,因为我有问题,甚至手动添加连接器到所需的点。

感谢所有已阅读/回复我的问题的人。 在过去,Stackoverflow一直是我的一个很好的资源,这是我第一次发布自己相当具体的问题。

你解释得很好,你上传的图片也有帮助

你的代码在做什么似乎是正确的,但错误是抱怨其中的一个参数,它可能是第二个:

.BeginConnect ConnectedShape:= firstRect, ConnectionSite:= 1

ConnectionSite:“ 由ConnectedShape指定形状的连接站点。必须是1和指定形状的ConnectionSiteCount属性返回的整数之间的整数

我认为你的firstRect对第一个Node有一个问题:当你最初生成一个矩形时,它没有连接点在angular落,我不确定最初的可用节点

矩形是必须首先转换为(通用)形状类的特定类形状:“ 在使用ConvertToShape方法之前,必须至less将AddNodes方法应用于FreeformBuilder对象 ”,以便将连接点(节点)到angular落

另一个问题可能是由团体造成的。 我不确定是否将对象分组,但分组可能不允许直接访问连接点

作为一个练习,我能够以你想要的方式在两个矩形之间画线,但是我的线条并没有实际连接到形状,所以如果我移动一个矩形,线条就不会随之移动。 这是我的代码:

 Option Explicit Sub create_new_profile() Dim ws As Worksheet Dim shp1 As Shape Dim shp2 As Shape Dim line1 As Shape Dim line2 As Shape Set ws = Sheet1 With ws.Shapes 'AddShape: Left=10, Top=10, Width=50, Height=30 Set shp1 = .AddShape(msoShapeRectangle, 10, 10, 50, 30) Set shp2 = .AddShape(msoShapeRectangle, 70, 50, 50, 30) 'AddConnector: BeginX=60, BeginY=10, EndX=120, EndY=50 Set line1 = .AddConnector(msoConnectorStraight, 60, 10, 120, 50) Set line2 = .AddConnector(msoConnectorStraight, 60, 40, 120, 80) End With line1.Line.ForeColor.RGB = RGB(255, 0, 0) 'Color Red line2.Line.ForeColor.RGB = RGB(255, 0, 0) End Sub 

这是最终的结果:

连接的形状

如果需要将这些线连接到矩形,则必须将这些矩形转换为形状,然后添加转angular连接点或节点(msoEditingCorner),然后将连接线从第一个矩形的一个转angular节点添加到另一个转angular第二个矩形的节点

(手动)转换为shape的方法之一,并logging您的操作以查看生成的VBA代码和对象,方法是右键单击该形状并select“Edit Points”(编辑点):

在这里输入图像说明

希望这个对你有帮助