PDA

View Full Version : سوال: استفاده از Word براي گزارشگيري در vb



y.saied
سه شنبه 28 خرداد 1387, 20:50 عصر
‌‌‌‌‌‌‌‌‌‌‌‌‌‌›› ›››››››››››››››› ›››››››››››››››› ›››››››››››››››› ›››››››››››››››› ››››››››››
امكان گزارش گيري با استفاده از Word هست يا نه ؟
منظورم اينه كه من يه برنامه قرارداد نوشتم كه ميخوام متن قراردادم رو با استفاده از word چاپ كنم .
علتش اينه كه ميشه مستقيماً تو word تايپ كرد و امكان استفاده از ابزارهاي متني بيشتري داره .

›››››››››››››››› ›››››››››››››››› ›››››››››››››››› ›››››››››››››››› ›››››››››››››

اوبالیت به بو
سه شنبه 28 خرداد 1387, 21:49 عصر
* با دستور Shell ميشه يه فايل Word رو باز كرد.
* البته از تابع API كه اسمش ShellExecute اين كار رو انجام بدي.

Public Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long

توضيح تابع ShellExecute در اين پست (http://barnamenevis.org/forum/showpost.php?p=159704&postcount=2)
مثال: باز كردن فايل Student.DOC

ShellExecuteA hwnd, "open", "File.DOC", vbnullstring, "C:\Student.DOC", SW_NORMAL
* البته يك راه ديگه هم هست كه در اين پست (http://barnamenevis.org/forum/showpost.php?p=188752&postcount=4) توضيح داده شده.

http://www.barnamenevis.org/forum/images/icons/icon3.gif با اين برنامه ميشه متني كه در VB نوشته شده رو در Word ذخيره كني. (http://barnamenevis.org/forum/showpost.php?p=416587&postcount=1)


http://www.barnamenevis.org/forum/images/icons/icon4.gif البته يه تغيير خودتون توش اعمال كنيد:

FilePath رو از نوع String تعريف كنيد:

Dim FilePath As String

در آخر اين دستور رو بنويسيد:


MWord.Documents(1).Close

يعني فايل رو ببنديد.

ali_habibi1384
سه شنبه 28 خرداد 1387, 23:10 عصر
* با دستور Shell ميشه يه فايل Word رو باز كرد.
* البته از تابع API كه اسمش ShellExecute اين كار رو انجام بدي.

Public Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long

توضيح تابع ShellExecute در اين پست (http://barnamenevis.org/forum/showpost.php?p=159704&postcount=2)
مثال: باز كردن فايل Student.DOC

ShellExecuteA hwnd, "open", "File.DOC", vbnullstring, "C:\Student.DOC", SW_NORMAL
* البته يك راه ديگه هم هست كه در اين پست (http://barnamenevis.org/forum/showpost.php?p=188752&postcount=4) توضيح داده شده.

http://www.barnamenevis.org/forum/images/icons/icon3.gif با اين برنامه ميشه متني كه در VB نوشته شده رو در Word ذخيره كني. (http://barnamenevis.org/forum/showpost.php?p=416587&postcount=1)



http://www.barnamenevis.org/forum/images/icons/icon4.gif البته يه تغيير خودتون توش اعمال كنيد:

FilePath رو از نوع String تعريف كنيد:

Dim FilePath As String

در آخر اين دستور رو بنويسيد:


MWord.Documents(1).Close

يعني فايل رو ببنديد.
مثل اینکه شما کلا نفهمیدین که ایشون چی سوال کرد ایشون میخواد توی یک فایل ورد چیزی بنویسه نه اینکه فایل رو فرا خونی کنه!
دوست عزیز برای نوشتن در فایل ورد مثل نوشتن در فایلهای معمولی یک اشاره گر از نوع فایل تعریف کنی و توی اون بنویسی فقط کافیه پسوند اونو doc تعریف کنی تا با ورد باز کنه.

y.saied
چهارشنبه 29 خرداد 1387, 12:58 عصر
دوستان عزیز توجه فرمائید :
من یه متن قرارداد رو از قبل تو word آماده کردم ولی نام کارفرما و نام پروژه و مبلغ قرارداد رو خالی گذاشتم ؛ حالا من رو فرم سه تا TextBox گذاشتم که یکی مربوط به نام کارفرما و دیگری به نام پروژه و دیگری جهت نوشتن مبلغ قرارداد .
سوال اصلی من اینه که ::: با چه روشی میتونم اطلاعاتی رو که در TextBoxها نوشتم در فایل word و در جای خودشون بذارم و پرینت بگیرم .

reza_optical
چهارشنبه 29 خرداد 1387, 13:08 عصر
سلام
با OLE میتونی این کارو بکنی
شاید office خودش ocx داشته باشه به اونا هم نگا کن واسه excl که داره
میتونی add کنی و باهاش کار کنی

y.saied
چهارشنبه 29 خرداد 1387, 13:11 عصر
سلام
با OLE میتونی این کارو بکنی
شاید office خودش ocx داشته باشه به اونا هم نگا کن واسه excl که داره
میتونی add کنی و باهاش کار کنی

عزیز بلد نیستم میتونی زحمتش و برام بکشی و توضیح بدی

Mbt925
چهارشنبه 29 خرداد 1387, 14:19 عصر
یه نمونه ی ساده براتون نوشتم.

برای استفاده از نمونه ابتدا تیک گزینه ی Microsoft Object Libary رو از قسمت Refrences ها بزنید.




Dim objWord As New Word.Application

Private Sub Form_Load()

objWord.Documents.Add
objWord.ActiveDocument.Content.Text = "Mbt925 sample text"
objWord.Visible = True
objWord.Activate

End Sub

SeyedMoosavi
چهارشنبه 29 خرداد 1387, 17:54 عصر
دوست من ، من هرچی گشتم Microsoft Object Libary رو پیدا نکرم

y.saied
چهارشنبه 29 خرداد 1387, 22:03 عصر
یه نمونه ی ساده براتون نوشتم.

برای استفاده از نمونه ابتدا تیک گزینه ی Microsoft Object Libary رو از قسمت Refrences ها بزنید.




Dim objWord As New Word.Application





Private Sub Form_Load()


objWord.Documents.Add
objWord.ActiveDocument.Content.Text = "Mbt925 sample text"
objWord.Visible = True
objWord.Activate


End Sub


Microsoft Object Libary پيدا نشد ... نيست

__siavash__
چهارشنبه 29 خرداد 1387, 22:20 عصر
Microsoft Object Libary پيدا نشد ... نيست
[/left]
دنبال این گزینه باید بگردی
Microsoft Word 12.0 Object Library

y.saied
پنج شنبه 30 خرداد 1387, 12:07 عصر
من میخوام متن خودم رو در جای مخصوی در word بذارم .
مثلا نام کارفرما رو در جای خودش و نام پروژه رو در جای خودش و ...

__siavash__
پنج شنبه 30 خرداد 1387, 12:27 عصر
من میخوام متن خودم رو در جای مخصوی در word بذارم .
مثلا نام کارفرما رو در جای خودش و نام پروژه رو در جای خودش و ...

میشه یه نمونه از فایل Word رو که آبجکت های لازم داخلش باشه و یه متن فرضی داشته باشه این جا بذاری !!!

Hossein Bazyan
پنج شنبه 30 خرداد 1387, 12:47 عصر
سلام
شما اول باید یه فایل template در word بسازی . این فایل پسوند dot. میگیره . در این فایل نوشته های ثابت رو مینویسه و به ازای هر نوشته متغییر هم یک تکست باکس در فایل تمپلیت قرار میدی. با نام مشخص مثلا txtName و غیره . حال در برنامه ت باید این مقادیر رو معرفی کنی و سپس word رو باز کنی.
من دوبار برای دوستان مثال آپلود کردم در پستهای من بگرد اگه پیداش نکردی بگو تا برات مثال بنویسم

Hossein Bazyan
پنج شنبه 30 خرداد 1387, 13:02 عصر
سلام
اینهم لینک برنامه پست شماره 3

http://barnamenevis.org/forum/showthread.php?t=41635&highlight=template

__siavash__
پنج شنبه 30 خرداد 1387, 13:07 عصر
میشه بگید اون تکست باکس ها رو در فایل My Temp.dot از چه منویی وارد کردید
تو Office 2007 پیداش نمیکنم !!!

Hossein Bazyan
پنج شنبه 30 خرداد 1387, 13:55 عصر
میشه بگید اون تکست باکس ها رو در فایل My Temp.dot از چه منویی وارد کردید
تو Office 2007 پیداش نمیکنم !!!

برای ساختن یک فایل template :


Word را اجرا نمائید .
از منوی file گزینه new را انتخاب کنید.
از پنجره باز شده به General tab رفته پس از انتخاب blank document در قسمت create new ، template را انتخاب کنیدو سپس ok.
بر یک جای خالی از منوی بالا راست کلیک کنید و گزینه forms را انتخاب کنید.
شروع به تایپ متن خود کنید و هر کجا متغیری لازم شد از نوار ابزار ایجاد شده text form field را انتخاب کنید و سپس به تایپ ادامه دهید.
در انتها بر روی متغیرهایی که در متن ایجاد کردید راست کلیک کرده و properties را انتخاب کنید و برای آنها نام مناسب انتخاب کنید مثلا txtName و غیره
template ایجاد شده را با نام دلخواه ذخیره نمائید. دقت کنید که در این حالت پسوند dot. باید بگیرد.

__siavash__
پنج شنبه 30 خرداد 1387, 15:01 عصر
برای ساختن یک فایل template :




Word را اجرا نمائید .


از منوی file گزینه new را انتخاب کنید.
از پنجره باز شده به General tab رفته پس از انتخاب blank document در قسمت create new ، template را انتخاب کنیدو سپس ok.
بر یک جای خالی از منوی بالا راست کلیک کنید و گزینه forms را انتخاب کنید.
شروع به تایپ متن خود کنید و هر کجا متغیری لازم شد از نوار ابزار ایجاد شده text form field را انتخاب کنید و سپس به تایپ ادامه دهید.
در انتها بر روی متغیرهایی که در متن ایجاد کردید راست کلیک کرده و properties را انتخاب کنید و برای آنها نام مناسب انتخاب کنید مثلا txtName و غیره
template ایجاد شده را با نام دلخواه ذخیره نمائید. دقت کنید که در این حالت پسوند dot. باید بگیرد.


از پنجره باز شده به General tab رفته پس از انتخاب blank document در قسمت create new ، template را انتخاب کنیدو سپس ok.

قسمت Template رو پیدا نمیکنم اما توی همون Document همون کاراها رو انجام میدم بعد با پسوند dot. ذخیره میکنم ظاهرا مشکلی نیست
(البته ToolBox, forms رو توی Office 2007 پیدا نمیکنم )
اما سوال اصلی من اینه که چرا از فرمت dot. استفاده میکنید ؟
اگر یه همچین فایلی رو با پسوند doc. هم ذخیره کنیم میتونیم همون کار رو انجام بدیم !!!

y.saied
پنج شنبه 30 خرداد 1387, 20:48 عصر
دوست عزيز ، جناب آقاي Hossein Bazyan :


من Sample رو از لينكي كه زحمتش و كشيده بودين دانلو كردم و از تون ممنونم ، ولي وقتي كه روي Command1 كليك ميكنم اين خطا رو ميده اگه زحمتش و بكشي و من و راهنمايي كني ازت يه دنيا ممنون ميشم .

__siavash__
پنج شنبه 30 خرداد 1387, 22:17 عصر
دوست عزيز ، جناب آقاي Hossein Bazyan :





من Sample رو از لينكي كه زحمتش و كشيده بودين دانلو كردم و از تون ممنونم ، ولي وقتي كه روي Command1 كليك ميكنم اين خطا رو ميده اگه زحمتش و بكشي و من و راهنمايي كني ازت يه دنيا ممنون ميشم .

این Error رو که شما فرستادید چی هست ؟
یه فایل Error.htm هست !!!؟؟؟ چیزی معلوم نیست

Hossein Bazyan
جمعه 31 خرداد 1387, 10:43 صبح
سلام
من خطا رو نتونستم ببینم . با فرمت عکس بفرستش یا تکست .
احتمالا روی کامپیوتر آفیس نصب نیست و یا اینکه کتابخانه word رو به vb فراخوانی نکرده ای .
این برنامه هم در وی بی و هم دات نت کار میکنه.

y.saied
جمعه 31 خرداد 1387, 18:22 عصر
دوست عزيز ، جناب آقاي Hossein Bazyan :

1 : مشكلم حل فقط اگه ممكنه كدهاي برنامه رو توضيح بدين تا من هم ازش سر دربيارم .

2 : در ضمن اين Sample با Word2007 كار ميكنه يا نه ؟
3 : چون من اولش Word2007 نصب كرده بودم كه خطا ميداد وقتي كه 2003 رو نصب كردم خطا رفع شد.
4 : امكان داره كه اطلاعات رو از بانك اطلاعاتي به Word بديم ، يعني اول تو بانك اطلاعاتي Save بشع بعداٌ بتونيم تو Word ازش استفاده كنيم .

kmotavali
شنبه 01 تیر 1387, 14:56 عصر
دوستان عزیز این مشکل براحتی قابل حل است
شما میتوانید یک فایل Word را با استفاده از منوی Merge mail مستقیما به بانک اطلاعاتی متصل کنید و فقط هنگام چاپ اون رو فراخوانی کنید .

y.saied
شنبه 01 تیر 1387, 15:19 عصر
دوستان عزیز این مشکل براحتی قابل حل است
شما میتوانید یک فایل Word را با استفاده از منوی Merge mail مستقیما به بانک اطلاعاتی متصل کنید و فقط هنگام چاپ اون رو فراخوانی کنید .


میشه بطور کامل توضیح بدی