我尝试使用VBA在powerpoint的幻灯片顶部创建一个文本框(关于这句话太多让我感到难过)。我在网上看到的很多例子似乎都没有使用" Option explicit"宏实践,因为我在示例中看到的一些变量没有被声明或明确地输入。
无论如何,此时我只需要生成一个文本框,理想情况下为这个文本框获取某种名称,这样我就可以用它来做事,然后修改这个文本框的参数,比如字体大小。最后,我将创建它,以便用户可以输入字符串值并创建自己的工作表,并将其用作模板。
目前我正在使用此功能。 myDocument是幻灯片,title是我已经分配的字符串。这绝对是我需要的,但我无法改变其他任何内容,比如字体大小。
myDocument.Shapes.AddTextbox(msoTextOrientationHorizontal,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
我很遗憾如何使用文本框对象,如何跟踪它们或为它们指定名称,几乎所有关于它们的内容。这对我来说是一个全新的领域。任何帮助都会非常感激
答案 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