1

PPT シェイプを画像ファイルにエクスポートしようとしていますが、PowerPoint がテキストの長さに合わせてシェイプのサイズを変更しています。

VBA にオートサイズ機能があることは知っていますが、PowerPoint 2013 で msoAutoSizeTextToFitShape 機能を使用できません。

私のコードは次のとおりです

Sub RunMe()
    Dim MyShape As Shape
    Dim i As Integer
    Dim S(0 To 2) As String

    Set MyShape = ActivePresentation.Slides(1).Shapes.AddShape(msoShapeRectangle, 50, 50, 100, 40)
    S(0) = "short text"
    S(1) = "Medium length text"
    S(2) = "Really Really Long and descriptive Text"
        For i = 0 To 2
            With MyShape
                '.TextFrame.AutoSize = PowerPoint.ppAutoSizeMixed
                .TextFrame.TextRange.Text = S(i)
                .Export "C:\temp\" & "\" & S(i) & ".png", ppShapeFormatPNG
            End With
        Next i
End Sub

ご覧のとおり、生成された画像のサイズは異なります。同じサイズの画像を作成する方法はありますか?

4

2 に答える 2

0

テキストのサイズを調整して形状内に収まるようにするか、形状を調整してテキストのサイズに合わせることができます。私の推測では、あなたは前者が欲しいので、これを試してみてください:

Sub RunMe()
    Dim MyShape As Shape
    Dim i As Integer
    Dim S(0 To 2) As String
    Dim sngOriginalSize As Single

    Set MyShape = ActivePresentation.Slides(1).Shapes.AddShape(msoShapeRectangle, 50, 50, 100, 40)
    S(0) = "short text"
    S(1) = "Medium length text"
    S(2) = "Really Really Long and descriptive Text"
        For i = 0 To 2
            With MyShape
                .TextFrame.TextRange.Text = S(i)

                ' store original text size
                sngOriginalSize = .TextFrame.TextRange.Font.Size

                ' decrement font size until the text fits
                ' within the shape:
                Do While .TextFrame.TextRange.BoundHeight > MyShape.Height
                    .TextFrame.TextRange.Font.Size = .TextFrame.TextRange.Font.Size - 1
                Loop

                .Export "C:\temp\" & "\" & S(i) & ".png", ppShapeFormatPNG

                ' reset the text to original size
                .TextFrame.TextRange.Font.Size = sngOriginalSize
            End With
        Next i
End Sub
于 2013-09-26T16:12:48.300 に答える
0

現在の PC にバージョン 2003 がインストールされているため、以下はテストされていません

一部のウェブサイトによるとTextFrame2、2007 年以降の新しいプロパティです。

msoAutoSizeTextToFitShape代わりに試着できTextFrame2ます。

編集 :

バージョン2010の自宅のPCでこれを試してみましたが、問題ないようです。試してみる。TextFrameコードを次のように置き換えますTextFrame2

于 2013-09-26T09:34:20.883 に答える