Delphi Programming / Object Pascal
サイトのトップページへ リンクのページへ ロゴマーク
[掲載 2009年05月12日] [更新 2013年11月27日] ワード操作フォームEx
ワード操作フォームEx   参考コード類
直接編集を不可にする方法
動作確認等 Windows 7 U64(SP1) + Delphi XE2 + Word 2010







文書の保護機能の利用


ワードの [ツール] [文書の保護] [フォームフィールド] の機能を使用する例です。この機能を使用すると文書操作がコード上からも編集ができなくなります。そこで操作の前に一度解除し、操作が終了したらまた保護をします。これですと、ブックマークなどをユーザに削除される心配はありません。
この方法は、保護されていない文書を実行中に保護することができます。ただし、終了する際に元に戻しておかないと保護されたままになってしまいます。


[備考]
以前、親コントロールの Enabled プロパティを False にする方法を掲載していましたが、Word 2007 以上では正常に動作しません。また、スクロールもできなくなるため、記事を削除しました。


リスト1
文書の保護機能を利用して、直接操作を禁止する
//=============================================================================
//  保護されているワード文書の操作
//  一度解除してから操作コードを実行する
//=============================================================================
procedure TplWordFormEx2.Button2Click(Sender: TObject);
var
  NoReset  : OleVariant;
  PassWord : OleVariant;
begin
  NoReset  := False;
  PassWord := '';

  //文書が保護されていたら解除
  if wdfWordDoc.ProtectionType <> wdNoProtection then begin
    wdfWordDoc.Unprotect(PassWord);
  end;

  //文書に対する各種操作;
  DratText;

  //操作が終了したらまた保護してしまう
  wdfWordDoc.Protect(wdAllowOnlyFormFields, NoReset, PassWord);
end;




ヘッダー・フッター部を使用する


Word 2003 以前であれば、ヘッダ・フッタ部の内容は直接編集できません。また、印刷しないようにすることもできます。
Word 2007 以降では、文書の編集画面のポップアップメニューから、ヘッダ・フッタ部を編集状態にすることが可能になっています。この方法はあまり意味がないかも知れません。