我想用delphi对word进行操作,就是想查找一个DOC文档如下:
A1 aaaaaaaaaaaaa
   vvvvvvvvvvvvv
A2 sssssssssssss
   ddddddddddddd
A1 jjjjjjjjjjjjj
对其中A1开头的进行过滤,过滤结果是:
A1 aaaaaaaaaaaaa
   vvvvvvvvvvvvv
A1 jjjjjjjjjjjjj

解决方案 »

  1.   

    你的问题都没讲清楚,你举出的例子也分不出是段落还是表格。
    vvvvvvvvvvvvv那行也不是A1开头,怎么过滤后还有它?
      

  2.   

    uses ComObj;var
      WordApp,WordDoc1,WordDoc2,WdRange:OleVariant;//WordDoc1是源文档,将过滤后的段落复制到WordDoc2中。procedure TForm1.Button1Click(Sender: TObject);
    var
      i: Integer;
    begin
      WordApp:=CreateOleObject('Word.Application');
      WordDoc1:=WordApp.Documents.Open('F:\Test1.doc');
      WordDoc2:=WordApp.Documents.Add;
      try
    //    WordApp.visible:=True;
        for i:=1 to WordDoc1.Paragraphs.Count do
        begin
          WdRange:=WordDoc1.Range(WordDoc1.Paragraphs.item(i).Range.Start,
            WordDoc1.Paragraphs.item(i).Range.Start+2);
          if WdRange.Text = 'A1' then
            WordDoc2.Content.InsertAfter(WordDoc1.Paragraphs.item(i).Range.Text); 
    //上一句只对文字进行操作,会丢失格式。如果要保留格式,用Copy和Paste方法。
        end;
        WordDoc2.SaveAs('F:\Test2.doc');
      finally
        WordApp.Quit;
        WordApp:=Unassigned;
        WordDoc1:=Unassigned;
        WordDoc2:=Unassigned;
        WdRange:=Unassigned;
      end;
    end;
      

  3.   

    十分感谢,不过好像我的写的要求不大一样
    A1 aaaaaaaaaaaaa
    A1 jjjjjjjjjjjjj
    我要的是
    A1 aaaaaaaaaaaaa
       vvvvvvvvvvvvv
    A1 jjjjjjjjjjjjj
    少了一行,望指教
      

  4.   

    vvvvvvvvvvvvv这一行不是A1开头。
    我注释里也写了,只是对文字的操作。如果要保留格式和图片,要用Copy和Paste方法。这些你参照VBA改一下就可以了。
      

  5.   

    要支持图片和格式的话将代码改一下。将    if WdRange.Text = 'A1' then
          WordDoc2.Content.InsertAfter(WordDoc1.Paragraphs.item(i).Range.Text);改成:    if WdRange.Text = 'A1' then
        begin
          WordDoc1.Paragraphs.item(i).Range.Copy;
          WordDoc2.ActiveWindow.Selection.Paste;
        end;
      

  6.   

    给点资料啊,不会COPY和PASTE啊
      

  7.   

    if fuhe then
          begin
            //WordDoc2.Content.InsertAfter(WordDoc1.Paragraphs.item(i).Range.Text);
            WordDoc1.Paragraphs.item(i).Range.copy;
            WordDoc1.range.Paste;
          end;
    我的语句是这么写的,但是不行