0

私はラボレポートシステムを使用しており、いくつかのタスクを自動化したいと考えています。私たちが使用しているシステムは直感的ではなく、単語文書を使用してデータを入力します。見出し(保護された見出し)のある段落がいくつかあります。

ある段落のフレーズをコピーして、Delphiアプリを使用して別の段落に貼り付けたい

GetActiveOleObject('Word.Application');

そのために正規表現を使用するにはどうすればよいですか。良い点は、コピーしたい検索可能なフレーズが大文字で、他のすべてが大文字であるということです。例:

3番目の段落の見出し:--->受信者のメモ<----これはドキュメントで編集できません(保護されています)

  1. 標本は、このワークステーションのCONTAINEROFFORMALINに受け取られます

  2. 標本は、このワークステーションで固定剤なしで新鮮に受け取られます

私の結果は次のようなものでなければなりません:

4番目の段落の見出し--->受信方法<------再び保護されました

  1. ホルムアルデヒドの容器<-----ここに最初の試合から貼り付けたいところです

  2. 固定剤なしのフレッシュ<-----そしてここで2番目の試合…など

ですから、「受信者メモ」と「受信方法」の段落見出しの間で大文字を検索し、次の段落にリストするためのデルファイコードを用意するのが私の気持ちです。

私はdelphixe3を使用しており、他のファイルで正規表現を使用する方法を知っていますが、delphiを使用して言葉で表現することはできません。入力、コードスニペット、例などをいただければ幸いです。

4

2 に答える 2

2

さて、私はついにこれを機能させることができました。誰かがこれを必要とする場合に備えて、コードを投稿しています。ドキュメントをデルファイメモにコピーし、そこで正規表現を使用して作業し、必要な場所に貼り付ける必要がありました。プロセスは面倒に見えるかもしれませんが、非常に高速に実行されます。私が扱っている単語文書は、とにかく通常1ページか2ページです。

procedure TForm1.Button1Click(Sender: TObject);
var
  DXRANGE, DXWORD: OleVariant;
  n : Integer;
  regexpr: TRegEx;
  Match: TMatch;
begin
  try
    DXWORD := GetActiveOleObject('Word.Application');

    DXRANGE := DXWORD.Documents.Item(1)
      .Range(DXWORD.Documents.Item(1).Range.Start, DXWORD.Documents.Item(1)
      .Range.End);
    DXRANGE.Copy;
    Memo1.Clear;
    Memo1.PasteFromClipBoard;
    regexpr := TRegEx.Create('\b[A-Z][A-Z][A-Z]+(?:\s+[A-Z]+)*\b');
    Match := regexpr.Match(Memo1.Text);
    n := 1;
    Memo2.Clear;
    while Match.Success do
    begin
      Memo2.Lines.Add(IntToStr(n) + Match.Value);
      Memo2.Lines.Add('');
      Match := Match.NextMatch;
      n := n + 1;
    end;
    Memo2.SelectAll;
    Memo2.CopyToClipboard;
    DXWORD.Selection.PasteSpecial(wdPasteRTF)
  except
    on E: exception do
    begin
      ShowMessage(E.Message);
    end;
  end;
end;
于 2012-12-06T06:52:28.757 に答える
0

Word(または任意のOfficeアプリ)とActiveX Delphiコンポーネントを使用する場合の原則として、すばらしいマクロレコーダーを使用してどのように動作するかを確認します。

例えば。

  • ワードドキュメントを開く
  • ツールメニューから[マクロ記録]を選択します
  • 検索してください
  • クリップボードにコピーします
  • コードを置き換えます
  • あなたがする必要がある他のことは何でもしなさい。
  • マクロを停止する

次に、マクロVBAオーガナイザーを開き、VBAが実行した内容に対して生成したコードを確認します。これにより、デルファイコードを呼び出すために必要な関数について非常に良いアイデアが得られます。

于 2012-12-08T18:36:19.313 に答える