VBA Objekte ausrichten
#8
Hallo Koter,

fast ... ;-)

Ich habe noch für s2 ein "nofill" eingebaut, da ich ansonsten ein schwarzes Rechteck hätte.
Außerdem den Text noch blau einfärben:
sTxt.Text.Story.Fill.UniformColor.CMYKAssign 100, 100, 0, 0

Ich poste den neuen Code mal hier, falls sowas nochmal jemand brauchen kann:


Code:
Sub rechteck2()
  Dim Abstand As Double
  Dim sTxt As New Shape, s2 As Shape, sAw As Shape
  Dim strName As String
 
  If ActiveSelection.Shapes.Count = 0 Then Exit Sub
  ActiveDocument.BeginCommandGroup "Beschriften"
 
  ActiveDocument.ReferencePoint = cdrCenter
  Abstand = 0.05
  strName = "Beschriftung"
  strName = InputBox("Name: ", "Name eingeben oder Eingabe für keinen Namen", strName)
  If strName = "" Then Exit Sub
 
  Set sAw = ActiveSelectionRange.Group
  Set sTxt = ActiveLayer.CreateArtisticText(0, 0, strName)
  With sTxt.Text.Story
      .Font = "1451_Eng_DB"
'        .Font = "DIN 1451 Engschrift"
      .Alignment = cdrCenterAlignment
      .Size = 8
  End With
  sTxt.Text.Story.Fill.UniformColor.CMYKAssign 100, 100, 0, 0
 
  If sAw.SizeWidth > sAw.SizeHeight Then
      If sTxt.SizeWidth > sAw.SizeWidth Then
          sTxt.SizeWidth = sAw.SizeWidth
          sTxt.SizeHeight = sTxt.SizeHeight * sTxt.AbsoluteHScale
      End If
      sTxt.AlignToShape cdrAlignHCenter, sAw
      sTxt.PositionY = Abstand + sAw.PositionY + (sAw.SizeHeight + sTxt.SizeHeight) / 2
  Else ' Text drehen
      If sTxt.SizeWidth > sAw.SizeWidth Then
          sTxt.SizeWidth = sAw.SizeHeight
          sTxt.SizeHeight = sTxt.SizeHeight * sTxt.AbsoluteHScale
      End If
      With sTxt
      sTxt.AlignToShape cdrAlignVCenter, sAw
      sTxt.PositionX = sAw.PositionX - Abstand - (sAw.SizeWidth + sTxt.SizeHeight) / 2
      sTxt.Rotate 90
      End With
  End If
 
  If sAw.Type = cdrGroupShape Then
      sTxt.OrderFrontOf sAw.Shapes(1)
  Else
      sAw.AddToSelection
      Set sAw = ActiveSelection.Group
  End If
 
  ActiveDocument.ReferencePoint = cdrBottomLeft
  Set s2 = ActiveLayer.CreateRectangle2(sAw.PositionX - Abstand, sAw.PositionY - Abstand, _
  sAw.SizeWidth + Abstand * 2, sAw.SizeHeight + Abstand * 2)
  ActiveDocument.ReferencePoint = cdrCenter
 
  s2.Outline.Color.CMYKAssign 0, 0, 0, 100
  s2.Fill.ApplyNoFill
  s2.OrderBackOf sAw.Shapes(sAw.Shapes.Count)
 
  ActiveDocument.EndCommandGroup
End Sub

Allerdings habe ich mich jetzt doch entschieden, mit meiner Version weiterzumachen, da noch einige Elemente enthalten sind (deshalb auch die vielen weiteren Variablen), die jedoch für die Grundfunktion "Text ausrichten" nicht relevant waren.
Mir ist nämlich die Idee gekommen, mein
s1.size durch s1.stretch (w/w1) bzw. s1.stretch (h/h1) zu ersetzen. Dabei bleibt der neue Text an der gleichen Stelle und wird über die Mitte neu skaliert. Damit klappt dann alles.
Habe es mit allen 4 Varianten (senkrecht/waagrecht; langer Text, kurzer Text) probiert - funzt :-)

Wenn ich Dir ein Bier oder auch 2 ausgeben darf, lass' mich bitte wissen wie ...
Vielen Dank für Dein Engagement!

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.172 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.332 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.534 27.03.2024, 09:35
Letzter Beitrag: Boerni
  Objekte positionieren Sandfloh 2 751 23.03.2024, 18:12
Letzter Beitrag: Sandfloh