我想用delphi对word进行操作,就是想查找一个DOC文档如下:
A1 aaaaaaaaaaaaa
vvvvvvvvvvvvv
A2 sssssssssssss
ddddddddddddd
A1 jjjjjjjjjjjjj
对其中A1开头的进行过滤,过滤结果是:
A1 aaaaaaaaaaaaa
vvvvvvvvvvvvv
A1 jjjjjjjjjjjjj
A1 aaaaaaaaaaaaa
vvvvvvvvvvvvv
A2 sssssssssssss
ddddddddddddd
A1 jjjjjjjjjjjjj
对其中A1开头的进行过滤,过滤结果是:
A1 aaaaaaaaaaaaa
vvvvvvvvvvvvv
A1 jjjjjjjjjjjjj
vvvvvvvvvvvvv那行也不是A1开头,怎么过滤后还有它?
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;
A1 aaaaaaaaaaaaa
A1 jjjjjjjjjjjjj
我要的是
A1 aaaaaaaaaaaaa
vvvvvvvvvvvvv
A1 jjjjjjjjjjjjj
少了一行,望指教
我注释里也写了,只是对文字的操作。如果要保留格式和图片,要用Copy和Paste方法。这些你参照VBA改一下就可以了。
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;
begin
//WordDoc2.Content.InsertAfter(WordDoc1.Paragraphs.item(i).Range.Text);
WordDoc1.Paragraphs.item(i).Range.copy;
WordDoc1.range.Paste;
end;
我的语句是这么写的,但是不行