2014/02/15

Word 2013 を起動、保護ビューではなく印刷レイアウトを表示する方法~編集の制限

ここ数年、プロダクトの性質を可能な限り理解し、正しい使い方を身に着けるよう努力しています。
その一つにOffice製品、特にWordがあります。
Wordは、数年前まで敬遠していたプロダクトでしたが実際に使ってみると非常に使えるツールだと認識。
さて、今回は保護されたマクロ付Wordファイルを起動、保護ビューではなく印刷レイアウトを直接表示する方法をメモ。

注意点

Word の[保護ビュー]は、Microsoft Officeにおいて下記のように説明されています。
インターネットやその他の安全でない可能性のある場所にあるファイルには、コンピューターに害をもたらすウイルス、ワーム、その他のマルウェア類が含まれている可能性があります。このような安全でない可能性のある場所にあるファイルは、コンピューターを保護する目的により保護ビューで開くことができます。保護ビューを使用することで、リスクを抑えながら、ファイルを読み取り、その内容を確認できます。
今回ご紹介する内容は、社内システム等所在や出所が確実に分かっている安全なWord ファイルを対象としています。

今回の環境

  • Word 2013を使用
  • ファイルは、マクロ付き(.docm)
  • コンテンツ コントロールやActiveX コントロールを配置
    image
  • [編集の制限]機能を使用し文章を保護
    なお、[フォームへの入力]のみ許可する
    image
なお、Word 2007では[編集の制限]をかけても印刷レイアウトで起動してくれます。

問題点

上記環境でWord ファイルを開くと、Word 2010以降に搭載された[保護ビュー]が機能します。
これはWordの仕様である事を理解してますが、常用する際にいくつか問題が出てきました。
image
  1. 印刷レイアウトに変更するためには、[表示]→[文書の編集]を起動ごとに選択しなければならない(非常に面倒である)
    image
  2. (フォームを初期化するマクロを実行する)ActiveX ボタン コントロールを操作するとエラーになる
    ----------------------------------------------------
    実行エラー ‘6124’:
    この選択範囲は保護されているため、編集できません。
    image
  3. (フォーム コントロールの編集が読み取り専用のため)フォームへの入力・削除等が一切出来ない
    image

解決策

試行錯誤した結果、下記方法で今回の問題を解決する事が出来ました。
  1. 標準モジュールを挿入、開く
    image
  2. AutoOpen マクロに、下書きレイアウトで表示するスクリプトを記述
    ActiveWindow.View.Type = wdNormalView
    ※この処理を行う事で、保護ビューの表示を回避します
    image
  3. ThinDocument モジュールを開く
    image
  4. Document_Open マクロに、印刷レイアウトを表示するスクリプトを記述
    ActiveWindow.View.Type = wdPrintView
    image
AutoOpen マクロで実行した際の各Typeの挙動
検証した結果、wdNormalViewおよびwdWebViewをAutoOpen マクロに指定する事で保護ビューを回避できます。
wdConflictView × VBA 実行エラー
wdMasterView × VBA 文書 保護エラー
wdNormalView 下書きレイアウトで表示
フォーム位置の崩れあり
コントロールの操作は可能
wdOutlineView × VBA 文書 保護エラー
wdPrintPreview 印刷プレビューで表示
フォーム操作が出来ない
wdPrintView × 保護ビューで表示
wdReadingView × 保護ビューで表示
wdWebView Webレイアウトで表示
フォーム位置の崩れあり
コントロールの操作は可能
Word起動後のマクロが実行される順番
  1. AutoOpen
  2. Document_Open
順番に関する公式ドキュメントを見つけられなかったので、手探りで確認。
また、初心者備忘録さんのサイトでも説明されております。
今回の参考サイト
スポンサーリンク

スポンサーリンク