1

Microsoft Word 2010 で VBA を書くこと (誰も好きな仕事ではありません)。テキストボックスの垂直位置をドキュメント内の場所に固定しようとしています。これにより、テキストが前に追加されると、テキストボックスはその相対的な位置を保持します (つまり、テキストがリンク先の場所の前に挿入されると下に移動します)。

私のコードは

ActiveDocument.Shapes.AddTextbox(msoTextOrientationHorizontal, 372, 400, 120, 120).Select

With Selection
    .ShapeRange.TextFrame.TextRange.Select
    .Collapse
    .TypeText Text:="Text box placement test"

    With .ShapeRange
        .Select
        .RelativeHorizontalPosition = wdRelativeHorizontalPositionColumn
        .RelativeVerticalPosition = wdRelativeVerticalPositionPage
...

私が考える鍵は、この最後のプロパティ、RelativeVerticalPosition です。

私はそれを wdRelativeVerticalPositionLine に変更しようとしました: これは最初の段落で機能します (つまり、テキスト ボックスはテキスト内の位置に固定されているため、正しく移動する前にテキストが追加された場合): ただし、2 番目以降の段落では垂直位置は完全に間違っています。

LockAnchor プロパティを変更しようとしましたが、変更はありません。

欲求不満は、これが手動で実行できることです (ページ レイアウト、グループの配置、テキストの折り返し、その他のレイアウト オプション、位置、テキストをオンにしてオブジェクトを移動 = チェック済み) が、Word ではテキスト ボックスのプロパティを変更するマクロを記録できません。機能させるための設定の組み合わせが見つかりません。

助言がありますか?それとも、これは 20 年以上前のコードを使用した結果の 1 つにすぎませんか?

4

1 に答える 1

0

まず、RelativeVerticalPosition も設定する必要があります。
次に、.ShapeRange の使用には注意してください。.ShapeRange の不適切な使用が問題になる場合があります。
それは私のコードからの小さなスニペットです。Word 2010でテストしました。

Dim oShp As Shape
Set oShp = Selection.ShapeRange(1)
oShp.RelativeHorizontalPosition = wdRelativeHorizontalPositionColumn
oShp.RelativeVerticalPosition = wdRelativeVerticalPositionLine


したがって、「テキストでオブジェクトを移動する」がチェックされていない場合、コードの実行後にチェックされます。

于 2014-07-23T08:13:51.407 に答える