システムwiki

チェックボックスを使用してテキストを追加して削除する(ActiveXコントロール)

Sander9 受付中 最終更新日:2021-06-15 03:28

こんにちは、

チェックボックス(ActiveXコントロール)を使用して、ブックマークの範囲内の特定のテキストを挿入(チェックしない)を挿入(チェック解除)します.

テキストを挿入することは難しくありませんでしたが、(チェックボックスがオフの場合)を削除する方法(チェックボックスがオフの場合)挿入されたテキスト?

これをやるための簡単な方法があることを願っています.

プライベートサブCHBTEST_CLICK()

chbtest.value= trueの場合、

薄型テスト範囲

test= activeDocument.bookmarks( "bkmtest")を設定します.範囲

test.text= "成功しました!"

else

.........?

の場合は終わります

終了SUB


-

私の2番目のステップは、スクリプト内のテキストの代わりに自己製のビルディングブロックを使用することです.VBAから特定のビルディングブロックに到達できますか?私はまた、コンピュータ上のMicrosoftフォルダの代わりにビルディングブロックがドキュメントに追加されます.

誰かが私に私に説明することができますか?

サンダー

返信リスト(回答:6)

4 #
GregMax

2枚のピースの場合、ビルディングブロックは文書に保存されていないため、テンプレートに保存されます.しかし、コードはこのようなものになるでしょう:
プライベートサブCHBTEST_CLICK()
薄型範囲
ActiveDocument.bookmarks.exists( "bkmtest")が
orng= activeDocument.bookmarks( "bkmtest").範囲
ChbTestの場合
orng= activeDocument.AttachedTemplate.BuildingBlockTypes(wdtypeautotext).業種(「シグネチャ」)._
ビルブロック( "John Hancock")挿入(= orng、richtext:= true)


orng.text= vbnullString

の場合は終了 ActiveDocument.bookmarks.add "bkmtest"、orng

の場合は終了 lbl_exit:


終了SUB

応答4# ->にスキップ
3 #
Sander9

こんにちはグレッグ、

私は別の質問があります.

私は3つの異なる方法で建物ブロックを保存することができます:

  • normal.dotm
  • ビルディングブロック
  • 個人保存テンプレート

コードを使用する場合、私は通常のものとして保存されているビルディングブロックにのみ到達できます.dotm.テンプレートにのみ接続できるように、ビルディングブロックは文書に接続されていません.だから私はビルディングブロックを個人的に保存されたものとして保存する必要があると思います
テンプレート.私はこれを試してみましたが、コードはもう機能していません.コードを書き換える必要はありますか?

サンダー

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

あなたの質問:
の目的は何ですか:

lbl_exit:

SUB

を終了します

チャールズが正しく述べたように、他の人の個人的なスタイル(明らかにチャールズや他の人が採用している)は、投稿されたマクロでは、本当に役に立ちません.スタイルが常に最終サブ行にプロシージャを実行することを回避する例外を指定していません.

これは、Lable "LBL_EXIT:"が使用されている例です.定義されたBBが存在しない場合、エラーが発生します.エラーは扱われ、実行はlbl_exit:label.

プライベートサブCHBTEST_CLICK()
薄型範囲
erry_bb

ActiveDocument.bookmarks.exists( "bkmtest")が
orng= activeDocument.bookmarks( "bkmtest").範囲
ChbTestの場合
orng= activeDocument.AttachedTemplate.BuildingBlockTypes(wdtypeautotext).業種(「シグネチャ」)._
ビルブロック( "John Hancock")挿入(= orng、richtext:= true)


orng.text= vbnullString

の場合は終了 ActiveDocument.bookmarks.add "bkmtest"、orng

の場合は終了 lbl_exit:


err_bb:
MsgBox "BuildingBlockの署名は存在しません"、vbinformation + vbokonly、 "no bbが見つかりました"
LBL_EXITを再開する
終了SUB

今、他の質問と私の習慣のために.BuildingBlockを使用することは、建物ブロックを保持しているテンプレートにアクセスすることになる文書のユーザーの中でのみ、またはユーザーのユーザーのユーザーのユーザーを使用しているだけです.明らかにそれはあなたのものではありません
通常のテンプレートまたはあなたの建物ブロックテンプレート.私の意見ではそれ自体では別の道を進める理由です.ActiveXコントロールとブックマークを使用している理由は、コンテンツコントロールの可用性を考慮して少し日付です.

すべての潜在的な文書ユーザーがWord 2013以上を使用する場合、これは私がそれをする方法です.

1.マイドキュメントでは、タグ "chbtest"

を使ってチェックボックスのコンテンツコントロールを入力します.

2.私は2つのRichTextコントロールを最初にタグしますが、「シグネチャ」タグと2番目にタグ "chktreue"

3.My CCツールの使用インストラメータ機能を使用すると、ドキュメントのコンテンツコントロールをマッピングします.

リンク:コンテンツ制御ツール

4.変数コンテンツを追加します.例えば、CCタグ付きChbtrue

にJohn Hancockの署名グラフィックを使用しました.

5.CCタグ付きCHBTRUE

を削除します.

6.次のコードをドキュメントのこの文書モジュールに追加します.

プライベートサブDocument_ContentControlBeForeContentUpdate(ContentControlとしてのByVal ContentControl、文字列としてのコンテンツ)
CustomXMLPartとして薄暗いOCXP
ContentControl
.tag= "chbtest"
の場合 ocxp=.xmlmapping.customxmlpartを設定する

の場合 OCXP.SELECTSINGLENODE( "/NS0:CC_MAP_ROOT [1]/NS0:Signature [1]").text= _
OCXP.SELECTSINGLENODE( "/NS0:CC_MAP_ROOT [1]/NS0:CHKTRUE [1]").テキスト


OCXP.SELECTINGINGLENODE( "/NS0:CC_MAP_ROOT [1]/NS0:署名[1]").text= "" ""
の場合は終了
の場合は終了

lbl_exit:
ocxp= nother


終了SUB

このように、すべてが文書自体にうまくいっぱいになっています.保存されたコンテンツを編集する必要がある場合は、CCツールアドインを使用してRichText CCをCHBTextノードに作成してマッピングできます.変更を変更して削除します
CC.

応答3# ->にスキップ
2 #
Charles

最初の質問:このマクロには何もしません.

Gregは、マクロ全体を実行しないが、画面を更新するように特定のコマンドを処理することができるようにすることがよくあります.これは私が採用した習慣です.

これがコードを使用してビルディングブロックを挿入する上のマリの素材です:

自動テキストエントリまたはビルディングブロックを招くようにVBAを使用する

これは私のビルディングブロックを保存する場所についての私の考えです:

ブロックを構築することができる場所は保存できますか?

それらの考えの下線:私はそれらを通常のテンプレートにも構築ブロック.dotxテンプレートに保存しないことをお勧めします.どちらかに入れることをお勧めします ドキュメントテンプレート またはA. グローバルテンプレート 彼らがグローバルに使用されるかどうか、またはテンプレートに基づいて文書内で使用されるべきかどうかによって.

私の経験彼はめったに、そして通常最悪の時間で、厄介なことが通常のテンプレートとビルディングブロックのテンプレートに起こる.さらに、それらをカスタムテンプレートに入れると、それらをはるかに共有可能で転送可能にします.

応答4# ->にスキップ
6 #
Sander9

私は残っている疑問があるだけの質問しかありません.

使用するスクリプトの最後に:

lbl_exit:
SUB

を終了します

これは正確に何をしますか?追加または削除した場合は違いはありません.

サンダー

5 #
GregMax

あなたがブックマーク範囲にテキストを書くときはいつでも、あなたがそれを再現する必要があるようにブックマークを破壊してください:
プライベートサブCHBTEST_CLICK()
薄型範囲
ActiveDocument.bookmarks.exists( "bkmtest")が
orng= activeDocument.bookmarks( "bkmtest").範囲
ChbTestの場合
orng.text= "成功しました!"


orng.text= vbnullString

の場合は終わります

ActiveDocument.bookMarks.add "bkmtest"、orng


の場合は終了 lbl_exit:


終了SUB