ورود

View Full Version : سوال: كار با Word در وبي 6



rezankh
شنبه 30 مهر 1390, 22:31 عصر
سلام
چطور ميشه عكس، جدول و متن رو با ترتيب خاص و در محل خاص در يك فايل ورد قرار داد؟

M.T.P
دوشنبه 02 آبان 1390, 00:46 صبح
با RichTextbox امتحان کردید؟ یعنی فایل رو باز کنید و ویرایش کنید؟

vbhamed
دوشنبه 02 آبان 1390, 09:06 صبح
سلام

مي‌تونيد از OLE استفاده كنيد و براي ورد كدنويسي انجام بديد
يعني دقيقا كاري كه قراره تو ورد انجام بشه رو با كدنويسي تعريف كنيد
براي اين كار به قسمت ماكروها در ورد مراجعه كنيد و يك ماكروي جديد ايجاد كنيد بعد كد ماكرو رو ببينيد (با زدن Alt+F11 در ورد)
با اضافه كردن رفرنس word در ويژوال بيسيك و نوشتن همون كدهاي ماكرو كارتون قابل انجام هستش
براي توضيحات بيشتر به دنبال OLE در ويژوال بيسيك جستجو كنيد
اينم نمونه كد :
Dim x
Set x = CreateObject("Word.Application")

x.Visible = True
x.Documents.Add DocumentType:=0
Selection.TypeText Text:="اين يك تست است"
Selection.TypeParagraph

MsgBox "Now Exit form word"

'for exit
x.Quit
Set x = Nothing

البته با انجام اعمال زير مي‌تونيد با تايپ x و زدن نقطه نام متد و خواص قابل استفاده رو ببينيد و كارتون خيلي راحت تر هست، ولي برنامتون محدود به ورژن وردي ميشه كه روي دستگاه خودتون نصب هست، مي‌تونيد ابتدا به اين روش برنامه رو ايجاد كنيد و بعد از تكميل به حالت قبلي درش بياريد تا مشكل ورژن ورد هم پيش نياد
1 - اگر از منوي Project گزينه References آيتم Microsoft Word ... Object Library رو انتخاب كنيد
2 - به جاي 2 خط اول از كد زير استفاده كنيد
Dim x As Word.Application
Set x = New Word.Application

rezankh
دوشنبه 02 آبان 1390, 18:51 عصر
سلام

مي‌تونيد از OLE استفاده كنيد و براي ورد كدنويسي انجام بديد

با تشكر از شما شي ole بكارم نيومد. بلكه از كد اولتون تونستم يك فايل ورد ايجاد كنم و حتي متن دلخواهم رو اضافه كنم. اما ميمونه قرار دادن Shape كه داخل بعضي از اونها عكس و بعضيها هم متن قرار ميگره، حالا اين shapeها را چگونه و با چه ترتيبي و چه طوري بايد در ورد قرار بدم؟ تصوير فايل وردي كه ميخوام درست كنم رو اينجا ميذارم. لطفا راهنمايي كنيد.

rezankh
دوشنبه 02 آبان 1390, 18:54 عصر
76997
اينم فايل وردي كه ميخوام درست كنم.

kitcat_m18
دوشنبه 02 آبان 1390, 19:44 عصر
چرا فايل ورد؟؟؟ شما بايد از نرم افزار هاي گزارش گيري براي اينکار استفاده کني.
بهت نمي گم نميشه اما اينطوري دردسرت خيلي زياده!
لطفا دليل خودتونو براي استفاده از فايل ورد بفرمائيد.
موفق باشيد :لبخندساده:

rezankh
دوشنبه 02 آبان 1390, 22:39 عصر
همون طور كه عكس نشون ميده مي‌بايست عكس 2 طرف تمام دامهاي يك دامداري چاپ گرفته بشه ضمن اينكه بايد در محلي ذخيره بشه تا در صورت نياز مجدد از فايل ورد مورد نظر چاپ گرفته بشه. نرم افزارهاي گزارشگيري هيچكدام مكان ذخيره شدن و چاپ مجدد رو ندارند، لذا چاره‌اي جز استفاده از نرم افزار ورد ندارم.

kitcat_m18
دوشنبه 02 آبان 1390, 23:44 عصر
سلام دوست عزيز،
شما با نرم افزار Crystal Reports کار کن. از جمله امکاناتش مي تونم به RTL Support بودن و امکان گرفتن خروجي به انواع فرمت هاي HTML, Exel, PDF و... اشاره کنم

اگرم کار کردن با اين نرم افزار برات سخت بود مي توني از Active Report استفاده کني (اما به صورت معمولي RTL رو ساپورت نمي کنه)

موفق باشي :چشمک:

rezankh
دوشنبه 02 آبان 1390, 23:57 عصر
با كريستال ريپورت كار كردم ولي موقع ذخيره كردن به فرمتهاي ديگه فونتها رو بهم ميريزه و نيز براي كاربراني كه متدي هستند پيدا كردن گزينه ذخيره كمي گيج كننده و جديد هست.

rezankh
سه شنبه 03 آبان 1390, 22:39 عصر
اينم نمونه كد :
Dim x
Set x = CreateObject("Word.Application")

x.Visible = True
x.Documents.Add DocumentType:=0
Selection.TypeText Text:="اين يك تست است"
Selection.TypeParagraph

MsgBox "Now Exit form word"


البته با انجام اعمال زير مي‌تونيد با تايپ x و زدن نقطه نام متد و خواص قابل استفاده رو ببينيد و كارتون خيلي راحت تر هست،

سلام
با تشكر اگه امكانش هست كدهاي
x.Documents.Add DocumentType:=0
و كد Selection.TypeParagraph رو توضيح بديد.

منظور x.Documents.Add يعني يك متن اضافه بشه يا اينكه يك داكيومنت تو فايل x ايجاد بشه؟ و منظور DocumentType: = 0 نيز چيه؟

vbhamed
پنج شنبه 05 آبان 1390, 09:13 صبح
سلام

متد Add يك داكيومنت يا همون فايل جديد ايجاد مي‌كنه
Type:=0 هم منظور سند ورد باشه، چون مي‌تونه سندهاي متني معمولي، XML، فرمهاي آماده از داخل تمپليتهاي ورد و ... هم ايجاد كنه
اينم چند نمونه :

Documents.Add DocumentType:=wdNewBlankDocument

Documents.Add Template:="Normal", NewTemplate:=False, DocumentType:=4
Documents.Add Template:="Normal", NewTemplate:=False, DocumentType:=1

Documents.Add Template:= _
"E:\Program Files\Microsoft Office\Templates\1033\FAX\Business Fax.dot", _
NewTemplate:=False, DocumentType:=0

Documents.Add Template:= _
"E:\Program Files\Microsoft Office\Templates\1033\Professional Memo.dot", _
NewTemplate:=False, DocumentType:=0

ولي يادگيري اينها راحته، كافيه يك ماكرو در ورد ضبط كنيد و كارهاي دلخواه رو انجام بديد و بعد كد ماكرو رو با زدن Alt+F11 ببينيد
ضمنا همه كارها با ماكرو قابل ضبط نيست مثل اعمال گرافيكي

rezankh
جمعه 06 آبان 1390, 01:32 صبح
با سلام و تشكر
بعد از كلي كار كردن با كدهايي كه دادين بالاخره كد گذاشتن Shape در ورد رو پيدا كردم اينم كدش

x.Selection.InlineShapes.AddPicture("J:\Dam2\Dam\Pictures\123.jpg").Height = 30
x.Selection.TypeParagraph
x.Selection.InlineShapes.AddPicture("J:\Dam2\Dam\Pictures\123.jpg").Width = 30
x.Selection.TypeParagraph



ولي فقط ميتونم در آن واحد فقط ارتفاع و يا فقط عرضش رو مقدار بدم، در كد بالا دستور دوم همان دستور اول هست ولي با اين تفاوت كه بجاي ارتفاع از عرض استفاده كردم كه فقط عكس رو تكرار ميكنه.
اگه ميشه دوستان كمي بررسي كنند كه آيا امكان تغيير همزمان ارتفاع و عرض Shape و نيز موقعيت قرارگيري اون چگونه هست؟

vbhamed
جمعه 06 آبان 1390, 08:16 صبح
سلام

براي اين كار بايد يك آبجكت ايجاد كنيد و بعد خاصيتهاي اون رو تغيير بديد، مشابه نمونه زير

Dim x As New Word.Application

x.Documents.Add Documenttype:=0
x.Visible = True

Dim obj As Word.InlineShape
Set obj = x.Selection.InlineShapes.AddPicture("c:\Documents and Settings\Armina\Desktop\1319702342.jpg")
obj.Width = 150
obj.Height = 100
obj.Line.Visible = msoTrue
obj.Line.DashStyle = msoLineDashDotDot
x.Selection.TypeParagraph

x.Quit
Set x = Nothing

rezankh
جمعه 06 آبان 1390, 09:44 صبح
با تشكر از حامد عزيز
خوب سايز عكس كه دستتون درد نكنه درست شد. حالا ميخوام عكس بعدي رو سمت چپ عكس اولي قرار بده نه پايين عكس اولي يعني مختصات قرار گرفتن هر آبجكت رو چطوري تعريف كنم؟ شرمنده هر چي دنبال ميگردم سر در نياوردم آخه خيلي تابع داره.

rezankh
شنبه 07 آبان 1390, 16:56 عصر
بازهم گشتم در مورد pagesetup كدهاي زير رو پيدا كردم.

x.ActiveDocument.PageSetup.PaperSize = wdPaperA4
x.ActiveDocument.PageSetup.PageHeight = 29.7
x.ActiveDocument.PageSetup.PageWidth = 21
x.ActiveDocument.PageSetup.RightMargin = 20
x.ActiveDocument.PageSetup.LeftMargin = 0.5
x.ActiveDocument.PageSetup.TopMargin = 20
x.ActiveDocument.PageSetup.BottomMargin = 0.5

ولي مختصات قرار گرفتم يك آبجكت رو هنوز پيدا نكردم.

kitcat_m18
شنبه 07 آبان 1390, 20:06 عصر
با كريستال ريپورت كار كردم ولي موقع ذخيره كردن به فرمتهاي ديگه فونتها رو بهم ميريزه و نيز براي كابراني كه متدي هستند پيدا كردن گزينه ذخيره كمي گيج كننده و جديد هست.

خوب محصول شرکت SAP رو زير سوال مي بري ها! :قهقهه:
من که از کريستال استفاده کردم مشکلاتي که شما گفتي رو نداره!
در ضمن براي گرفتن خروجي هم مي توني دکمه بذاري و کد بزني.
اگم سختته برو سراغ اکتيو ريپورت
موفق باشي :لبخندساده:

rezankh
یک شنبه 08 آبان 1390, 19:36 عصر
خوب محصول شرکت SAP رو زير سوال مي بري ها! :قهقهه:
من که از کريستال استفاده کردم مشکلاتي که شما گفتي رو نداره!
در ضمن براي گرفتن خروجي هم مي توني دکمه بذاري و کد بزني.
اگم سختته برو سراغ اکتيو ريپورت
موفق باشي :لبخندساده:

در اينكه كريستال ريپورت بهترين ابزار گزارشگيري هست شكي ندارم و حتي خودم هم تو بانكهاي اطلاعاتي و حتي يك كار گرافيكي ازش استفاده كردم ولي اينبار با توجه به مخاطبم و همچنين نياز به تغييرات احتمالي در تصاوير توسط كاربر و از همه مهمتر يادگرفتن كار با ورد در وبي، تصيم گرفتم از ورد استفاده كنم.
خوشبختانه تمام مشكلاتي كه گفتم رو با كمك سروران گرامي حل كردم و انشا... بعد از تموم شدن پروژه، كدهايي كه استفاده كردم رو تو همين تاپيك ميزارم تا بدرد ديگران هم بخوره.
فقط تنها سوالي كه برام مونده اينه كه موقع دستور
x.Documents.Save

چطوري بطور پيش فرض نام مورد نظرم در قسمت file name ظاهر بشه؟

vbhamed
دوشنبه 09 آبان 1390, 11:16 صبح
سلام

x.ActiveDocument.SaveAs FileName:="Doc1.doc", FileFormat:=wdFormatDocument, _
LockComments:=False, Password:="", AddToRecentFiles:=True, WritePassword:="", _
ReadOnlyRecommended:=False, EmbedTrueTypeFonts:=False, _
SaveNativePictureFormat:=False, SaveFormsData:=False, SaveAsAOCELetter:=False

vbhamed
دوشنبه 09 آبان 1390, 11:19 صبح
خوب محصول شرکت SAP رو زير سوال مي بري ها! :قهقهه:
من که از کريستال استفاده کردم مشکلاتي که شما گفتي رو نداره!
اگم سختته برو سراغ اکتيو ريپورت
موفق باشي :لبخندساده:
سلام
هر چند كريستال ريپورت گزارشگر خوبيه ولي اگر يك مقدار با Fast Report Studio كار كنيد فكر مي‌كنم نظرتون راجع به اون كلا تغيير كنه

rezankh
دوشنبه 09 آبان 1390, 11:47 صبح
سلام

x.ActiveDocument.SaveAs FileName:="Doc1.doc", FileFormat:=wdFormatDocument, _
LockComments:=False, Password:="", AddToRecentFiles:=True, WritePassword:="", _
ReadOnlyRecommended:=False, EmbedTrueTypeFonts:=False, _
SaveNativePictureFormat:=False, SaveFormsData:=False, SaveAsAOCELetter:=False


با تشكر از لطفتون ببخشيد كه اينقدر سوالاتم طول كشيد. اگه بخوام يكجايي غير از my document ذخيره كنه، كدوم قسمتش رو تغيير بدم؟

vbhamed
چهارشنبه 11 آبان 1390, 07:38 صبح
سلام
تو اسم فايل !

x.ActiveDocument.SaveAs FileName:="C:\Doc1.doc", FileFormat:=wdFormatDocument, _
LockComments:=False, Password:="", AddToRecentFiles:=True, WritePassword:="", _
ReadOnlyRecommended:=False, EmbedTrueTypeFonts:=False, _
SaveNativePictureFormat:=False, SaveFormsData:=False, SaveAsAOCELetter:=False

mohammadmowlavi
شنبه 22 آذر 1393, 18:53 عصر
کاش کدهاتو هم میزاشتی نیاز داشتیم

vbhamed
دوشنبه 24 آذر 1393, 15:03 عصر
سلام
كدهاي چي رو ؟