Word2013で文書を開いた時、
- [編集記号の表示/非表示]はオフにして、
- 段落記号は常にする。
にしたいので、
- 白紙の文書から、
- Wordのオプション ⇒ 表示 の「常に画面に表示する編集記号」のチェックをすべて外し、
- 文書の画面に戻って[編集記号の表示/非表示]をオンにした。
- [マクロの記録]を開始
- 【マクロの記録】ダイアログボックスで下記を入力し[OK]
- マクロ名:“段落記号を表示する”
- マクロの保存先:文書1(文書)
- [ファイル]⇒[オプション]⇒[表示]と進め、
- ☑ 段落記号
□ すべての編集記号を表示する - [OK]
- 【マクロの記録】ダイアログボックスで下記を入力し[OK]
- [マクロの記録]終了
完成したマクロは下記であった。
Sub 段落記号を表示する() ' ' 段落記号を表示する Macro ' ' ActiveWindow.View.ShowParagraphs = False ActiveWindow.View.ShowAll = False End Sub
- ☑段落記号としたのに、ShowParagraphs = False はおかしいなぁ‥‥ とヘルプ(英文)を参照した‥‥
が、Exampleでは「段落記号を隠す」が False になっている。
どう考えても Excelがおかしい... - マクロを動かしてみると、
- ShowParagraphs = False でも ShowParagraphs = True でも動作しない。
- ShowAll = False は正しく動作する。
- “ShowParagraphs” でググる‥‥ と、
- Word2007 VBAで ShowParagraphの値を変更できない(マイクロソフト コミュニティ 質問日 2月 3, 2015)
ShowParagraphsプロパティは、Word2007以降だと実行しても有効にならないようですね。
ShowParagraphsプロパティをToggleで動作をするように書き換えても、同じ項目にある他のチェック項目は動作するのに、ShowParagraphsプロパティのみ無意味になっているようです。
そこで、ShowParagraphsプロパティのみ手動で有効なダイアログボックスから実行する方法を検討してみました。Sub ChangeSetting() With ActiveDocument.ActiveWindow.View
これなら、ShowParagraphsプロパティを実行したときと同じ動作をしてくれると思います。
.ShowAll = True
.ShowHiddenText = False
End With If ActiveDocument.ActiveWindow.View.ShowParagraphs = False ThenSendKeys ("{Tab}")
SendKeys ("%m")' 表示オプションをすぐに閉じたい場合は有効にする
' SendKeys ("{Enter}") Dialogs(wdDialogToolsOptionsView).Show End IfEnd Sub
- Word2007 VBAで ShowParagraphの値を変更できない(マイクロソフト コミュニティ 質問日 2月 3, 2015)
※ Sub ChangeSetting() を試した
- 確かに上手く動く。
- SendKeys ("{Tab}") の目的が理解できない。
- その前の ShowHiddenText = False を行っているので、[Tab]で次のアイテムの「任意指定のハイフン」をアクティブにする(Wordのオプション/表示をアクティブにする?)のが目的か...
- 下記関数を Sub AutoOpen() で実行し、目的を達成した。
Function 表示オプションの設定() As Boolean With ActiveDocument.ActiveWindow.View .ShowTabs = True 'タブ .ShowSpaces = True 'スペース .ShowParagraphs = True '段落記号 .ShowHiddenText = False '隠し文字 .ShowHyphens = False '任意指定のハイフン .ShowObjectAnchors = True 'アンカー記号 .ShowOptionalBreaks = False '任意指定の改行 .ShowAll = False End With If ActiveDocument.ActiveWindow.View.ShowParagraphs = False Then SendKeys "{Tab}", True SendKeys "%m", True SendKeys ("{Enter}") Dialogs(wdDialogToolsOptionsView).Show End If 表示オプションの設定 = True End Function
編集後記
追伸(2017.09.16)
- 上記コードを(1)パスワードを使用して暗号化してある文書の(2)Sub AutoOpen に置くと、上手く動作せず、本文を壊してしまうことが判った。
- 文書が開いた後に、Alt+F8 から AutoOpenを実行すると、問題なく動作することも判った。
- 結論としては、段落記号をオンにするのは、VBAではなく「手動」で行うことにした。
- 該Word文書にはパスワードを掛けてある。