how to add a textbox to a powerpoint presentation

2019-09-06 05:23发布

I'm writing a macro which creates a powerpoint presentation and then copys data from a spreadsheet and adds a title and a textbox. I've been able to add the data and tile and format both however I'm struggling to add a textbox. When I run the code below it returns the error 'ActiveX component can't create object'. I feel like over looking something simple. Any help would be greatly appreciated! (Error occurs on the line after the first set of '-------')

Sub Create_Presentation()

Dim rng As Range
Dim PowerPointApp As PowerPoint.Application
Dim myPresentation As PowerPoint.Presentation
Dim mySlide As PowerPoint.Slide
Dim myShape As PowerPoint.Shape
Dim myTextbox As Shape


On Error Resume Next


  Set PowerPointApp = CreateObject(class:="PowerPoint.Application")

  Err.Clear

  If PowerPointApp Is Nothing Then Set PowerPointApp = CreateObject(class:="PowerPoint.Application")


  If Err.Number = 429 Then
    MsgBox "PowerPoint could not be found, aborting."
    Exit Sub
  End If

  On Error GoTo 0


  Application.ScreenUpdating = True


  Set myPresentation = PowerPointApp.Presentations.Add

  Set mySlide = myPresentation.Slides.Add(1, 11) '11 = ppLayoutTitleOnly

Set rng = Range("PL_Tot")
rng.Copy

  mySlide.Shapes.PasteSpecial DataType:=xlBitmap
  Set myShape = mySlide.Shapes(mySlide.Shapes.Count)


  myShape.Left = 0.3
  myShape.Top = 67

  myShape.Width = 430
  myShape.Height = 406.4

mySlide.Shapes.Title.TextFrame.TextRange.Text = Range("TotalTitle").Value

Set sldTitle = mySlide.Shapes.Title

With sldTitle
With .TextFrame.TextRange
With .Font
.Bold = msoTrue
.Size = 22
.Color = RGB(0, 0, 200)
End With
End With
End With

sldTitle.Top = -30
'------------------------------------

Set myPresentation = ActivePresentation

Set mySlide = myPresentation.Slides(1)

Set myTextbox = mySlide.Shapes.AddTextbox(msoTextOrientationHorizontal, _
    Left:=0, Top:=10, Width:=200, Height:=50)

With myTextbox.TextFrame.TextRange
    .Text = Range("PPTextbox").Value
    With .Font
        .Size = 12
        .Name = "Arial"
    End With
End With

'-----------------------------------
 PowerPointApp.Visible = True
 PowerPointApp.Activate


 Application.CutCopyMode = False

1条回答
放我归山
2楼-- · 2019-09-06 06:10

Excel and PowerPoint can both have Shape objects. Your:

Dim myTextbox As Shape

prepares Excel to expect an Excel shape. Change it to

Dim myTextbox As PowerPoint.Shape

so Excel doesn't bark when you try to apply PowerPoint properties and methods to an Excel shape.

查看更多
登录 后发表回答