ก็ไม่อยากสาธยายมากนักครับ ว่ากันง่ายๆ เว้ากันซื่อๆ ตามประสาของผู้ชายไม่เจ้าชู้ เปรียบเหมือนงูไม่มีพิษ 55555+ ... หลักการของโปรแกรมไม่ได้มีอะไรมากเลย เป็นการเขียนโค้ดผ่านทาง VB6 เพื่อเข้าไปขอใช้งานเซลล์ที่อยู่ใน MS Excel ... ก็คือ การขอใช้สูตร หรือ สมการต่างๆของ Excel นั่นเอง (หรือที่เราเขียนขึ้นมาเองก็ได้) ... อันดับแรกต้องสร้างตัวแปร Object สำหรับ Excel ก่อน จากนั้นก็สั่งให้เปิด WorkBook และ WorkSheet ตามลำดับ พอเข้าถึง WorkSheet ได้แล้ว ก็ระบุสูตร สมการ ลงในช่องเซลล์ที่ต้องการ โดยต้องมีเครื่องหมายเท่ากับ (=) นำหน้า เช่น =(5 ^ 2) + 10 / 4 ... สุดท้ายก็ส่งผลการคำนวณในเซลล์นั้นๆกลับมายัง VB6 ... เป็นอันจบพิธีการ ... เรื่องประโยชน์ของการนำไปใช้งาน More Than Word ... เหนือคำบรรยายครับ ... พี่น้อง |
เริ่มต้นกระบวนการทำงาน
 Design Time
 การคำนวณไม่ได้ผิดน่ะครับ ... ผมเลยถือโอกาสยกตัวอย่างเรื่องของ ลำดับความสำคัญของ Operator มาไว้ให้ได้รับชมกันด้วย นั่นคือ เครื่องหมายการคูณ และ การหาร จะมีความสำคัญที่สูงกว่าเครื่องหมายบวก และ ลบ ... คือ 5 ยกกำลัง 2 เท่ากับ 25 แต่มันยังไม่ได้บวกต่อน่ะครับ เพราะติดเครื่องหมายหาร คือ 10 ต้องหารด้วย 4 ก่อน ก็เท่ากับ 2.5 (โดยที่ไม่ต้องใส่วงเล็บก็ได้) จากนั้นค่อยนำเอา 25 + 2.5 คำตอบคือ 27.5 ... ต้องระวังเรื่องลำดับความสำคัญเอาไว้ด้วยน่ะขอรับกระผม
Option Explicit
' #####################################################
' การประมวลผลของสูตร หรือ สมการต่างๆ
' รายละเอียดเพิ่มเติม อ่านได้ที่ ... วิธีการทำให้ Microsoft Excel ทำงานอัตโนมัติจาก Visual Basic
' งานนี้ผมไม่เรียก Excel Object Library (Reference) มาใช้งาน เพราะขี้เกียจคลิ๊ก ... อิอิอิอิอิ
' #####################################################
Private Sub cmdEquation_Click()
On Error GoTo ErrorHandler
' ไม่มีการป้อนสูตร สมการใดๆเข้ามาก็ให้ออกไปจากโปรแกรมย่อยเลย
If Trim(txtEquation.Text) = "" Or Len(Trim(txtEquation.Text)) = 0 Then Exit Sub
' ประกาศตัวแปรใช้งาน Excel Object
Dim ExcelApp As Object
' ประกาศตัวแปรใช้งาน WorkSheet ของ ExcelApp Object
Dim ExcelSheet As Object
' สร้าง Excel Object ขึ้นมาใช้งาน ในชื่อ ExcelApp
Set ExcelApp = CreateObject("Excel.Application")
' สร้าง Workbook ขึ้นมา ... ก็ไฟล์ XLS ตัวใหม่นั่นแหละครับ เป็น Temporary File (ชั่วคราว)
' หากต้องการเปิด WorkBook เดิม ก็ใช้ Open Method ตามด้วยไฟล์ที่ต้องการเอาครับ
ExcelApp.Workbooks.Add
' กำหนดให้ใช้งาน Sheet ใดๆ ... เช่น Sheet1, Sheet2
Set ExcelSheet = ExcelApp.ActiveSheet
' การคำนวณใน Excel จะต้องมีเครื่องหมาย = นำหน้าเสมอครับ
' ก็จะมีลักษณะดังนี้ =(5 ^ 2) + 10 / 4
' ใส่สูตร หรือ สมการ ที่ต้องการเอาไปไว้ที่หลักใด หรือ แถวใดก็ได้ครับ ... เช่น
ExcelSheet.Cells(1, 1) = "=" & txtEquation.Text
' ตอนนี้ Excel มันก็ทำงานอยู่ฉากหลังแทนแล้วล่ะครับ โดยที่ไม่ต้องไปกำหนดค่าใดๆให้มันเลย
' รับค่าผลลัพธ์ที่ได้ใส่ลงใน TextBox เพื่อแสดงคำตอบ
txtAnswer.Text = ExcelSheet.Cells(1, 1)
' ปิดการใช้งาน Workbook โดยไม่ต้องมีการบันทึกไฟล์
ExcelApp.ActiveWorkbook.Close False
' ปิดการใช้งาน MS Excel
ExcelApp.Quit
' ล้างให้ออก ... จาก Memory ของฉัน ... 55555+
Set ExcelSheet = Nothing: Set ExcelApp = Nothing
ExitProc:
Exit Sub
ErrorHandler:
' ขณะโปรแกรมกำลังทำงาน (Run Time) ดัก Error จาก On Error GoTo ErrorHandler
If Err.Number <> 0 Then MsgBox "Error " & Err.Number & vbCrLf & Err.Description
Resume ExitProc
End Sub
Private Sub Form_Load()
Me.Move (Screen.Width - Width) \ 2, (Screen.Height - Height) \ 2
' เคลียร์ค่าการแสดงผล
txtAnswer.Text = ""
' ใส่สูตร สมการตัวอย่างเพื่อทำการทดสอบ
txtEquation.Text = "(5 ^ 2) + 10 / 4"
' นอกจากนี้ก็ยังสามารถใช้พวกสูตรต่างๆที่อยู่ใน MS Excel ได้ด้วยเหมือนกันครับ ... พี่น้อง
' Excel 2003 := คำนวณหากำลังสองของห้า (5 ^ 2 = 25)
' txtEquation.Text = "POWER(5,2)"
' Excel 2003 := ค่าแฟกทอเรียลของ 6 หรือ 6 * 5 * 4 * 3 * 2 * 1 = 720
' txtEquation.Text = "FACT(6)"
' เกี่ยวกับวันที่ เช่น หากวันนี้เป็นวันที่ 15/08/2553
' Excel 2003 := แสดงรูปแบบวันที่ คือ 15/08/2553
' txtEquation.Text = "DATE(2010,8,15)"
' Excel 2003 := ลบจำนวนวันออกไป 2 วัน จะได้ 13/08/2553
' txtEquation.Text = "TODAY() - 2"
' อื่นๆอีกมากมายครับ ... ลองนำมาใช้ประโยชน์ดูกันเอาเลย
End Sub
Private Sub cmdExit_Click()
Set frmVB6ExcelCalculator = Nothing
End
End Sub
|
Conclusion: บทความนี้ก็ไม่มีอะไรมากมายครับ มันก็เรื่องง่ายๆใกล้ตัว ที่นำเอามาคิดจินตนาการ เพื่อการเรียนรู้ และ พัฒนาฝีมือ รวมไปถึงการนำไปประยุกต์ดัดแปลงใช้งาน ในชีวิตประจำวันของเราก็ได้ ไม่ว่าจะเป็นเรื่องชีวิตจริงของการทำงาน เช่น ใช้ในการคำนวณทางตัวเลข ค่าเงิน งานสถิติต่างๆ หรือ ในชีวิตการเรียน ทางด้านคณิตศาสตร์ วิทยาศาสตร์ และอื่นๆมากมาย ... เพื่อลดปมด้อย เอ้ย ขยายขีดความสามารถของ MS Visual Basic 6.0 ให้มีมากขึ้น ...
|