ورود

View Full Version : آموزش OLE Automation



Kamyar.Kimiyabeigi
شنبه 26 خرداد 1386, 09:24 صبح
مثالی جهت انتقال متن از داخل برنامه به Word (برای Replace کردن با یک Text) در این مثال متنی که قرار به داخل Word فرستاده بشه باید کمتر از 255 کاراکتر باشه. اگر بیشتر از 255 کاراکتر باشه Error میده.


procedure TForm1.Button2Click(Sender: TObject);
var
_visible, _replace, _wholeword,
_noprompt, _originalformat, _savechanges, _routedocument, _replacetext, _word: OleVariant;
i: Integer;
wrdApp, wrdDoc: Variant;
_text: AnsiString;
begin
try
_visible := false;
_wholeword := true;

_noprompt := true;
_originalformat := wdOriginalDocumentFormat;
_savechanges := wdSaveChanges;
_routedocument := false;
_replace := wdReplaceAll;
wrdApp := CreateOleObject('Word.Application');
wrdApp.Visible := false;
wrdDoc := wrdApp.Documents.open('C:\test.doc');

_text := '';
for i := 0 to 50 do
begin
_text := _text + 'Test';
end;
_replacetext := _text;
_word := 'Word';
wrdDoc.Range.Find.Execute(_word, EmptyParam, EmptyParam,
EmptyParam, EmptyParam, EmptyParam,
EmptyParam, EmptyParam, EmptyParam,
_replacetext, _replace);
wrdDoc.Save;
wrdDoc.Close(_savechanges, _originalformat, _routedocument);
finally
_wholeword := Unassigned;
wrdApp.Quit;
end;
end;

در مثال بالا کلمه test با کلمه word داخل فایل doc جایگزین میشه.

مثال زیر برای حالتی هست که متن ما بیشتر از 255 کاراکتر باشه (در این مثال محدودیت نداریم)


var
_visible, _replace, _wholeword,
_noprompt, _originalformat, _savechanges, _routedocument, _replacetext, _word: OleVariant;
i: Integer;
wrdApp, wrdDoc: Variant;
_text: AnsiString;
textlist: TRichEdit;
begin
try
textlist := TRichEdit.Create(self);
textlist.Parent := Self;
textlist.Visible := False;
_visible := false;
_wholeword := true;

_noprompt := true;
_originalformat := wdOriginalDocumentFormat;
_savechanges := wdSaveChanges;
_routedocument := false;
_replace := wdReplaceAll;
wrdApp := CreateOleObject('Word.Application');
wrdApp.Visible := false;
wrdDoc := wrdApp.Documents.open('C:\test.doc');

for i := 0 to 5000 do
begin
textlist.Text := textlist.Text + 'test';
Caption := IntToStr(i);
Refresh;
end;
textlist.SelectAll;
textlist.CopyToClipboard;
_text := '^c';
_replacetext := _text;
_word := 'word';

wrdDoc.Range.Find.Execute(_word, EmptyParam, EmptyParam,
EmptyParam, EmptyParam, EmptyParam,
EmptyParam, EmptyParam, EmptyParam,
_replacetext, _replace);
wrdDoc.Save;
wrdDoc.Close(_savechanges, _originalformat, _routedocument);
finally
textlist.Free;
_wholeword := Unassigned;
wrdApp.Quit;
end;

در مثال بالا بجای اینکه متنمان را به صورت مستقیم داخل فایل doc جایگزین کنیم ابتدا اونو به داخل clipboard کپی میکنیم و بعد از clipboard به داخل فایل doc میفرستیم. در واقع c^ اشاره گری هست به clipboard

merced
شنبه 26 خرداد 1386, 22:49 عصر
من هم یه اشعاری اینجا درباره اتوماسیون گفته ام


http://minus.blogfa.com/post-24.aspx

اکسل و ورد import و export .. البته اینجا هم خیلی از دوستان روشهای خیلی خوبی گفته انت

Kamyar.Kimiyabeigi
یک شنبه 27 خرداد 1386, 07:39 صبح
اینم یک فایل آموزشی جهت کار با Word