4

我正在使用 PowerPoint 2007,我想编写一个在幻灯片中创建文本框的宏。

但是,文本框中的文本默认对齐到中心。

我想把它左对齐,但我不知道该怎么做。如何更改此文本框的对齐方式?

这是我的代码。

Set objPPT = CreateObject("PowerPoint.Application")
Set SQ = objPPT.Presentation

......

SQ.Slides(i + 6).Shapes.AddTextbox(msoTextOrientationHorizontal, 50, 100, 600, 100).Select
objPPT.ActiveWindow.Selection.TextRange.Text = titre
4

2 回答 2

6

首先,选择代码中的任何内容或依赖当前选择通常不是好的做法,因为它会使您的代码速度降低几个数量级。

相反,是这样的:

Dim oSh as Object ' if you're using late binding, as Shape if early binding

Set oSh =  SQ.Slides(i + 6).Shapes.AddTextbox(msoTextOrientationHorizontal, 50, 100, 600, 100)
' notice that I've removed the .Select from the end of the line above

With oSh.TextFrame
  .TextRange.Text = "something"
  .TextRange.Paragraphs.ParagraphFormat.Alignment = ppAlignLeft
End With
于 2012-07-18T14:44:47.690 回答
3

我相信您的问题的答案在于Shape.TextFrame.TextRange对象属性

oPPShape.TextFrame.TextRange.ParagraphFormat.Alignment = msoAlignLeft

只是对你和史蒂夫的帖子的评论。如果您真的使用此代码和对象进行后期绑定,您还需要记住定义 PowerPoint 库中的常量,例如msoTextOrientationHorizontal. 当您从项目中删除 PPT 引用时,您会很快发现哪些常量被遗漏了。与 Excel 一样,将宏分发给具有不同版本的用户最好通过后期绑定来完成,其中 Office 产品引用与版本无关。

'Bind to an existing or created instance of Microsoft Powerpoint
Dim objPPTApp As Object
On Error Resume Next
Set objPPTApp = GetObject(, "Powerpoint.Application")
If Err.Number <> 0 Then: Err.Clear: Set objPPTApp = CreateObject("Powerpoint.Application")

更多后期绑定在这里。

于 2012-09-01T20:55:03.110 回答