简体   繁体   English

如何使用VBA将文本框添加到PowerPoint演示文稿

[英]how to add a textbox to a powerpoint presentation using vba

I'm writing a macro which creates a powerpoint presentation and then copys data from a spreadsheet and adds a title and a textbox. 我正在编写一个宏,该宏创建一个PowerPoint演示文稿,然后从电子表格中复制数据,并添加标题和文本框。 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'. 当我运行下面的代码时,它返回错误“ ActiveX组件无法创建对象”。 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

Excel and PowerPoint can both have Shape objects. Excel和PowerPoint都可以具有Shape对象。 Your: 你的:

Dim myTextbox As Shape

prepares Excel to expect an Excel shape. 准备Excel以期望Excel形状。 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. 因此,当您尝试将PowerPoint属性和方法应用于Excel形状时,Excel不会吠叫。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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