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 に答える