简体   繁体   中英

Fix a text box (at the right) in PowerPoint slide from Excel VBA

I put one cell's content on a PowerPoint slide with this code:

Set Sh = Pres.Slides(1).Shapes.AddLabel(Orientation:=msoTextOrientationHorizontal, _
    Left:=80, Top:=58, Width:=150, Height:=45)
Sh.TextFrame.TextRange.Text = Worksheets("Image ppt").Range("C38").Value 
Sh.TextFrame.TextRange.Font.Color = RGB(0, 75, 125)
Sh.TextFrame.TextRange.Font.Size = 16
Sh.TextFrame.TextRange.Font.Bold = True

I want that the text in the box be aligned to the right and the text box in the right top corner. Like this:

在此处输入图片说明

Because the text can change, so as the length and I can only change these parameters (Left, Top, Width & Height), I have this:

在此处输入图片说明

How to set the text box to fix it in the right top corner, and how to align the text at right?

You are pretty close, we just need to modify some of the code.

Set Sh = Pres.Slides(1).Shapes.AddLabel(Orientation:=msoTextOrientationHorizontal, _
        Left:=80, Top:=58, Width:=150, Height:=45)
    Sh.TextFrame.TextRange.Text = Worksheets("Image ppt").Range("C38").Value 
    Sh.TextFrame.TextRange.Font.Color = RGB(0, 75, 125)
    Sh.TextFrame.TextRange.Font.Size = 16
    Sh.TextFrame.TextRange.Font.Bold = True

    'Add this to align the content of the textbox to the right.
    Sh.TextFrame.TextRange.ParagraphFormat.Alignment = ppAlignRight

'Select the Shape.
Sh.Select

'With the active selection, align it to the upper right corner.
With Application.ActiveWindow.Selection.ShapeRange

     'If you want it exactly in the upper right corner use this.
     .Align msoAlignRights, msoTrue
     .Align msoAlignTops, msoTrue

     'If you want a little space between the slide & the text box, this is 
     'the approximate value for the upper right corner.
     .Left = 870
     .Top = 10

End With

All I did was add the code that will align the content of the TextRange to the right:

'Add this to align the content of the textbox to the right.
 Sh.TextFrame.TextRange.ParagraphFormat.Alignment = ppAlignRight

Now, to actually align the text box itself to the upper right corner of the slide I'm going to add the text box to a shape range. From here, I'm going to use the built-in align method to align it to the top of the slide and the far right corner.

'Select the Shape.
Sh.Select

'With the active selection, align it to the upper right corner.
With Application.ActiveWindow.Selection.ShapeRange

     'If you want it exactly in the upper right corner use this.
     .Align msoAlignRights, msoTrue
     .Align msoAlignTops, msoTrue

     'If you want a little space between the slide & the text box, this is 
     'the approximate value for the upper right corner.
     .Left = 870
     .Top = 10

End With

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM