システムwiki

ビルディングブロックを挿入するマクロ

PamSimp 受付中 最終更新日:2021-06-15 08:56

特定のビルディングブロック/クイックパートを挿入するマクロを作成するヘルプを願っています.技術的に-それはまた別のマクロの真ん中にフィットしようとしているのは、セクションブレークを挿入し、ヘッダーなどの「前の」と同じ」をオフにすることもできます.
マクロの残りの部分は素晴らしい機能です-私は迅速な部分を呼び出す方法を理解することはできません.また、Templateを起動メニューに移動しようとしましたので、私はactionalttemplateコードを使用して見つけたいくつかの提案をテストできましたが、まだ運さない.これが私のシナリオです:

(1)すべての従業員のコンピュータ上にある「firmbuildingblocks.dotx」テンプレートがあります(c:\users\に格納されています). disnalles_name\appdata\Roaming\Microsoft\Document Building Blocks\1033\14\FirmbuildingBlocks.Dotx).(私は動くことができました
それがそれがあるのかどうかの場合は起動メニューに.)

(2)各人コンピュータでパスが異なる場合でも、特定のビルディングブロックを挿入するマクロが必要です( "条件"と呼ばれる).

返信リスト(回答:16)

12 #
Charles 2

これは、ファイルの場所の単語オプションに指定されているWord Startupフォルダにあるファイル "randomtext.dotm"から、Buildブロック "z_helpfileAlert"を挿入するコードのサンプルです.

サブ挿入済みelpfile()
テンプレートに同じ名前の複数のビルディングブロックがある場合は、機能しません.

薄暗いSSTARTUP
sstartup= application.options.DefaultFilePath(WDStartupPath) application.templates(sstartup&"randomtext.dotm").BuildingBlockentries( "z_helpfileAlert").挿入ここで挿入:= selection.range、_
RichText:= true
終了SUB

スタートアップフォルダのWordでデフォルトのファイルパス定数があり、私が知っているビルディングブロックフォルダにはありません.

マクロを使用している場合は、Buildブロックテンプレートを.DOTMに変更し、テンプレートにマクロを保存することをお勧めします.それはコードをさらに単純にします.

サブ挿入済みelpfile()
テンプレートに同じ名前の複数のビルディングブロックがある場合は、機能しません.

application.templates(thisDocument.fullname).BuildingBlockentries( "z_helpFileAlert").挿入ここで挿入:= selection.range、_
RichText:= true 'これがヘルプファイルであることを示すテキストボックスを挿入する
終了SUB

"ActiveDocument"ではなく "thisDocument"の使用に注意してください."thisDocument"はマクロを含むファイルを示します.

Bjp、フォーラムは現在コードフォーマットを許可していません.

13 #
Suzanne 1

私は別の考えを持っていました.ビルディングブロックが自動テキストエントリとして保存されている場合は、テンプレート自体に保存できますが、挿入できます. エントリ名と押して入力してUIでは f3.同じことを達成するためにマクロ内のSendKeysを使用できることがよくあります.

応答13# ->にスキップ
11 #
Charles

「thisDocument」を持つ同じコードは、そのテンプレートがドキュメントテンプレートであるときに、オートテキストと同じテンプレートに保存されているマクロで機能します.

これはそれのためのより良いマクロです.誤り訂正があるのは同じマクロです.

サブ挿入MYBB()
テンプレートに同じ名前の複数のビルディングブロックがある場合は、機能しません.

wim sbbnameとして文字列として
sbbname= "mybb"
エラーで

application.templates(thisdocument.fullname).buildingBlockentries(sbbname).insertここで、= selection.range、_
RichText:= true 'mybbビルディングブロック
終了サブ '私たちはここで終わりました
おっと:「仕事をしませんでした-ビルディングブロックはありません!
msgboxプロンプト:= "ビルディングブロック"&sbbname&"には見つかりません"&_
thisDocument.name&"."、title:= "うまくいきませんでした!"
エラーの後に0
終了SUB

フォーラムのコードフォーマットはまだ機能しません.

14 #
GregMax

サブスクラッチマコロ()
'Greg Maxeyによってコードされている基本的な単語マクロ
Templateとしての薄暗いOTMP
テンプレートの各OTMPの場合
ucase(otmp.name)= "FirmbuildingBlocks.dotm"が
を終了します. 次のOTMP
そうでなければ、otmpは何も
OTMP.BuildingBlockTypes(WDTypeQuickParts).業種(「一般」).BuildingBlocks( "用語")selection.range、true

msgbox "必須のビルディングブロックテンプレートがロードされていません."
の場合は終了 lbl_exit:
SUB

を終了します



注意:コードは、Building Blockは「用語」と名前を付け、テンプレートQuickPart Galley、一般カテゴリに保存されています.

応答14# ->にスキップ
8 #
Charles

テンプレートが存在し、Building Blocksフォルダにある場合でも、エラーメッセージが表示され、エントリの「用語」が存在しました.タイピング用語とF3を押すと挿入されます エントリ.

私はまたwdtypeautotextでそれを試しました.

テンプレートはmybb.dotxです.マクロ(DeleteMeに含まれる)が実行されるまでプロジェクトリストにはありませんでした.

繰り返しになりますが、それらを使用することができるマクロ(またはキーボードショートカットまたはQATエントリ)を使用することができるビルディングブロック(またはキーボードショートカットまたはQATエントリ)を使用することができる場合は、ビルディングブロックを使用しているすべてのカスタマイズは同じテンプレートにあり、そのテンプレートはbeう スタートアップフォルダ Building Blocksフォルダではなく.デフォルトでは、Building Blocksフォルダ内のテンプレートに含まれるカスタマイズ(ビルディングブロック以外)は単語によって無視されます.また、信頼できる場所はめったにありません.

私は彼らのコーディングの専門知識のためにGregとJayの両方にお辞儀をします.両方とも私よりも単語やビルディングブロックについてはるかに多く知っています.私は他のビルディングブロックタイプよりも自動テキストを使います.

上記の結果は、単語2010用です.

応答8# ->にスキップ
7 #
GregMax

チャールズ、

私たちはお互いの上に投稿しています. -)

ucase(otmp.name)が "mybb.dotx"

になる方法はありません.

それをucase(otmp.name)= "mybb.dotx"

に変更します.

応答7# ->にスキップ
4 #
Charles 1

ありがとうございました.今は元気です.

私は完全にUケースの目的を逃しました.:(

マクロで使用されている名前にケースの違いをフィルタリングするのはあります.

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

OBBが代わりにBuildingBlockSentriesを使用して割り当てる行を書き直します.

set obb= otmp.buildingBlockentries( "kim")

タイプを指定する必要はありません.問題を引き起こす可能性がある「用語」という名前の複数のビルディングブロックがある場合、問題があると思います.

私はますますますます発見しています.これは、「用語」という名前の1つのテンプレートに複数のビルディングブロックを示すスクリーンショットです.上記のコードを使用すると、最初に作成されたものが最初にページ番号ギャラリーに引っ張っているようです.同じことが起こります
入力名を入力してF3を押すと!

これは、「用語」という名前の同じテンプレート内の3つのエントリを示しています.3つの「タイル」という名前の「タイル」という名前の3つの名前もあることがわかりました.これらはすべて内蔵のBuildブロックの一部です.

今、私はあなたのコードの理由を見ます.それはより多くの特異性が必要ですが、1つのビルディングブロックを生じるだけです.

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

チャールズ、

Building Blockを使用している単語の4つのversionでは、それはあなたがgetusingblockentries( "?")を整理するかもしれないものを整理しようとしているドキドキの頭痛につながる可能性があります.挿入と「?」 + F3.

ここでは、Word 2010(Autotextギャラリーがデフォルトのギャラリーです)を使用しています.ページ番号ギャラリー/シンプルカテゴリのビルディングブロック名「用語」を作成した場合は、QuickParts Gallery/Generalカテゴリの「用語」という名前の「用語」という名前で「用語」という名前のものがあります.
オートテキストギャラリー/一般カテゴリ、最初に作成されたものは常に挿入されます BuildingBlockentries(「用語」)を使用してください.挿入ただし、「用語」と(AutoComplete InformationEnabledがあります)と入力してEnterキーまたはF3を押すと、デフォルトのオートテキストギャラリーに作成されたもの
is isedered.

あなたが発見されたように、コードを使って唯一の安全な賭けの唯一の安全な賭けが長い時間を超えて、それ以降、それ以降のギャラリー、カテゴリと名前は1つだけになることがあります.

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

ありがとう、Greg.予測不可能であることは疑いません.私のシステムでは、F3を使用すると、オートテキストギャラリーの1つの代わりに最初に作成されたページ番号ギャラリーからのものをプルします.Noteは、Building Blocksフォルダにあるテンプレートにあります.
Normal.dotmでは、起動フォルダ内のテンプレートでも.

私は、タイプとカテゴリを指定するものを含めて、仕事をしていないときに、警告を掲載しているマクロをいくつか置きました. ビルディングブロック、オートコレクト、オートフォーマットのページ .このスレッドにリンクを取り戻します.BuildingBlockSentriesを使用したものには、テンプレートに同じ名前のエントリが複数ある場合は機能しないコメントが含まれています.それは持っています
BuildingBlockTypeとGallery名とカテゴリ名を使用して、マクロを含むテンプレートで、マクロ.

私は自分自身のためにビルディングブロックを挿入するためにマクロを使用している人々が同じ名前に同じ名前の複数のビルディングブロックを持つことになると思います.しかし、他の人のためのテンプレートを作成する際のMSをエミュレートするものは、ブロックを構成するために同じ名前をよく使うかもしれません
一緒に使用されることを意図しているさまざまな種類の.これらのテンプレートを作成するために、おそらくこのスレッドの元のポスターを含め、その制限は非常に重要です.

マクロとビルディングブロックがQATアイコンを持つのと同じテンプレートにある場合、インスタンスのデモテンプレートを作成しました.それはです 私のダウンロードページについて

応答14# ->にスキップ
9 #
Charles

.dotmが字型であるかどうかわからない.Building Blocksフォルダに格納されているテンプレートにマクロを入れる意味はありません.それらはアドインとしてロードされていません.
マクロが実行されると、Jayの追加がそれらをロードすると思います.

テンプレートがロードされていてもBBエントリが存在しない場合は、エラーメッセージも実行されます.

Building Blockを含む同じテンプレートにマクロを強く促し、ドキュメントテンプレートでない限り、そのテンプレートをアドインとしてロードすることを促します.

応答9# ->にスキップ
6 #
GregMax

ジェイ、私はテンプレートを過負荷にしました.ロードビルディングブロックはかなり前に、私は追加しました:

Templates.LoadBuildingBlocks

私が普通の.dtomに持っているAutoExecマクロに.それを指してくれてありがとう.

ブレーク

チャールズ、

はい.DOTMは、マイファイルがデフォルトでマクロエント有効になっているため、タイプミッシュでしたが、OPSテンプレートが.dotx形式であることに気付きませんでした.それを指してくれてありがとう.ただし、Block Templatesをマクロで有効にするためのBuilding Block Templatesを構築するためのWordは完全にコンテンツです.
マクロ対応テンプレートは、他のプロジェクトでは参照として設定できます.

ドキュメントビルディングブロックフォルダに格納されているテンプレートが「ロードされた」としても、グローバルテンプレートとアドインリストには表示されません.

私の元のコードにエラー処理やエラーメッセージはありませんでした.そのコードは教科書ソリューションであることを意図していませんでした.私は単にあなたがその構成ブロックが定義されているテンプレートを「取得」しなければならなかったビルディングブロックを挿入することを識別しようとしていました.
OPはすでにBBが存在していたと述べていました.完全性のために(私は願っています):

SUB SCRATCHMACRO0()
'Greg Maxeyによってコードされている基本的な単語マクロ
Templateとしての薄暗いOTMP
Buildブロックとしての薄暗いobb
Templates.LoadBuildingBlocks
テンプレートの各OTMPの場合
ucase(otmp.name)= "FirmbuildingBlocks.dotm"が
を終了します. 次のOTMP
そうでなければ、otmpは何も
次の
set obb= otmp.buildingblockTypes(WDTypeQuickParts).業種(「一般」).ビルブロック(「用語」)
err.number= 0の場合
obb.insert selection.range、true


MSGBOX「あなたが存在すると仮定すると存在するマクロで特別にハードコードするBBは存在しません.

の場合は終了

msgbox "必須のビルディングブロックテンプレートがロードされていません."
の場合は終了 lbl_exit:


終了SUB

応答6# ->にスキップ
5 #
Charles 1

あなたは私がほとんど毎日新しいことを学ぶのを助けます.ありがとうございました.私は特にさまざまなエラーメッセージが好きです.

応答14# ->にスキップ
10 #
JayFree 3

Gregのマクロは小さな調整が必要です.

起動時間を短くするには、ユーザーがそれを必要とするものをクリックするまで、Wordはビルディングブロックをロードしません-ヘッダー、フッター、カバーページなどのビルディングブロックギャラリーの1つを表示するか、挿入しようとしています.オートテキスト
エントリ.その前にマクロを実行すると、テンプレートがロードされていないことがわかります.

Tweakはfor/nextループの前にこのステートメントを追加することです:

Templates.LoadBuildingBlocks

これにより、Building Blocksフォルダに保存されているテンプレートをすぐにロードするように強制します.すでにロードされている場合、そのステートメントは何もしません.

15 #
Suzanne 1

特定のビルディングブロックを挿入するようにマクロを記録する場合(「Lorem」という名前)、これは私が得るものです:

application.templates(_
"C:\users\suzanne\appdata\Roaming\Microsoft\Word 2010 Templates\Normal.dotm" _
).BuildingBlockentries( "lorem") true

これは、通常のテンプレートに保存されているカスタム自動テキストエントリです.建材のブロックのために、それを入れるべき単語の言葉に言われた言葉に言われていますが、手術部分はこれです:

application.templates(_
"C:\users\suzanne\appdata\Roaming\Microsoft\Document Building Blocks\1033\14 \組み込みのBuildブロック.Dotx" _
).BuildingBlockentries( "アルファベット").挿入ここで挿入:= selection.range、_
RichText:= true

これから集められることは、パスが絶対的なものであるということですが、VBAでは一般的に指定する方法があります.ユーザープロファイル内の別のフォルダに移動すると、パスにユーザー名が含まれているため、役に立たないでしょう.

16 #
Charles

私の好みはそれを入れることです スタートアップフォルダ (VBAのその設定にアクセスする方法を知っているから)

そこにある場合は、キーボードショートカットとQATアイコンを添付することもできます.(あなたがそれをするならば、それらはあなたのFirmbuildingBlocks.dotxファイルに保存する必要があります.)

私はもっと戻ってきます.