仕事でWordで文章を打ちながら時々画面をキャプチャすることがあったので、段落記号の表示/非表示を切り替えるマクロのボタンを作りました。
次のようなマクロです。
ところがこれが動きません。
Word2003までは動いていたマクロです。
VBAは見よう見まねでいじっているレベルですが、
間違ってはいないはずです。
仕事で使っているWordは2007です。
ネットで調べると同じように困っている方が何人かいらっしゃいました。
その方々の調査によると、
Word2007から、
オプションの設定の「常に画面に表示する編集記号」の中で段落記号だけがVBAで制御できなくなっているようだとのことでした。
マイクロソフトのフォーラムにも質問が来ているのに中の人は見て見ぬ振りをしているようです。
マクロの記録もできますが、不思議なことに上記オプション設定で段落記号のチェックを外すと
ActiveWindow.View.ShowParagraphs = True
となり、チェックを入れると
ActiveWindow.View.ShowParagraphs = False
となります。
なにかプログラムが前後不覚に陥っているような触れると壊れそうな雰囲気です。
この辺にマイクロソフトの人が知らぬ存ぜぬを貫く理由が隠されているのかもしれません。
なお、家に帰って、買ったばかりのWord2016で同じようにマクロの記録を試したら、
全く同じ結果となりました。
そして上記の段落記号表示切替えマクロは動きませんでした。
最新版でも変わっていませんよ。
いちいちオプション画面を操作するのは面倒ですが、解決策はなさそうです。
で、違うアプローチを思いつきました。
コントロールIDを指定して指示してあげれば動いてくれるかも!
動きました!
このマクロを登録したボタンを押す度に段落記号が消えたり現れたりします。
大成功です。
次はこのマクロを家に持って帰ってWord2016で走らせます。
ダメですね。
なぜバージョンごとにコントロールIDを変えるのか。
上記のID3252はWord2007のIDです。
Word2016のコントロールIDを調べるのが面倒くさいです。
コントロール名は ParagraphMarks です。
ありました。
Word2016の ParagraphMarks のコントロールIDは119です。
動きました。
どうせなら裁ちトンボも同時に消えたり現れたりさせたいので、そのIDもついでに調べようと思ったらコントロール名が分かりません。
まあじっくり調べます。
さて、もうひとつ。
Mac版2016ではどうでしょうか。
ダメでした。
コントロールIDが違うのでしょうか。
でも ParagraphMarks のID119はWord365でも同じ119なのでMac版も同じなのでは?
じゃあそもそもこのマクロを受け付けないの?
なんだか謎が深いです。
Mac版OfficeのコントロールIDリストは全然見つからないし、Mac版はハードルが高いや!
次のようなマクロです。
Sub 段落記号表示切替え() If ActiveWindow.View.ShowParagraphs = True Then ActiveWindow.View.ShowParagraphs = False Else ActiveWindow.View.ShowParagraphs = True End If End Sub
ところがこれが動きません。
Word2003までは動いていたマクロです。
VBAは見よう見まねでいじっているレベルですが、
間違ってはいないはずです。
仕事で使っているWordは2007です。
ネットで調べると同じように困っている方が何人かいらっしゃいました。
その方々の調査によると、
Word2007から、
オプションの設定の「常に画面に表示する編集記号」の中で段落記号だけがVBAで制御できなくなっているようだとのことでした。
マイクロソフトのフォーラムにも質問が来ているのに中の人は見て見ぬ振りをしているようです。
マクロの記録もできますが、不思議なことに上記オプション設定で段落記号のチェックを外すと
ActiveWindow.View.ShowParagraphs = True
となり、チェックを入れると
ActiveWindow.View.ShowParagraphs = False
となります。
なにかプログラムが前後不覚に陥っているような触れると壊れそうな雰囲気です。
この辺にマイクロソフトの人が知らぬ存ぜぬを貫く理由が隠されているのかもしれません。
なお、家に帰って、買ったばかりのWord2016で同じようにマクロの記録を試したら、
全く同じ結果となりました。
そして上記の段落記号表示切替えマクロは動きませんでした。
最新版でも変わっていませんよ。
いちいちオプション画面を操作するのは面倒ですが、解決策はなさそうです。
で、違うアプローチを思いつきました。
コントロールIDを指定して指示してあげれば動いてくれるかも!
Sub 段落記号表示切替え() Application.CommandBars.FindControl(ID:=3252).Execute End Sub
動きました!
このマクロを登録したボタンを押す度に段落記号が消えたり現れたりします。
大成功です。
次はこのマクロを家に持って帰ってWord2016で走らせます。
ダメですね。
なぜバージョンごとにコントロールIDを変えるのか。
上記のID3252はWord2007のIDです。
Word2016のコントロールIDを調べるのが面倒くさいです。
コントロール名は ParagraphMarks です。
ありました。
Word2016の ParagraphMarks のコントロールIDは119です。
Sub 段落記号表示切替え() Application.CommandBars.FindControl(ID:=119).Execute End Sub
動きました。
どうせなら裁ちトンボも同時に消えたり現れたりさせたいので、そのIDもついでに調べようと思ったらコントロール名が分かりません。
まあじっくり調べます。
さて、もうひとつ。
Mac版2016ではどうでしょうか。
ダメでした。
コントロールIDが違うのでしょうか。
でも ParagraphMarks のID119はWord365でも同じ119なのでMac版も同じなのでは?
じゃあそもそもこのマクロを受け付けないの?
なんだか謎が深いです。
Mac版OfficeのコントロールIDリストは全然見つからないし、Mac版はハードルが高いや!
※コメント投稿者のブログIDはブログ作成者のみに通知されます