1. It will be a coding job, and not a simple one
This is what I was suspecting. But I think I'm up for the challenge.
2. It looks like your connectors connect to the outer box rather than the RJ45 shape
Correct, the connectors location are on the outer box, but they are associated with the Input/Output shape. This is so that when Inputs & Outputs are duplicated when creating the block, the connection point will also be duplicated. I thought about adding connection points to the main group shape, but I didn't want to have to remove connection points every time I removed Inputs & or Outputs.
On another block I edited the shapesheet so that the connection points would stay in the same location regardless if the shape was extended in width (for longer Input/Output names, character length). I didn't include that in the above visio file.
3. The input/output text is not related to the RJ45 sockets, except just nearby
That is also correct, I did this so that when I added different "icons" (ex. HDMI, VGA, etc.) I could easily align the icons with ones below it and center it with the Input/Output text. This can be easily change to accommodate the VBA code. Would it be acceptable to just group the icons and Input/Output text fields together individually?
4. None of the shapes have a suitable name so any code is going to be difficult
Once the icons and text are grouped, I can name each one "Input 1", "Input 2", "Output 1", "Output 2" etc. Would this be sufficient? Or would it need to be more detailed and unique?
After doing those things, in my mind this is how the VBA code would need to be written.
Go through the Input/Output text blocks that have connection points and identify ones that do not have glued connections to them and delete the associated text box w/ icon.
Next starting with the lowest number Input # & Icon (ex. if Inputs 1-7 were deleted and Input 8 was the lowest number) Input 8 & Icon be moved to be bumped up next to the "Description" shape, but not aligned center to the "Description" shape, just the Y value.
Then the function continues to the next lowest number until all Inputs&Icons are arranged.
Then the function moves to the Output side and preforms the above function.
Once all remaining Inputs&Outputs are aligned, it would need to be determined what the lowest Input or Output field is. Then based on that value, the center box height would need to be resized to "Bump" up next to the farthest down Input or Output box.
Then, move the "Location" and "Mounting Style" boxes to bump up with the center box.
And finally, Update the Alignment Box.
A key thing I realize is that when aligning the different text boxes, their X and Y positions shouldn't be absolute, rather in relation to the group so that when the whole group is resized, it will also resize and keep the location of the shapes.
Thoughts on this? I'm up for the challenge and obviously it's a big one. Would love some guidance. Thanks!