まりふのひと

Word2013VBAでShowParagraphs(段落記号の画面表示)の値を変更できない

 Word2013で文書を開いた時、

  • [編集記号の表示/非表示]はオフにして、
  • 段落記号は常にする。

にしたいので、

  1. 白紙の文書から、
  2. Wordのオプション ⇒ 表示 の「常に画面に表示する編集記号」のチェックをすべて外し、
  3. 文書の画面に戻って[編集記号の表示/非表示]をオンにした。
  4. [マクロの記録]を開始
    1. 【マクロの記録】ダイアログボックスで下記を入力し[OK]
      • マクロ名:“段落記号を表示する”
      • マクロの保存先:文書1(文書)
    2. [ファイル]⇒[オプション]⇒[表示]と進め、
    3. ☑ 段落記号
      □ すべての編集記号を表示する
    4. [OK]
  5. [マクロの記録]終了


 完成したマクロは下記であった。

Sub 段落記号を表示する()
'
' 段落記号を表示する Macro
'
'
    ActiveWindow.View.ShowParagraphs = False
    ActiveWindow.View.ShowAll = False
End Sub
  1. ☑段落記号としたのに、ShowParagraphs = False はおかしいなぁ‥‥ とヘルプ(英文)を参照した‥‥

    が、Exampleでは「段落記号を隠す」が False になっている。
     どう考えても Excelがおかしい...

  2. マクロを動かしてみると、
    • ShowParagraphs = False でも ShowParagraphs = True でも動作しない。
    • ShowAll = False は正しく動作する。

  3. “ShowParagraphs” でググる‥‥ と、
    • Word2007 VBAで ShowParagraphの値を変更できないマイクロソフト コミュニティ 質問日 2月 3, 2015)
       ShowParagraphsプロパティは、Word2007以降だと実行しても有効にならないようですね。
      ShowParagraphsプロパティをToggleで動作をするように書き換えても、同じ項目にある他のチェック項目は動作するのに、ShowParagraphsプロパティのみ無意味になっているようです。
       そこで、ShowParagraphsプロパティのみ手動で有効なダイアログボックスから実行する方法を検討してみました。
      Sub ChangeSetting()

      With ActiveDocument.ActiveWindow.View
      .ShowAll = True
      .ShowHiddenText = False
      End With

      If ActiveDocument.ActiveWindow.View.ShowParagraphs = False Then

      SendKeys ("{Tab}")

      SendKeys ("%m")

      ' 表示オプションをすぐに閉じたい場合は有効にする
      ' SendKeys ("{Enter}")

      Dialogs(wdDialogToolsOptionsView).Show

      End If

      End Sub
      これなら、ShowParagraphsプロパティを実行したときと同じ動作をしてくれると思います。
      • 回答者の「お茶問屋」さんは一般の人?
         他にresは付いておらず、Microsoft コミュニティ モデレーターもぐうの音も出ないのか...
※ 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

編集後記

  • かなり遠回りをして解決したが、このコードを使うか、使わないで「出来ない」と諦めるか‥‥ 悩んでいる。
  • 解決のきっかけは “ShowParagraphs” でググって「Word2007 VBAで ShowParagraphの値を変更できない」に辿り着いたこと。
  • Word2013でも解決していないとなると、Microsoft社に改善の意図はないと思われる。少なくともヘルプは「嘘」を言っているのであり、変更してもらいたい 

追伸(2017.09.16)

  1. 上記コードを(1)パスワードを使用して暗号化してある文書の(2)Sub AutoOpen に置くと、上手く動作せず、本文を壊してしまうことが判った。
  2. 文書が開いた後に、Alt+F8 から AutoOpenを実行すると、問題なく動作することも判った。
  3. 結論としては、段落記号をオンにするのは、VBAではなく「手動」で行うことにした。
  4. 該Word文書にはパスワードを掛けてある。