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







現在の頁をコピー


現在の頁 (入力フォーカスがある頁) 全体をコピーして、文書の末尾に貼り付け文書の末尾に移動する例です。指定の頁にジャンプしてから実行すれば、指定頁のコピーとなります。
ワード操作フォームEx には、指定ページに移動の wdfJumpPage メソッドを実装しています。


リスト1
頁のコピー
procedure TplWordFormEx2.Button1Click(Sender: TObject);
var
  ARange    : Twdf2000Range;
  pBookName : OleVariant;
  pType     : OleVariant;
  pUnit     : OleVariant;
  pCount    : OleVariant;
begin
  //現在のページのRangeオブジェクト取得
  pBookName := '\page';
  ARange    := wdfWordDoc.Bookmarks.Item(pBookName).Range;
  //そのRange、つまりページ全体をコピー
  ARange.Copy;

  //文書末尾のSelectionオブジェクトを取得して改頁を挿入
  pBookName := '\EndOfDoc';
  wdfWordDoc.Bookmarks.Item(pBookName).Select;
  pType := wdPageBreak;
  wdfWordApp.Selection.InsertBreak(pType);

  //貼り付け
  wdfWordApp.Selection.Paste;

  //改頁したので1文字分削除
  pUnit := wdCharacter;
  pCount := 1;
  wdfWordApp.Selection.Delete(pUnit, pCount);
  wdfWordApp.ScreenRefresh;
end;




文書全体をコピー


現在の文書全体をコピーするには、文書を表すブックマークが利用できます。
次のコードは、文書全体をコピーして、新規追加した頁に貼り付けます。文書全体の頁数は元の 2 倍となります。頁追加は、実際には最後の頁で [改頁] [挿入] と同じ動作を実行しています。


リスト2
文書全体のコピー
procedure TplWordFormEx2.Button2Click(Sender: TObject);
var
  ARange    : Twdf2000Range;
  pBookName : OleVariant;
  pType     : OleVariant;
begin
  //現在の文書全体のRangeオブジェクト取得
  pBookName := '\Doc';
  ARange    := wdfWordDoc.Bookmarks.Item(pBookName).Range;
  //そのRange、つまり文書全体をコピー
  ARange.Copy;

  //文書末尾のSelectionオブジェクトを取得して改頁を挿入
  pBookName := '\EndOfDoc';
  wdfWordDoc.Bookmarks.Item(pBookName).Select;
  pType := wdPageBreak;
  wdfWordApp.Selection.InsertBreak(pType);
  //クリップボードから貼り付け
  wdfWordApp.Selection.Paste;
end;