VBA Objekte ausrichten
#6
Hallo Koter,

Danke nochmal für den weiteren Lösungsansatz.
Leider klappt es so nicht, da vorher noch etwas passiert, was ich beim ersten Mal nicht erwähnt hatte.
Ist der Text nämlich zu lang (also länger, als die ShapeRange, die markiert war), wird der Text automatisch verkleinert, so dass er maximal so breit ist wie die ShapeRange.

Ich kopiere mal etwas mehr von meinem Makro hierein - alles überflüssige habe ich entfernt:

Code:
Sub rechteck()

Dim x As Double, y As Double, w As Double, h As Double, x1 As Double, y1 As Double, w1 As Double, h1 As Double
Dim sr As ShapeRange, sr2 As ShapeRange
Dim s1, s2 As Shape
Dim srNewShapes As New ShapeRange
Dim name As String
Dim OrigSelection As ShapeRange

If ActiveSelection.Shapes.Count = 0 Then Exit Sub
Set sr = ActiveSelectionRange

name = ""
name = InputBox("Name: ", "Name eingeben oder Eingabe für keinen Namen")

   sr.GetBoundingBox x, y, w, h, True
   sr.CreateSelection
   sr.Group
       
   If h < w Then
       Set s1 = ActiveLayer.CreateArtisticText(x + w + 0.05, y + (h / 2) + 0.05, name, , , "1451_Eng_DB", 8, , , , cdrCenterAlignment)
       s1.Rotate (270)
       s1.GetBoundingBox x1, y1, w1, h1, True 'Maße vom Text
       If h1 > h Then
           s1.SetSize , (h)
       End If
       
       sr.AlignToShape cdrAlignVCenter, ActiveLayer.Shapes(ActiveSelection.Shapes.Count), cdrTextAlignBoundingBox
   Else
       Set s1 = ActiveLayer.CreateArtisticText(x + (w / 2) - 0.025, y + h + 0.02, name, , , "1451_Eng_DB", 8, , , , cdrCenterAlignment)
       's1.CenterX = sr.CenterX
       
       s1.GetBoundingBox x1, y1, w1, h1, True 'Maße vom Text
       If w1 > w Then
           s1.SetSize (w)
       End If
   End If
   s1.Fill.UniformColor.CMYKAssign 100, 100, 0, 0
   
   s1.OrderToBack
   s1.Selected = True
   srNewShapes.Add s1
       
   sr.AddRange srNewShapes
   sr.CreateSelection
       
   sr.GetBoundingBox x, y, w, h, True
   sr.CreateSelection
   Set s2 = ActiveLayer.CreateRectangle2(x - 0.025, y - 0.025, w + 0.05, h + 0.05)
   s2.Fill.ApplyNoFill
   s2.Outline.Color.CMYKAssign 0, 0, 0, 100
   s2.OrderToBack
   s2.Selected = True
   srNewShapes.Add s2

sr.AddRange srNewShapes
sr.CreateSelection
sr.Group

sr.RemoveFromSelection
Set sr = ActiveSelection.Shapes.All

End Sub

Prinzipiell prüft das Makro, welches die kürzere Seite ist (Höhe oder Breite) und ergänzt dann die ShapeRange durch einen Namen an der kürzeren Seite (oben oder rechts) sowie einem Rahmen um ShapeRange+Name.

Ist der Name länger, wird er entsprechend verkleinert. Dabei bleibt er jedoch an Ort und Stelle (also z.B. links vom Objekt). Somit würde er beim Rechteck dann *dort* mit aufgenommen werden. Er soll aber zentriert über der ShapeRange stehen (oder eben rechts daneben).
Die ShapeRange kann zwischen 1 und n Objekten beinhalten; auch können auf der aktiven Seite auch andere Objekte sein, die nicht zur ShapeRange gehören - von daher funktioniert der Befehl "ActivePage.Shapes.All" leider nicht ...
So habe ich es nämlich bei einem ähnlich gelagerten Fall gelöst.

Gruß
fremoikaner

Betriebssystem / Grafik-Software: Win7, Corel X3/X5/X7
Zitieren



Nachrichten in diesem Thema
VBA Objekte ausrichten - von fremoikaner - 19.05.2024, 10:19
RE: VBA Objekte ausrichten - von koter - 19.05.2024, 14:01
RE: VBA Objekte ausrichten - von fremoikaner - 19.05.2024, 14:47
RE: VBA Objekte ausrichten - von fremoikaner - 19.05.2024, 15:22
RE: VBA Objekte ausrichten - von koter - 19.05.2024, 17:00
RE: VBA Objekte ausrichten - von fremoikaner - 20.05.2024, 16:09
RE: VBA Objekte ausrichten - von koter - 21.05.2024, 00:20
RE: VBA Objekte ausrichten - von fremoikaner - 21.05.2024, 16:37
RE: VBA Objekte ausrichten - von koter - 21.05.2024, 17:52
RE: VBA Objekte ausrichten - von fremoikaner - 22.05.2024, 17:34
RE: VBA Objekte ausrichten - von fremoikaner - 31.05.2024, 09:48
RE: VBA Objekte ausrichten - von fremoikaner - 02.06.2024, 17:41
RE: VBA Objekte ausrichten - von koter - 06.06.2024, 14:30

Möglicherweise verwandte Themen...
Thema Verfasser Antworten Ansichten Letzter Beitrag
  Objekte umfließen HMittermayr 36 5.165 09.04.2025, 18:11
Letzter Beitrag: miss_marple
  Objekte sortieren und verschieben Karthagos 6 802 24.11.2024, 17:24
Letzter Beitrag: Piet
  Mehrere Objekte gleichzeitig drehen, um die eigene Achse klj 10 4.755 21.11.2024, 11:58
Letzter Beitrag: Anguel
  Ausrichten an Strecke Boerni 9 1.322 12.10.2024, 12:55
Letzter Beitrag: koter
  alle Objekte eines bestimmten Farbmodells auswählen asterix 16 2.415 08.08.2024, 22:25
Letzter Beitrag: asterix
  Makro-Nachhilfe für Funktionen für alle Objekte asterix 31 4.330 09.07.2024, 09:06
Letzter Beitrag: asterix
  Ausrichten von Kurvenobjekten Boerni 7 1.154 19.06.2024, 17:31
Letzter Beitrag: Boerni
  History (zuletzt geöffnete Objekte) Wild Thinng 1 508 23.05.2024, 17:25
Letzter Beitrag: miss_marple
  Mini-Objekte innerhalb einer Gruppe fassen und löschen migo 10 1.532 27.03.2024, 09:35
Letzter Beitrag: Boerni
  Objekte positionieren Sandfloh 2 751 23.03.2024, 18:12
Letzter Beitrag: Sandfloh