9

概要:私の会社は顧客に手紙を送り、Word 文書で設定されたさまざまなテキスト フォーム フィールドに入力するマクロを書いてほしいと思っています。Excel でマクロを作成したことはありますが、ms-word マクロとの出会いはこれが初めてです。

問題: ms-word による効果的でインテリジェントなナビゲーションを見つけるのに苦労しました。 矢印キーと実際に同じであるさまざまな方向への移動に関するこの記事を見つけました。Word 文書をナビゲートするための最良の方法についての洞察を得ることを望んでいました。たとえば、意味のあるものが見つかるまで右の 1 スペースに移動するループを実行する必要がありますか、それともより効果的な方法がありますか?

質問:特定のフォームの場所を変数に格納することは可能ですか、それとも ms-word には座標系がありませんか?

前もって感謝します!

4

3 に答える 3

12

コンテンツ コントロールを操作するにTitleは、コントロールの が設定されていることを確認する必要があります。必要に応じても設定できTagます。スナップショットを見る

ここに画像の説明を入力

そして、このコードを使用して、コンテンツ コントロールを更新したり、その値を取得したりできます。

Sub Sample()
    Dim cc As ContentControl

    For Each cc In ActiveDocument.ContentControls
        If cc.Title = "MyTextBox1" Then
            cc.Range.Text = "Hello World!"
            Exit For
        End If
    Next cc
End Sub

コードを実行すると、このように表示されます

ここに画像の説明を入力

コントロールのテキストを取得するには、使用できますDebug.Print cc.Range.text

于 2012-08-16T16:25:05.563 に答える
7

最近の Windows バージョンの Word には、少なくとも 3 種類のフォーム フィールドがあります。コンテンツ コントロール、「レガシー フォーム フィールド」、および ActiveX フォーム フィールドです。レガシー フォーム フィールドを扱っていると仮定すると、ブックマーク名を使用して FormFields コレクションにインデックスを付けてから、次のように使用できるはずです。

ActiveDocument.FormFields("Text1").Result = "mytextformfieldresult"

ActiveDocument.FormFields("DropDown1").Result = "mydropdownformfieldresult"

ActiveDocument.FormFields("Check1").Checkbox.Value = True
于 2012-08-16T16:50:02.723 に答える
2

移動する必要のあるドキュメント内のさまざまな場所にブックマークを作成できるはずです。最新のWordでは、これは[リンク]グループの[挿入]タブにあります。次に、VBAからブックマークにアクセスし、次の種類のコードを使用してブックマークにテキストを挿入できます。

ActiveDocument.Bookmarks("myBookmark").Range.InsertBefore "Inserted Text"

このMVPサイトには、この手法に関するより多くのデータがあります。また、MSDNにはブックマークオブジェクトに関するデータがいくつかあります。

于 2012-08-16T13:56:41.713 に答える