猫を捨てる奴は捨てられろ

猫とプログレとオーディオとベスパのブログです。

Wordの段落記号の表示/非表示をマクロで切り替えられなくなったけど解決しました

2018年03月16日 00時00分00秒 | その他
仕事でWordで文章を打ちながら時々画面をキャプチャすることがあったので、段落記号の表示/非表示を切り替えるマクロのボタンを作りました。

次のようなマクロです。

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版はハードルが高いや!





コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« BABYMETAL RED FOX FESTIVAL | トップ | クリムゾンはもう新作を出す... »
最新の画像もっと見る

コメントを投稿

その他」カテゴリの最新記事