how to add a textbox to a powerpoint presentation using vba

萝らか妹 提交于 2019-12-12 18:27:20

问题


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:


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.



来源:https://stackoverflow.com/questions/40908904/how-to-add-a-textbox-to-a-powerpoint-presentation-using-vba

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!