ورود

View Full Version : هر کس با Word کار کرده لطفا کمک کنه



nasr
چهارشنبه 08 بهمن 1382, 23:07 عصر
سلام
اگر با Word کار کرده باشید می دانید که یک قسمت وجود دارد که می توان در آن ماکرو نوشت (Tools/macro /record new Macro)که بعد با زدن یک کلید مثلا F2 همان ماکرو اجرا می شود حالا من می خواهم این ماکرو با زدن یک کلید در دلفی اجرا شود یعنی Word باز شود و ماکرو اجرا شود من این ماکرو را در Word نوشته ام و دیگر نیازی به نوشتن دوباره توسط برنامه نیست فقط می خواهم که بعد از باز شدن Word این ماکرو اجرا شود برای باز کردن برنامه Word هم مشکلی ندارم فقط می خواهم ماکرو اجرا شود
خیلی ممنون اگه میشه یک کمی زود جواب من را بدید
خیلی ببخشید

houshmand
چهارشنبه 08 بهمن 1382, 23:46 عصر
از اینجا
http://www.toflidium.com/weblog/codearticles/wordcom.html


Well it is indeed possible, and is actually very simple as long as you follow a couple of simple steps.

Declare you word subs as Public
In Delphi Reference your Word Document as an Olevariant.
Use standard ole types for argument values.
Debug with Word Visible!!!
How to get it to work.
In order to make it work, you just need to write code that

Creates a word application.
Opens the word document or template with the macro in it.
Keep a reference to the word document as an olevariant.
Call the function/Sub as a method of the document.
Here is some pascal code (the full source for a demo is also available for download) that shows how we do this.

procedure TForm1.Button1Click(Sender: TObject);
var
Wordapp : oleVariant;
Doc : olevariant;// Will hold the word document, we wish to call the macro on.
begin
{Create the word application, and make it visible. Always make your
word application visible while you are debugging. }
Wordapp := CreateOleObject('Word.Application') ;
Wordapp.visible := true;

{Open a doc file. Call one of its
public methods with an argument value.}
Doc := Wordapp.documents.Open(ExtractFilePath(Application .ExeName)
+ '\docwithmacro.doc');

{This function, which is a function I wrote in the
word document, simply add some
text to the body of the document, which is an easy thing to do,
but illustrates the technique.}
Doc.AddWordsToDocument(edAddText.text);

end;

nasr
پنج شنبه 09 بهمن 1382, 18:17 عصر
ببخشید میشه یه کمی بیشتر توضیح بدید
با تشکر

nasr
پنج شنبه 09 بهمن 1382, 19:15 عصر
من این کار را کردم خیلی هم ممنونم
ولی این فقط میره فایل Word را باز می کنه
حالا من یک ماکرو دارم با نام Macro1 می خواهم وقتی فایل را باز کرد این ماکرو را هم اجرا کنه

nasr
جمعه 10 بهمن 1382, 22:05 عصر
لطفا جواب بدید :oops:

Delphi-Clinic
شنبه 11 بهمن 1382, 00:07 صبح
TWordApplication دارای یک سری متد برای اجرای ماکرو در Word است.

یه نگاه به تب Servers در Delphi 7 بندازی بدک نیستا؟

nasr
شنبه 11 بهمن 1382, 22:18 عصر
سلام
آقا من این کار را انجام دادم و درست هم بود و ممنون
حالا میشه یه کاری کرد که ماکرو را هم در دلفی بنویسیم چونکه اگه مثلا کامپیوتر را فرمت کنند تمام ماکرو های Word هم پاک میشه
یا اگه برنامه را روی یک کامپیوتری اجرا کنند که Word آن ماکرو ها را نداشته باشه مشکل پیش میاد
تشکر

Delphi-Clinic
یک شنبه 12 بهمن 1382, 13:11 عصر
درست نمی دونم اما فکر کنم باید ماکرو را توی یک Memo بنویسی بعد با
این متد ذخیره کنی:




WordApplication1.VBE.ActiveVBProject.SaveAs();

nasr
یک شنبه 12 بهمن 1382, 18:50 عصر
سلام
اقا من این کار را که فرمودید انجام دادم ولی جواب نداد .
یعنی دقیقا متن ماکرو را از Word کپی کردم و داخل Memo قرار دادم ولی ماکرو اجرا نمیشه
یک پیام میده با متن زیر :
Programmatic access to Visual Basic Project is not trusted
متن برنامه ای که نوشتم هم عبارت زیر است آیا اشتباه نوشتم
WordApplication1.VBE.ActiveVBProject.SaveAs(Memo1. Lines.GetText);j
لطفا بفرمایید چکار کنم
با تشکر

Delphi-Clinic
یک شنبه 12 بهمن 1382, 22:09 عصر
یه کم مهلت بده عزیز

بفکریم. :wink:

nasr
یک شنبه 12 بهمن 1382, 23:02 عصر
چشم
قربان همه دوستان

nasr
دوشنبه 13 بهمن 1382, 22:28 عصر
لطفا جواب بدید :oops:

nasr
سه شنبه 14 بهمن 1382, 17:01 عصر
یعنی یکی نیست جواب سوال من را بدونه