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;