システムwiki

オートテキスト(または同様のもの)を入力するためのチェックボックス

AndyRan 解決済 最終更新日:2022-06-20 04:50

Word2016.

一連のチェックボックスがあり、クリックすると、チェックされているボックスに応じて、定型句に事前設定されたテキストが追加されます.いずれかのボックスがチェックされていない場合、該当する定型句を表示したくありません.

チェックボックス1|チェックボックス4

チェックボックス2|チェックボックス5

チェックボックス3|チェックボックス6

AutoText1

...

定型句2

...

など

定型句が最適なオプションかどうかはわかりません.複数のユーザーがアクセスできるネットワークドライバに、編集権限が制限されたテンプレートとしてドキュメントを保存します.これが定型句で機能しない場合は、他に何をすべきかわかりません.

誰かがこのためのコーディングを手伝ってくれますか?

移動元:Office/Word/Windowsその他/Office2016

返信リスト(回答:4)

4 #
JayFree 4

オートテキストは、他のカテゴリのビルディングブロックと同様に機能します.もちろん、それらはユーザーがドキュメントのベースにしているのと同じテンプレートに保存する必要があり、すべてを動作させるためのマクロも同じテンプレートにあります.
(したがって、*.dotxではなく*.dotmファイルである必要があります.)

編集を制限しているので、レガシーフォームフィールドのチェックボックスを使用します.制限は「フォームへの記入」です.(このタイプの制限は、フォームフィールド外での編集/フォーマットを防ぐだけでなく、次のような多くの機能を無効にします.
スペルチェックおよびグラフィックの挿入として. それらが必要な場合は、回避策があります.)

テンプレートには、可能な定型句の挿入ごとにブックマークが必要です.これが正しく機能するには、テンプレート内の各ブックマークが1つ以上のスペース文字を囲む必要があります.

各チェックボックスの[プロパティ]ダイアログでは、入力マクロと終了マクロを指定できます.このプロジェクトでは、チェックボックスごとに1つずつ、終了マクロのみが必要です.(いくつかのより洗練されたプログラミングでは、1つのマクロですべてのチェックボックスを処理することができますが、それは
後のレッスン.)

各出口マクロは次のようになります.ここでは、数字(このマクロでは1つ、次のマクロでは2つなど)のみが変更されます.

サブExit1()
Dim rg As Range
ActiveDocumentを使用
rg=.Bookmarks( "BK1").Range
を設定します .PassWordの保護を解除する:= ""
If.FormFields( "Check1").CheckBox.Value= True Then
.AttachedTemplate.AutoTextEntries( "AT1").Insert Where:= rg
それ以外の場合
rg.Text= ""
Ifを終了
.Bookmarks.Add Name:= "BK1"、Range:= rg
.Protect Type:= wdAllowOnlyFormFields、NoReset:= True、PassWord:= ""
で終わる
サブの終了

ここでは、チェックボックス「Check1」とブックマーク「BK1」に対応するAutoTextEntryに「AT1」という名前を使用しました.これらには、好きな命名規則を使用できます.テンプレートの編集制限にパスワードがある場合は、それを空の場所に挿入します
.Unprotectステートメントと.Protectステートメントの二重引用符.

テンプレート内のモジュールにマクロを追加し、各チェックボックスの[プロパティ]ダイアログを開いて、対応する終了マクロを設定します(コードが存在するまで、それらの名前はダイアログで使用できません).最後に、「フォームへの入力」保護をオンにします
テンプレートを保存します.

明らかではないかもしれないコード内の事柄についてのいくつかのコメント:

  • AutoTextEntryを挿入できません ドキュメントが保護されている間、(フォームフィールドの外で)ドキュメントに挿入します.マクロは、ドキュメントの保護を解除し、定型句を挿入して、ドキュメントを再保護する必要があります.これは、ユーザーが編集を行うことができないほど迅速に行われます.
    保護がオフになっている間.
  • AutoTextEntryまたはスペース文字が挿入されると、Wordはブックマークを削除します.そのためには、マクロでブックマークを再挿入して、チェックボックスが再び変更された場合にブックマークを再度使用できるようにする必要があります.
  • ブックマークに少なくとも1つの文字が含まれていない場合、挿入はブックマークの右側(外側)に配置され、マクロは正しく機能しません. したがって、最初にスペースが必要です.
  • ドキュメントが再保護されるときに、オプションのパラメータNoResetがFalseであるか省略されている場合、フォームフィールドはデフォルト値に戻ります.Trueに設定すると、現在の値が消去されなくなります.

応答4# ->にスキップ
2 #
AndyRan

編集-ブックマークにスペース文字が1つ含まれていないことに気づきました.修正済み

また、編集を制限する必要があることも認識しています.「フォームへの入力」と「保護の実施を開始」を選択しました.これにより、機能的なレガシーチェックボックスが表示されます.

また、オートテキストとそのマクロをテンプレート内に保存できなかったことにも気づきました.これは修正されたと思います.

まだ機能していません.


上に含めたものに基づいて並べ替えたと思いましたが、うまくいきません.

ドキュメントは.dotmファイルとして保存されます.

すべてのプロパティ(つまり、チェックボックス名、ブックマーク名、定型句名はコードと一致している必要があります.

https://imgur.com/a/fWGwU

応答2# ->にスキップ
1 #
JayFree 1

もう1つのステップが必要だと思います.テンプレートに別のチェックボックスを追加します.

マクロは、カーソルがチェックボックスの外に移動したときにのみ実行されます(これが「終了」マクロである理由です).ドキュメントにフォームフィールドが1つしかない場合、カーソルを移動する場所がありません.つまり、フォームフィールドの一部ではないテキストにカーソルを入れることはできません.
Check1ボックスに座っているだけで、終了マクロを実行することはありません.

応答1# ->にスキップ
3 #
AndyRan

うわー、それがハハかかったすべてだとは信じられません.

コードをいじくり回して、短期間で1トンを学びました.ジェイ、どうもありがとう.