在具有多个属性的VBA中添加文本框

时间:2014-08-12 21:34:13

标签: vba textbox powerpoint powerpoint-vba

我尝试使用VBA在powerpoint的幻灯片顶部创建一个文本框(关于这句话太多让我感到难过)。我在网上看到的很多例子似乎都没有使用" Option explicit"宏实践,因为我在示例中看到的一些变量没有被声明或明确地输入。

无论如何,此时我只需要生成一个文本框,理想情况下为这个文本框获取某种名称,这样我就可以用它来做事,然后修改这个文本框的参数,比如字体大小。最后,我将创建它,以便用户可以输入字符串值并创建自己的工作表,并将其用作模板。

目前我正在使用此功能。 myDocument是幻灯片,title是我已经分配的字符串。这绝对是我需要的,但我无法改变其他任何内容,比如字体大小。

myDocument.Shapes.AddTextbox(msoTextOrientationHorizo​​ntal,Left:= 0,Top:= 10,Width:= 200,Height:= 50).TextFrame.TextRange.Text = title

如果我想在属性中添加.Font.Size = 18,我似乎无法找到迄今为止有效的方法。

我已经看到了一些例子,他们使用with-end with语句并设置了单独的属性,但是当我尝试创建一个形状然后修改单个属性时,我会得到错误(可能是因为形状没有字体属性)。这是我一直试图用作指南的页面,但它没有多大帮助

http://www.ozgrid.com/forum/showthread.php?t=18611

我很遗憾如何使用文本框对象,如何跟踪它们或为它们指定名称,几乎所有关于它们的内容。这对我来说是一个全新的领域。任何帮助都会非常感激

1 个答案:

答案 0 :(得分:1)

有助于理解PowerPoint中对象的层次结构。一旦你理解了这一点,你在对象模型中获得的大部分方法都会更有意义。

应用程序本身包含一个Presentations集合,每个打开的演示文稿都是其成员。

ActivePresentation是当前有效的演示文稿...即具有焦点,接收鼠标点击/击键。

演示文稿包含幻灯片 幻灯片包含形状 大多数(尽管不是全部)形状都可以有TextFrame TextFrame包含TextRange TextRange包含文本(并且您还将格式应用于文本范围)

所以:

Option Explicit  
' but of course!

Sub MakeATitle()

    Dim oSh As Shape
    Dim myDocument As Presentation
    Dim oSl As Slide
    Dim sTitle As String
    ' I wouldn't use Title as a variable; it may be a reserved word

    sTitle = "Here is your title"

    Set myDocument = ActivePresentation

    ' I'm putting the title on slide 1
    ' Change this as needed, of course
    Set oSl = myDocument.Slides(1)

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

    With oSh.TextFrame.TextRange
        .Text = sTitle
        With .Font
            .Size = 24  ' points
            .Name = "Arial"
        End With    ' Font
    End With    ' TextRange
End Sub