I found a macro on here from 13 years ago (forum link) and I'm trying to put together a macro that will fit text to the top and bottom half of the circle and then you can adjust the kerning.
Here's a video to explain what I'm trying to do.
(I figured out how to rotate the arrow buttons.)
Thanks!
Top Text
Public Sub showTextToCirleForm() Text_To_Circle.Show vbModeless End Sub Sub FitToTop() Dim sr As ShapeRange Dim sText As Shape, sEllipse As Shape Set sr = ActiveSelectionRange Set sText = sr(1) If sText.Type = cdrTextShape Then Set sEllipse = sr(2) Else Set sText = sr(2): Set sEllipse = sr(1) End If sText.Text.FitToPath sEllipse sText.Effects(1).TextOnPath.Quadrant = cdrTopQuadrant End Sub
Bottom Text
Option Explicit Sub FitToBottom() Dim sr As ShapeRange Dim sText As Shape, sEllipse As Shape Set sr = ActiveSelectionRange Set sText = sr(1) If sText.Type = cdrTextShape Then Set sEllipse = sr(2) Else Set sText = sr(2): Set sEllipse = sr(1) End If sText.Text.FitToPath sEllipse sText.Effects(1).TextOnPath.Quadrant = cdrBottomQuadrant sText.Effects(1).TextOnPath.VertPlacement = cdrAscenderVertPlacement sText.Effects(1).TextOnPath.PlaceOnOtherSide = True End Sub
Form
Option Explicit Private Sub Text_To_Bottom_Start_Click() GMSManager.RunMacro "GlobalMacros", "Circle_Text_Bottom.FitToBottom" End Sub Private Sub Text_To_Circle_Start_Click() GMSManager.RunMacro "GlobalMacros", "Circle_Text_Top.FitToTop" End Sub Private Sub UserForm_Initialize() 'Kerning Values in textbox for top and bottom text. Not sure how to get this value data. 'Text_To_Circle.Top_Kerning.Value = ActiveSelection.Font.Spacing End Sub
As much as I like macros, I'm going to point out some native CorelDRAW capabilities that you might find useful for tuning the character spacing.
In the Paragraph section of the Properties docker, in the area that can be expanded or collapsed, you can find boxes for Character spacing and Word spacing.
This video shows that last method being used:
I tried my best, but all I managed to figure out is how to read the kerning:
MsgBox sText.Style.Paragraph.Style.GetPropertyAsString("interCharSpacing")