نحوه وارد کردن اکسل (Excel) در ویژوال بیسیک (VB6)

اتصال ويژوال بيسيك به اكسل

سلام !
آقايون خانوم ها من شديدا به كمك شما نياز دارم !
من مي خوام توسط يه برنامه يه سري جدول به طور خود كار تو اكسل پر بشه و سيو بشن
لطفا منو كمك كنيد
هر كي منو خوب كمك كنه و مشكلم حل بشه بهش 1 ريسلر مجاني مي دم !
لطفا كمكم كنيد :cry:
 

mosyhey

Member
من قبلاً این کار را کرده بودم، حالا هم چند خط اون را برایت می گذارم تا روش کار دستت بیاید:
HTML:
Dim excel_app As Excel.Application
Dim excel_wbk As Excel.Workbook
Dim excel_wsh As Excel.Worksheet
Set excel_app = New Excel.Application
Set excel_wbk = excel_app.Workbooks.Add
Set excel_wsh = excel_wbk.Worksheets.Add
excel_wsh.Name = "ٌWorkSheetName"
excel_wsh.Columns("A").Font.Bold = True
excel_wsh.Columns("A").HorizontalAlignment = 3
excel_wsh.Columns("A").VerticalAlignment = 2
excel_wsh.Columns("A").Borders.Color = black
excel_wsh.Rows(1).Font.Bold = True
excel_wsh.Rows(1).HorizontalAlignment = 3
excel_wsh.Rows(1).VerticalAlignment = 2
excel_wsh.Rows(1).Borders.Color = black
excel_wsh.Cells(1, 1) = "salam"
excel_wsh.Cells(2, 1) = "bye"
سپس با حلقه ها تک تک خانه ها را پر کن همان طور که من دو تایش را برای نمونه پر کرده ام.
 

tannaz esteghla

New Member
سلام به همگي
من همين امروز در اينجا عضو شده ام و نياز به کمک سريع شما دارم .

من برنامه اي در دست دارم که لازم است با پايگاه داده اي در اکسس ارتباط برقرار کنم .

کار را بطور مرحله اي توضيح مي دهم تا درست متوجه شويد که موضوع از چه قرار است :

- من يک DB دارم با تعداد زيادي جدول و Query

- مي خواهم در برنامه از چندين جدول و يکي از Query ها استفاده کنم

- در ابتدا يک DataEnvironment تعريف کردم و Connection آن را به نوع jet4.0 براي اکسس گذاشتم و آدرس DB را هم تعيين کردم .

- يک Command1 تعريف کردم و در آن دستورات SQL نوشتم و SQL Builder را زدم و جداول را در زير آن ليست کرد در همان نمودار شاخه اي زير DataEnvironment .

- براي نمايش آن در فرم VB مجبور شدم از Hierarchical FlexGrid استفاده کنم چرا که Flexgrid يا DataGrid نتوانستند در قسمت Datamember ، Command1 را که در آن از Query درون DB هم استفاده شده بود ، تشخيص دهند . يعني در Flexgrid يا DataGrid با انتخاب DataEnvironment بعنوان Data Source در بخش DataMember گزينه اي را نشان نمي داد و فقط در Hierarchical FlexGrid آن را مي شناخت .

- يک Hierarchical FlexGrid گذاشتم و ارتباطش را به Command1 ايجاد کردم و فيلدهاي مورد نظر را در آن نمايش دادم .


---------------------------------------------- تا اينجا همه چيز خوب و درست کار مي کند -----------------------------------------------

حالا بايد شرطي را در آن جدول اعمال کنم

- در جايي از فرم دو تاريخ از کاربر مي گيرم

- بايد محتواي ستون تاريخ از جدول نمايش داده شده در Hierarchical FlexGrid را بتوانم با تاريخ هاي Textbox ها مقايسه کنم و بر آن اساس اطلاعات را نمايش دهم . به نظرم بايد به طريقي در داخل برنامه دستور SQL بنويسم . اين کار هم با استفاده از ConnectionString تا حدي انجام شد اما تنها مي توانم چند فيلد را نمايش دهم و تازه هنوز هم نتوانستم مقايسه اي انجام دهم

- علاوه براين شروطي دارم که گاهي طبق شرايطي بعضي فيلدها را نمايش دهد و گاهي نمايش ندهد يا مقدار صفر برايشان بگذارد يا حتي اطلاعات جديد را به پايگاه داده اضافه کند و ....

- خلاصه هر جوريه بايد در خود VB دستور SQL آن هم طولاني بنويسم ولي فقط دستورات SQL کوتاه را قبول مي کند .

من بايد پروزه را هرچه سريعتر تحويل دهم .
خواهش مي کنم کمکم کنيد .
ايميل خود را هم مي گذارم تا مستقيما جواب را سريعتر به خودم هم ميل بزنيد : [email protected]
بي نهايت ممنون .
منتظرم
 

areza

New Member
عزيزم
با توجه به اينكه از سمت مديريت اين انجمن از من خواسته شده تا از لينك سايت خودم در اين انجمن استفاده نكنم
(عالم آن است كه علمش دست همگان باشد )
اما ادب را آن دانستم كه جواب سوال شما را بدهم
دوست عزيزم
شما نبايد در ConnectionString دستورات خود را بنويسيد
بلكه در قسمت Property Page >RecordSource اين كار را انجام دهيد
 

saeid3d

Member
سلام به همه دوستان
خواهشا كمكم كنين
من مي خوام يك برنامه داشته باشم كه وقتي رو يك دكمه كليك مي كنيم داخل همون برنامه تو يك قسمتش ( مثلا داخل يك لايه )
پنجره اكسل نشون داده بشه مثلا ليستي از اسامي رو نشون بده
تو صفحه 19 اين تاپيك توضيحاتي درباره برنامه هاي چند سندي داده شده اما متاسفانه عكسهاي پست شماره 184 و 185 و 186 لود نميشه
ميشه اين عكس هارو يك جا ديگه آپلود كنين كه ما ببينيم
يا يك مثلال خوب و راحت از اين چيزي كه مي خوام بزنين
ممنون همه دوستان
منتظرم
 

saalek110

Well-Known Member
با سلام.
در آن پستهایی که فرمودید فقط گفته شده که اکسل یک برنامه چند سندی است. نه اینکه ارتباط با اکسل بحث شده باشد.
عکسها فقط نمایش محیط اکسل است. چیز خاصی ندارد. در اینترنت سرچ کنید برای ویژوال بیسیک و اکسل.
 

persiandownload

New Member
با سلام
بنده یک برنامه حسابداری در اکسل 2003 (Excel) طراحی کرده ام ، اکنون می خواهم این برنامه را به طور کامل به ویژوال بیسیک 6 انتقال دهم تا بتوانم نهایتاً یک فرمت اجرایی exe از این برنامه داشته باشم.
لازم به ذکر است که برنامه در اکسل به صورت کامل می باشد و تنها کاری که لازم است انجام شود در واقع نوعی ایمپورت یا وارد کردن آن در محیط ویژوال بیسیک 6 می باشد. خواهشمند است در این رابطه راهنمایی کامل نمائید و توضیح دهید به چه نحوی و از چه طریقی می توان این کار را انجام داد. با تشکر
 

saalek110

Well-Known Member
منبع:
http://support.microsoft.com/kb/219151

من ابتدا در اکسل یه صفحه ساختم و در هارد ذخیره کردم.

بعد در ویژوال بیسیک از منوی Project زیرمنوی Components را زدم. بعد به tab سوم یعنی Insertable Objects رفتم. و Microsoft Excel Worksheet را به جعبه ابزار اضافه کردم. و آن را روی فرم قرار دادم.

بعد از منوی Project زیرمنوی Refrences را زدم. و Microsoft Excel 10.0 Object Library را تیک زدم و Ok کردم.

بعد یک Button به فرم افزودم.
و به سایت زیر رفتم:
http://www.thescripts.com/forum/thread14344.html

و کد زیر را برای باتون قرار دادم:
کد:
Private Sub Command1_Click()
Dim oXL As Excel.Application
Dim oWB As Excel.Workbook
Dim oWS As Excel.Worksheet

Set oXL = New Excel.Application
Set oWB = oXL.Workbooks.Open("F:\Book1.xls")
Set oWS = oWB.Worksheets("Sheet1")

oWS.Range("B1").Value = 23.5
oWS.Range("B2").Value = 17.6
oWS.Range("B3").Formula = "=B1+B2"

oWB.Save

oXL.Quit
End Sub

و بعد وقتی فایل اکسل خود را در هارد باز کردم دیدم تغییر کرده.
ولی محتوای فایل اکسل خود را در Sheet1 نداشتم.
-----------------------------------------
کد:
"visual basic 6.0"+excel
را یا عبارات دیگر را جستجو کنید تا کدهای بهتری برای ساخت برنامه های کاملتر پیدا کنید.
 

persiandownload

New Member
از راهنمایی شما سپاسگذارم.
ولی بنده می خواهم در واقع صفحه اکسل را روی فرم ویژوال بیسیک نشان بدم تا بتوانم به نوعی آن را exe کنم.
در واقع می خواهم کاری کنم که کاربر متوجه نشود برنامه در اکسل هستش تا کد های آن را ببینه. با این کار می خواهم صفحه اکسل برنامه ی خودم را روی فرم نشان بدهم تا همان کار ها انجام گردد و پروژه من exe یا اجرایی شود.
اگر راهنمایی کنید ممنون می شوم.
 

saalek110

Well-Known Member
به نقل از sinbad68 در فروم پرشین تولز در تاپیک (( نمونه برنامه های VB6 -آموزش از روی مثال ))
http://forum.persiantools.com/t31711-page14.html


کار با فایل هایی از نوع Excel و Word

با سلام.

» به دلیل این که برنامه Excel و Word یکی از ساده ترین و پرکاربردترین برنامه های مورد استفاده بوده و ساخت شرکت مایکروسافت است و ویژوال بیسیک به راحتی قادر به برقراری ارتباط با آن است ، امروز می خواهم به صورت خلاصه روش ایجاد یک فایل از نوع Excel و Word و برقراری ارتباط با آنها را به شما عزیزان توضیح دهم .

» برای این که شما از امکانات کار با Excel و Word در ویژوال بیسیک 6 برخوردار باشید باید از رابطی که مخصوص خود Excel و Word است استفاده نمایید .

برای این کار شما باید از دیالوگ References گزینه های زیر را تیک بزنید :

Microsoft Excel 9.0 Object Library
Microsoft Word 9.0 Object Library

البته بسته به نسخه آفیسی که شما بر روی سیستم خود نصب می کنید شماره یا ورژن این گزینه ها تغییر خواهد کرد .

----------------------------------
@ کار با Excel :

در ابتدا شما باید تعریفات زیر را در قسمت General برنامه خود انجام دهید :
کد:
Dim X_Excel As Excel.Application
Dim X_WorkBook As Excel.Workbook
Dim X_WorkSheet As Excel.Worksheet
حالا برای ایجاد یک فایل از نوع Excel از دستور زیر باید استفاده کنید :
کد:
Set X_Excel = New Excel.Application
سپس یک صفحه کاری ایجاد کنید که باید از دستور زیر استفاده کنید :
کد:
Set X_WorkBook = X_Excel.Workbooks.Add
پس از این کار شیت ( Sheet ) مورد نظر را باید انتخاب کنید :
کد:
(Set X_WorkSheet = X_WorkBook.Worksheets(1
که در این مثال Sheet1 را انتخاب کردیم .
» همانطور که می دانید صفحه Excel به صورت گسترده بوده و کار با آن بر اساس خانه های موجود در آن است که هر کدام آدرس مخصوصی دارد .


برای مثال خانه شماره یک دارای آدرس ( 1 , 1 ) می باشد . ما هم از این آدرسها برای دسترسی به این خانه ها استفاده می کنیم :
کد:
X_WorkSheet.Cells(سطر , ستون ) = داده مورد نظر  
X_WorkSheet.Cells( 1 , 1 ) = "VB"
X_WorkSheet.Cells( 1 , 2 ) = "Bala"
در مثال بالا رشته VB در اولین خانه و رشته Bala در خانه دوم ردیف اول صفحه یا جدول ذخیره می شود و محدوتی برای وارد کردن انواع داده وجود ندارد و شما می توانید هر نوع داده ای را در خانه ها قرار دهید .

» پس از ایجاد یک صفحه کاری و قرار دادن داده در خانه های آن نوبت به ذخیره کردن آن به عنوان یک فایل Excel می رسد که باید از دستور زیر برای این کار استفاده کنید:
کد:
"X_WorkBook.SaveAs FileName:= "C:\Smple.xls
همچنین شما میتوانید برای نمایش صفحه کاری خود توسط برنامه اکسل به صورت زیر عمل کنید :
کد:
X_Excel.Visible = True

و برای خروج از صفحه کاری از دستور زیر استفاده کنید :
کد:
X_Excel.Quit
این دستور زمانی کاربرد دارد که از دستور قبلی آن استفاده نمایید .


پست بعدی این تاپیک کار با Word بود.
 

saalek110

Well-Known Member
نقل از :
http://www.iran-eng.com/showthread.php?t=27040

با سلام
من یک OLE COMPONENT اکسل در برنامه ویژوال بیسیک اضافه کرده ام ولی نمی توانم داده های آن را از طریق کد نویسی تغییر دهم .

میخواستم ببینم چطور میتوان داده های یک CELL را از طریق کد نویسی تغییر داد .
سلام.
من زیاد با ole کار نکردم و معمولا هم کار نمی کنم... چون ole ها بار اضافی به نرم افزار تحمیل می کنند و جلوی پردازش سریع رو می گیرند...

ولی روشی که فکر کنم ساده تر و بهتر باشه و من خودم قبلا استفاده کردم استفاده از ado هست... که به راحتی می تونید هر کاری که روی یک پایگاه داده شبیه به access یا sql انجام می دید روی یک فایل excel هم انجام بدهید...
برای این کار لازم هست که provider کامپوننت ado رو به صورت زیر تنظیم کنید و آدرس فایل اکسل رو بدید:
"Microsoft.Jet.OLEDB.4.0"

البته توضیحات در این رابطه زیاد هست برای مطالعه بیشتر و آشنایی به مقاله شماره 257819 در سایت مایکروسافت مراجعه کنید:
http://support.microsoft.com/kb/257819

اگه سوالی بود من در خدمتم...

اگر کسی از دوستان اطلاعات در مورد ole داشت خوشحال میشم بزاره تا هم دوستمون هم بقیه استفاده کنند
با تشکر از راهنمایی شما .

این مشکل رو تونستم با کد زیر حل کنم :
OLE1.OBJECT.

بطور مثال :
کد:
OLE1.OBJECT.WORKSHEETS(1).RANGE("E2") = 100
یه مساله دیگه اینکه اگه از OLE استفاده کنم ،کامپیوتری که از این برنامه من استفاده می کنه باید EXCEL داشته باشه یا نه ؟
تا جایی که من می دونم آره باید کامپیوتر اجرا کننده هم برنامه رو داشته باشه .... چون این کامپوننت فقط برای لینک دادن هست و اسمش هم همینه Object Linking and Embedding
البته ممکن هست خلافش هم ثابت بشه
فکر کنم باید داشته باشه
در مورد اکسس که اینجوریه
با تشکر از جواب ها و یکی دو سوال دیگه ....

اگه یک setup براش درست کنم و از طریق اون نصب بشه چطور ؟
آیا این setup فایل های مورد نیاز برای excel رو به همراه داره یا نه ؟

(با application setup wizard )
نه
مسلما یک ole برای کار باید به نرم افزار مقصد لینک بده پس باید اون نرم افزار نصب باشه و فکر نمی کنم با ساختن setup حل بشه....
البته شاید mini application هایی باشند برای این کار ولی من تا حالا ندیدم...
شما بهتره از همون ado استفاده کنی چون در اون صورت احتیاجی به نصب نرم افزار نیست...البته هر طور صلاح می دونی
 

جدیدترین ارسال ها

بالا