0

MS Publisher に 1000 ページのドキュメントがあります。

すべての TextFrame のサイズを変更する必要があります。1ページに4枚ほどあります。

私のマクロは次のようになります。

Sub Resize_Textbox()
Dim pubPage As Page
Dim pubShape As Shape
For Each pubPage In ActiveDocument.Pages
    For Each pubShape In pubPage.Shapes
        If pubShape.Type = pbTextFrame Then
            pubShape.TextFrame.Height = "21.5 cm"
            If pubShape.TextFrame.Width = "18 cm" Then
                pubShape.TextFrame.Width = "12.6 cm"
            End If
            If pubShape.TextFrame.Width = "8.75 cm" Then
                pubShape.TextFrame.Width = "6.3 cm"
            End If
        End If
    Next pubShape
Next pubPage
End Sub

マクロ セキュリティを確認し、すべてのマクロを有効にしました。私はすべてを保存しました。

テキストフレームの高さを変更したい行にエラーが表示されます。

4

2 に答える 2

0

私は自分が間違っていたことに気づきました。私はちょうどこのようにしなければなりませんでした:

pubShape.Height = ...

真ん中に TextFrame がありません。

于 2016-05-31T13:38:50.220 に答える
0

VBA では、高さと幅のプロパティは、文字通りの cm ではなくポイント単位で行われます。これを使用CentimetersToPointsして必要な値に変換できます。

pubShape.TextFrame.Height = CentimetersToPoints(21.5)

「cm」サフィックスを含めないでください。

編集\追加:

テストを実行しましたが、エラーが発生しませんでした。違いは、宣言された変数を使用していたことです。エラー メッセージは通常set =、その前に必要なこと、または存在しないものを参照していることを意味します。

メソッドで以下を試して、動作するかどうかを確認してください (このサンプルはページ 1 のみを実行することに注意してください)。

Public Sub test()
Dim pg As Page
Dim shp As Shape

Set pg = ThisDocument.Pages(1)
    For Each shp In pg.Shapes
        If shp.Type = pbTextFrame Then
            shp.Height = CentimetersToPoints(5)
        End If
    Next
Set pg = Nothing

End Sub
于 2016-05-29T21:20:05.120 に答える