Delphi Programming / Object Pascal
サイトのトップページへ リンクのページへ ロゴマーク
[掲載 2009年05月31日] [更新 2013年11月28日] ワード操作フォームEx
ワード操作フォームEx   参考コード類
文書のプロパティの操作
動作確認等 Windows 7 U64(SP1) + Delphi XE2 + Word 2010







文書のプロパティの取得と設定


下の表のような文書のプロパティの内容を取得または設定するサンプルコードです.
BuiltInDocumentProperties プロパティの値を操作します.


表1
文書のプロパティ定数の例

プロパティ定数 項目名
wdPropertyTitle タイトル
wdPropertySubject サブタイトル
wdPropertyAuthor 作成者
wdPropertyManager 管理者
wdPropertyCompany 会社名
wdPropertyCategory 分類
wdPropertyKeywords キーワード
wdPropertyComments コメント
wdPropertyHyperlinkbase ハイパーリンクの基点


リスト1
文書の作成者名を取得して表示
procedure TplWordFormEx2.Button1Click(Sender: TObject);
var
  objWordDoc : Olevariant;
  StrText     : String;
begin
  objWordDoc := wdfWordApp.ActiveDocument;
  StrText    := objWordDoc.BuiltInDocumentProperties[wdPropertyAuthor].Value;
  MessageBox(Handle, PChar(StrText), '情報', MB_ICONINFORMATION);
end;


リスト2
文書の作成者名を設定
procedure TplWordFormEx2.Button2Click(Sender: TObject);
var
  objWordDoc : Olevariant;
begin
  objWordDoc := wdfWordApp.ActiveDocument;
  objWordDoc.BuiltInDocumentProperties[wdPropertyAuthor].Value := 'Mr.XRAY';
end;




文書のプロパティダイアログの表示


上のサンプルで取得または設定する文書のプロパティは,下図のダイアログで設定できます.このダイアログを表示するコードです.
このダイアログの内容は,Word 2007 では, [Officeボタン] [配布の準備] [プロパティ] で文書のプロパティで設定できます.ダイアログは,[Officeボタン] [配布の準備] [プロパティ] [ドキュメントのプロパティ] [詳細プロパティ] で表示できます.


図1
文書のプロパティダイアログ

リスト3
文書のプロパティダイアログの表示
procedure TplWordFormEx2.Button4Click(Sender: TObject);
var
  objWordApp : OleVariant;
begin
  //これがないと正常に動作しない
  wdfSetFocusWord;
  objWordApp := wdfWordApp.Application;

  try
    objWordApp.CommandBars.ExecuteMso('AdvancedFileProperties');
  except
    raise;
  end;
  wdfSetFocusWord;
end;




文書情報ダイアログの表示


下図の内容だけでよいのであれば,次のコードで,このダイアログを表示して設定できます.
このダイアログで [文書詳細] ボタンをクリックすると,上の図のダイアログが表示されます.


図2
文書情報ダイアログ

リスト4
文書情報ダイアログの表示
procedure TplWordFormEx2.Button3Click(Sender: TObject);
var
  objDialog : OleVariant;
begin
  wdfSetFocusWord;
  try
    objDialog := wdfWordApp.Dialogs.Item(wdDialogFileSummaryInfo);
    objDialog.Show;
  except
    raise;
  end;
  wdfSetFocusWord;
end;