You are on page 1of 15

พัฒนาแอปพลิเคชันด้วย VB6 กับ Excel

อำนำจ นุตะมำน
THAIVBA.NET
พัฒนาแอปพลิเคชันด้ วย VB6 กับ Excel

สารบัญ

บทนา ..................................................................................................................................................................................... 10
บทที่ 1 พืน้ ฐานเอ็กเซลสาหรับโปรแกรมเมอร์ ..................................................................................................................................... 11
ข้อแตกต่างระหว่าง VB กับ VBA ............................................................................................................................................ 11
คลาสออบเจ็กต์ของเอ็กเซล (EXCEL OBJECT CLASS) ................................................................................................................ 11
คอนโทรลของเอ็กเซล (EXCEL OBJECT CONTROL) ................................................................................................................. 13
ออบเจ็กต์ไลบรารี ของเอ็กเซล (EXCEL OBJECT LIBRARY) .......................................................................................................... 14
ออบเจ็กต์เบราเซอร์ กบั เอ็กเซล (OBJECT BROWSER) ................................................................................................................... 14
ค่าคงที่ของเอ็กเซล (EXCEL CONSTANTS) ............................................................................................................................... 15
โครงสร้างออบเจ็กต์ของเอ็กเซล (EXCEL OBJECT MODEL) ......................................................................................................... 17
แอปพลิเคชัน (Application) ............................................................................................................................................. 18
เวิร์กบุ๊ค (Workbook) ..................................................................................................................................................... 19
เวิร์กชี ต (Worksheet) ..................................................................................................................................................... 21
พิ สัย (Range) ............................................................................................................................................................... 22
เอ็กเซลแมโคร (EXCEL MACRO) ........................................................................................................................................... 23
การแก้ไขโปรเจ็กต์ VBA ของเอ็กเซลด้วย VB .............................................................................................................................. 23
บทที่ 2 หลักเบือ้ งต้ นในการเขียนโปรแกรมกับเอ็กเซล ............................................................................................................................ 27
HELLO WORLD! .............................................................................................................................................................. 27
EARLY กับ LATE BINDING ................................................................................................................................................ 28
วิธีตรวจสอบเวอร์ ชนั ของเอ็กเซล ................................................................................................................................................ 29
ค่าคงที่ของเอ็กเซล (BUIT-IN CONSTANTS) ............................................................................................................................. 29
สร้ างฟอร์ มแสดงค่ าคงที่ ของเอ็กเซลด้ วย Listview .................................................................................................................... 30
ความหมายของ EXCEL.APPLICATION ................................................................................................................................... 32
ทาความเข้ าใจเรื่ อง Excel Instance .................................................................................................................................... 33
Quit กับ Set Nothing ................................................................................................................................................... 36
วิธีตรวจสอบว่ า เอ็กเซลรั นอยู่หรื อไม่ ...................................................................................................................................... 37
แสดงเวิร์กบุ๊คในเอ็กเซลด้ วย TreeView Control ................................................................................................................... 37
การเปิ ดใช้งานเวิร์กบุ๊คของเอ็กเซล .............................................................................................................................................. 39
วิธีตรวจสอบว่ า มีไฟล์ เวิร์กบุ๊คอยู่ในเครื่ องหรื อไม่ ....................................................................................................................... 39
วิธีตรวจสอบว่ า เวิร์กบุ๊คถูกเปิ ดใช้ งานอยู่หรื อไม่ ......................................................................................................................... 40
การเรี ยกใช้งานสู ตรฟั งก์ชนั ของเอ็กเซล ........................................................................................................................................ 40
การเรี ยกใช้งานแมโครของเอ็กเซล .............................................................................................................................................. 41
การเรี ยกใช้ฟังก์ชนั ADD-IN ของเอ็กเซล ..................................................................................................................................... 42
OLE CONTROL กับเอ็กเซล.................................................................................................................................................. 43
MSFLEXGRID กับเอ็กเซล ................................................................................................................................................... 46
การเรี ยกใช้งานเวิร์กชีตและเซลล์ ................................................................................................................................................ 51
สร้างฟอร์ มควบคุม WORKSHEET และ RANGE ......................................................................................................................... 53
สร้างฟอร์ มป้ อนข้อมูลใส่ เวิร์กชีตของเอ็กเซล.................................................................................................................................. 54
เข้าใจเรื่ องคลาสของชีตในเอ็กเซล (EXCEL.SHEET)...................................................................................................................... 56

สงวนลิขสิ ทธิ์ตามพระราชบัญญัติลิขสิ ทธิ์ พ.ศ. 2537 โดย อานาจ นุตะมาน 4


พัฒนาแอปพลิเคชันด้ วย VB6 กับ Excel สารบัญ
สลับแ่วและคอลัมน์ในเอ็กเซล (TRANSPOSE) ........................................................................................................................... 57
บทที่ 3 ระบบความปลอดภัยของเอ็กเซล ........................................................................................................................................... 60
ทาความเข้าใจเรื่ อง MACRO SECURITY ................................................................................................................................... 60
คาสั่ งควบคุม Macro Security.......................................................................................................................................... 61
เปิ ดไฟล์ เวิร์กบุ๊คแบบไม่มีเตือน Macro Security .................................................................................................................... 62
ทาความเข้าใจเรื่ องรหัสผ่านของเอ็กเซล ........................................................................................................................................ 63
สร้ างรหั สผ่ านของไฟล์ เวิร์กบุ๊ค (Password to open) ............................................................................................................. 63
เปิ ดไฟล์ เวิร์กบุ๊คที่มีรหัสผ่ าน (Password to modify) ............................................................................................................. 65
ป้ องกันการแก้ ไขเวิร์กบุ๊ค (Workbook Protection)............................................................................................................... 66
ป้ องกันการแก้ ไขชี ต (Sheet Protection) ............................................................................................................................ 67
ป้ องกันการแก้ ไขเซลล์ (Range Protection) ........................................................................................................................ 69
เข้ารหัสผ่านป้ องกันการเปิ ดเวิร์กบุ๊ค (ENCRYPTION) .................................................................................................................... 71
สร้างฟอร์ มเปิ ดไฟล์เวิร์กบุ๊คที่มีรหัสผ่าน ....................................................................................................................................... 72
บทที่ 4 เขียนโปรแกรมจัดการฐานข้ อมูลกับเอ็กเซล............................................................................................................................... 75
ฐานข้อมูล NORTHWIND TRADERS ...................................................................................................................................... 75
ฐานข้ อมูลตัวอย่ างของ Access 2003 ................................................................................................................................... 75
ฐานข้ อมูลตัวอย่ างของ Visual Basic 6 ................................................................................................................................ 76
คาสั่งในการเชื่อมต่อฐานข้อมูล .................................................................................................................................................. 76
DAO (Data Access Object) ........................................................................................................................................ 77
ADO (ActiveX Data Object) ...................................................................................................................................... 77
ประโยคการเชื่อมต่อกับฐานข้อมูล (CONNECTION STRING) ......................................................................................................... 78
ODBC Connection String .......................................................................................................................................... 79
OLE DB Connection String ....................................................................................................................................... 80
RECORDSET กับเอ็กเซล ....................................................................................................................................................... 81
QUERYTABLE ................................................................................................................................................................. 81
IMPORT DATA ................................................................................................................................................................. 82
OpenDatabase ........................................................................................................................................................... 82
OpenText ................................................................................................................................................................... 83
OpenXML .................................................................................................................................................................. 85
แสดงข้อมูลจากเว็บในเอ็กเซล ................................................................................................................................................... 87
การประยุกต์ใช้เอ็กเซลเป็ นฐานข้อมูล (EXCEL DATABASE) .......................................................................................................... 88
สร้ างฐานข้ อมูล Northwind ในเอ็กเซล ................................................................................................................................. 89
Data Project กับเอ็กเซล ................................................................................................................................................ 91
DataGrid กับเอ็กเซล ..................................................................................................................................................... 93
MSHFlexGrid กับเอ็กเซล .............................................................................................................................................. 95
ADODC กับเอ็กเซล ....................................................................................................................................................... 96
DataReport กับเอ็กเซล .................................................................................................................................................. 98
เขียนโปรแกรม VB ติดต่อเอ็กเซลแบบ DAO............................................................................................................................... 99
Excel DAO Database ................................................................................................................................................ 99
Excel DAO Recordset .............................................................................................................................................. 100
สร้ างฟอร์ มป้ อนข้อมูลใส่ เวิร์กชี ตของเอ็กเซลแบบ DAO ............................................................................................................ 101
เขียนโปรแกรม VB ติดต่อเอ็กเซลแบบ ADO............................................................................................................................. 103
Excel ADO Connection ........................................................................................................................................... 103
Excel ADO RecordSet ............................................................................................................................................. 104
สร้ างฟอร์ มป้ อนข้อมูลใส่ เวิร์กชี ตของเอ็กเซลแบบ ADO ............................................................................................................ 106
สิ่ งที่ควรระวังในการประยุกต์ใช้งาน .......................................................................................................................................... 107
ข้อความผิดพลาด COLLATING SEQUENCE ........................................................................................................................... 107

สงวนลิขสิ ทธิ์ตามพระราชบัญญัติลิขสิ ทธิ์ พ.ศ. 2537 โดย อานาจ นุตะมาน 5


พัฒนาแอปพลิเคชันด้ วย VB6 กับ Excel สารบัญ
บทที่ 5 เขียนโปรแกรมจัดรู ปแบบรายงานในเอ็กเซล............................................................................................................................ 109
ทาไมต้องสร้างรายงานด้วยเอ็กเซล ............................................................................................................................................ 109
เปรี ยบเทียบ DATA REPORT กับเอ็กเซล .................................................................................................................................. 109
ทาความเข้าใจเรื่ องเซลล์ในเอ็กเซล ............................................................................................................................................ 112
การใส่ ค่าในเซลล์ (Value) ............................................................................................................................................... 113
การลบค่ าในเซลล์ (Clear, ClearContents, ClearFormats) ............................................................................................. 113
การอ้ างอิ งตาแหน่ งของเซลล์ (Offset, EntireRow, EntireColumn) ...................................................................................... 113
การหาตาแหน่ งของเซลล์ (Column, Row, Address)........................................................................................................... 113
การหาเซลล์ แรกและเซลล์ สุดท้ าย ......................................................................................................................................... 114
สู ตรในเซลล์ (CELL FORMULA) .......................................................................................................................................... 115
สู ตรอาเรย์ (ARRAY FORMULA) ......................................................................................................................................... 116
การใช้เซลล์แบบอาเรย์ .......................................................................................................................................................... 116
ข้อผิดพลาดในเซลล์ (CELL ERROR)...................................................................................................................................... 117
การผสานเซลล์ (MERGE CELLS) ......................................................................................................................................... 118
การตั้งชื่อเซลล์ (NAME RANGE) .......................................................................................................................................... 119
การค้นหาเซลล์ (FIND) ........................................................................................................................................................ 119
การเลือกเซลล์แบบพิเศษ (SPECIALCELLS) ............................................................................................................................. 121
การคัดลอกเซลล์ (COPY/PASTE/PASTESPECIAL) ................................................................................................................. 122
การจัดรู ปแบบของเซลล์ (FORMAT CELLS) ............................................................................................................................ 123
กาหนดรู ปแบบ (NumberFormat) .................................................................................................................................. 123
การจัดตาแหน่ ง (Alignment) .......................................................................................................................................... 124
กาหนดฟอนต์ (Font) .................................................................................................................................................... 125
ตีกรอบตีเส้ น (Borders) ................................................................................................................................................ 126
ปรั บแต่ งสี พืน้ (Interior Color)...................................................................................................................................... 127
ป้ องกันเซลล์ (Protection) ............................................................................................................................................. 128
การปรับฟอนต์ตวั อักษรภายในเซลล์ .......................................................................................................................................... 129
การปรับความกว้างอัตโนมัติ (AUTOFIT) ................................................................................................................................. 129
การจัดเรี ยงข้อมูล (SORT) ..................................................................................................................................................... 130
การกรองข้อมูล (DATA FILTER) .......................................................................................................................................... 131
กรองข้ อมูลแบบ AutoFilter............................................................................................................................................ 131
กรองข้ อมูลแบบ Advanced Filter .................................................................................................................................. 131
การจัดรู ปแบบรายงานอัตโนมัติ (AUTOFORMAT ) .................................................................................................................... 132
การจัดรู ปแบบตามเงื่อนไข (CONDITIONAL FORMAT ) ............................................................................................................ 133
การหายอดรวมอัตโนมัติดว้ ย SUBTOTAL ................................................................................................................................. 136
การเขียนโปรแกรมหายอดรวมด้วยตนเอง.................................................................................................................................... 138
การแบ่งหน้า (PAGEBREAK)............................................................................................................................................... 140
การจัดหน้าก่อนพิมพ์ (PAGESETUP) ...................................................................................................................................... 140
กาหนดพื น้ ที่ พิมพ์ (PrintArea) ....................................................................................................................................... 141
กาหนดให้ พิมพ์ หัวแถวหรื อคอลัมน์ ทุกหน้ า (PrintTitle) .......................................................................................................... 141
กาหนดส่ วนหั วและส่ วนท้ ายหน้ า (Header และ Footer)........................................................................................................ 141
การใส่ รูปภาพในส่ วนหัวและท้ ายหน้ า (Header/Footer Picture) ........................................................................................... 143
การสั่งพิมพ์ในเอ็กเซล ........................................................................................................................................................... 143
บทที่ 6 เขียนโปรแกรมสร้ าง PIVOTTABLE ในเอ็กเซล ................................................................................................................ 145
รายงานแบบ PIVOTTABLE ................................................................................................................................................. 145
ตารางข้อมูลของ PIVOTTABLE ............................................................................................................................................ 146

สงวนลิขสิ ทธิ์ตามพระราชบัญญัติลิขสิ ทธิ์ พ.ศ. 2537 โดย อานาจ นุตะมาน 6


พัฒนาแอปพลิเคชันด้ วย VB6 กับ Excel สารบัญ
ออบเจ็กต์ PIVOTTABLE .................................................................................................................................................... 146
สร้าง PIVOTTABLE แบบ WIZARD ..................................................................................................................................... 146
สร้าง PIVOTTABLE จาก PIVOTCACHE ............................................................................................................................... 149
สร้างรายงานแบบไม่ใช้ PIVOTTABLE .................................................................................................................................... 150
สร้าง PIVOTTABLE จากฐานข้อมูล ........................................................................................................................................ 152
เชื่ อมต่ อฐานข้ อมูลด้ วย PivotCache .................................................................................................................................. 152
เชื่ อมต่ อฐานข้ อมูลด้ วย ADO ............................................................................................................................................ 153
สร้าง PIVOTTABLE จากเวิร์กบุ๊คแบบฐานข้อมูล......................................................................................................................... 154
สร้างคิวรี แบบ PIVOTTABLE (CROSSTAB QUERY) ............................................................................................................... 155
สร้างกราฟจาก PIVOTTABLE (PIVOTCHART) ...................................................................................................................... 156
สร้าง PIVOTTABLE แบบหลายชั้น......................................................................................................................................... 159
สร้าง PIVOTTABLE แบบตารางเวลา ...................................................................................................................................... 161
แสดง SUBTOTAL และ GRANDTOTAL ............................................................................................................................... 163
กาหนดรู ปแบบรายงาน (FORMAT)......................................................................................................................................... 165
แสดง PIVOTTABLE ในฟอร์มของวิชวลเบสิ ก ........................................................................................................................... 166
บทที่ 7 เขียนโปรแกรมสร้ างกราฟในเอ็กเซล ..................................................................................................................................... 169
กราฟในเอ็กเซล (CHART) ................................................................................................................................................... 169
ออบเจ็กต์กราฟของเอ็กเซล ..................................................................................................................................................... 169
กราฟแบบชี ต (Chart) .................................................................................................................................................... 170
กราฟบนชี ต (ChartObject)........................................................................................................................................... 170
ปรั บเปลี่ยนตาแหน่ งของกราฟ (Location) ........................................................................................................................... 170
วิธีสร้างกราฟแบบ WIZARD ................................................................................................................................................. 171
วิธีสร้างกราฟแบบกาหนดเอง .................................................................................................................................................. 171
กาหนดชนิ ดของกราฟ (Chart Type) ................................................................................................................................ 171
กาหนดช่ วงข้ อมูลของกราฟ (Chart Source Data) .............................................................................................................. 172
กาหนดรู ปแบบของกราฟ (Chart Option).......................................................................................................................... 173
กราฟหลายชุดข้อมูล (DATA SERIES)..................................................................................................................................... 177
ออบเจ็กต์ ชุดข้ อมูล (Series) ............................................................................................................................................. 178
สร้ างกราฟจากอาเรย์ (Array) ........................................................................................................................................... 179
กราฟแบบ 3-D .................................................................................................................................................................. 182
วิธีสั่งพิมพ์กราฟของเอ็กเซล.................................................................................................................................................... 182
แสดงรายงานจากฐานข้อมูลเป็ นกราฟในเอ็กเซล ............................................................................................................................ 183
เข้าใจเรื่ องคลาสของกราฟในเอ็กเซล .......................................................................................................................................... 184
กราฟของเอ็กเซลกับ MSGRAPH ........................................................................................................................................... 185
แสดงกราฟของเอ็กเซลในฟอร์มของวิชวลเบสิ ก ............................................................................................................................ 185
บทที่ 8 เขียนโปรแกรมจัดการรู ปภาพในเอ็กเซล................................................................................................................................. 189
รู ปภาพกับเอ็กเซล................................................................................................................................................................ 189
แสดงรู ปภาพในเวิร์กชีต......................................................................................................................................................... 189
แสดงรู ปภาพในเซลล์............................................................................................................................................................ 190
ลบรู ปภาพในเอ็กเซล ............................................................................................................................................................ 192
PICTUREBOX และ IMAGE CONTROL ............................................................................................................................... 193
นารู ปภาพจากเอ็กเซลแสดงในฟอร์ม.......................................................................................................................................... 195
นารู ปกราฟจากเอ็กเซลแสดงในฟอร์ม ........................................................................................................................................ 196
บันทึกรู ปภาพที่แสดงในฟอร์มเป็ นไฟล์ ...................................................................................................................................... 199

สงวนลิขสิ ทธิ์ตามพระราชบัญญัติลิขสิ ทธิ์ พ.ศ. 2537 โดย อานาจ นุตะมาน 7


พัฒนาแอปพลิเคชันด้ วย VB6 กับ Excel สารบัญ
บันทึกรู ปภาพจากเอ็กเซลเป็ นไฟล์ ............................................................................................................................................ 199
แสดงรู ปภาพในเอ็กเซลจาก PICTUREBOX ............................................................................................................................... 199
แสดงรู ปภาพในเอ็กเซลจากฐานข้อมูล ........................................................................................................................................ 200
แสดงรู ปภาพในเอ็กเซลจากไฟล์ RESOURCE ............................................................................................................................. 201
บทที่ 9 เขียนโปรแกรมควบคุมเหตุการณ์ ของเอ็กเซล ........................................................................................................................... 204
เริ่ มต้นด้วย WITHEVENTS .................................................................................................................................................. 204
ทาความเข้าใจกับ ENABLEEVENTS ...................................................................................................................................... 204
MSGBOX กับเอ็กเซล ......................................................................................................................................................... 205
เขียนคาสั่งควบคุมเหตุการณ์ของเอ็กเซลในฟอร์ ม........................................................................................................................... 205
ตัวอย่ าง อนุญาตให้ บันทึกไฟล์ หรื อพิมพ์ เวิร์กบุ๊คหรื อไม่ (1)....................................................................................................... 207
ตัวอย่ าง ป้ อนข้ อความในช่ วงเซลล์ เป็ นอักษรตัวใหญ่ /เล็ก (1) ...................................................................................................... 208
สร้างคลาสควบคุมเหตุการณ์ของเอ็กเซล ..................................................................................................................................... 210
เหตุการณ์ ของคลาส (Class Events) ................................................................................................................................. 211
สร้ างออบเจ็กต์ จากคลาสโมดูล ............................................................................................................................................ 212
สร้ าง Method ให้ กับออบเจ็กต์ ......................................................................................................................................... 212
สร้ าง Property ให้ กับออบเจ็กต์ ....................................................................................................................................... 212
สร้ าง Event ให้ กับออบเจ็กต์ ............................................................................................................................................ 213
ตัวอย่ าง อนุญาตให้ บันทึกไฟล์ หรื อพิมพ์ เวิร์กบุ๊คหรื อไม่ (2)....................................................................................................... 214
ตัวอย่ าง ป้ อนข้ อความในช่ วงเซลล์ เป็ นอักษรตัวใหญ่ /เล็ก (2) ...................................................................................................... 215
สร้างคลาสเป็ น ACTIVEX DLL ........................................................................................................................................... 217
ตัวอย่ าง อนุญาตให้ บันทึกไฟล์ หรื อพิมพ์ เวิร์กบุ๊คหรื อไม่ (3)....................................................................................................... 218
ตัวอย่ าง ป้ อนข้ อความในช่ วงเซลล์ เป็ นอักษรตัวใหญ่ /เล็ก (3) ...................................................................................................... 220
โปรแกรมค้นหา ACTIVEX DLL จากไหน .............................................................................................................................. 220
ติดตั้ง ACTIVEX DLL บนเครื่ องอื่น ...................................................................................................................................... 221
บทที่ 10 สร้ างไฟล์ ADD-IN สาหรับเอ็กเซล ................................................................................................................................. 223
ADD-IN คืออะไร .............................................................................................................................................................. 223
ประเภท ADD-IN ในเอ็กเซล ................................................................................................................................................. 223
Excel Add-In ............................................................................................................................................................ 223
Automation Add-In .................................................................................................................................................. 223
COM Add-In ............................................................................................................................................................ 224
ข้อแตกต่างระหว่าง VBA กับ VB ADD-IN ............................................................................................................................. 224
วิธีการสร้าง AUTOMATION ADD-IN ................................................................................................................................... 224
สร้ าง Automation แบบ ActiveX DLL ........................................................................................................................... 225
สร้ าง Automation โดยใช้ Add-In Designer ................................................................................................................... 226
วิธีใช้งาน AUTOMATION ADD-IN ในเวิร์กชีตของเอ็กเซล .......................................................................................................... 227
วิธีใช้งาน AUTOMATION ADD-IN กับ VBA ของเอ็กเซล .......................................................................................................... 229
วิธีการสร้าง COM ADD-IN ................................................................................................................................................ 229
สร้ าง COM Add-In โดยใช้ Add-In Designer ................................................................................................................ 230
สร้ าง COM Add-In โดยใช้ Implements......................................................................................................................... 232
ติดตั้ง COM ADD-IN ในส่ วนผูใ้ ช้งานเอ็กเซล ........................................................................................................................... 233
เอ็กเซลอ่านรายชื่อ COM ADD-IN จากไหน ? ........................................................................................................................... 235
เอ็กเซลค้นหาไฟล์ COM ADD-IN จากไหน ? ........................................................................................................................... 235
ตัวอย่าง การประยุกต์ใช้งาน ADD-IN ....................................................................................................................................... 236
วิธีใช้งาน COM ADD-IN กับ VBA ของเอ็กเซล ....................................................................................................................... 243
บทที่ 11 การประยุกต์ ใช้ งานออฟฟิ ศเว็บคอมโพเนนต์ ......................................................................................................................... 245

สงวนลิขสิ ทธิ์ตามพระราชบัญญัติลิขสิ ทธิ์ พ.ศ. 2537 โดย อานาจ นุตะมาน 8


พัฒนาแอปพลิเคชันด้ วย VB6 กับ Excel สารบัญ
รู ้จกั ออฟฟิ ศเว็บคอมโพเนนต์ .................................................................................................................................................. 245
ส่ วนประกอบของเว็บคอมโพเนนต์ ........................................................................................................................................... 245
การประยุกต์ใช้งานกับวินโดวส์แอปพลิเคชัน................................................................................................................................ 246
วิธีแสดงคอนโทรลบนฟอร์ ม .............................................................................................................................................. 246
ตัวอย่ างการใช้ งาน Spreadsheet ...................................................................................................................................... 247
ตัวอย่ างการใช้ งาน ChartSpace ....................................................................................................................................... 249
ตัวอย่ างการใช้ งาน PivotTable ........................................................................................................................................ 251
การประยุกต์ใช้งานกับเว็บแอปพลิเคชัน ...................................................................................................................................... 254
วิธีแสดงคอนโทรลบนเว็บเพจ ............................................................................................................................................ 254
ตัวอย่ างการใช้ งาน Spreadsheet ...................................................................................................................................... 256
ตัวอย่ างการใช้ งาน ChartSpace ....................................................................................................................................... 259
ตัวอย่ างการใช้ งาน PivotTable ........................................................................................................................................ 262
บทที่ 12 การประยุกต์ ใช้ งานเอ็กเซลกับเว็บแอปพลิเคชัน ...................................................................................................................... 267
เว็บแอปพลิเคชันกับเอ็กเซล .................................................................................................................................................... 267
ภาษา ASP กับเอ็กเซล ......................................................................................................................................................... 267
การแสดงข้อความในเว็บเพจเป็ นเอ็กเซล ..................................................................................................................................... 268
การสร้างออบเจ็กต์แอปพลิเคชันของเอ็กเซล ................................................................................................................................. 269
การคอนฟิ ก IIS กับเอ็กเซล .................................................................................................................................................... 269
การเขียนคาสั่งจัดการเวิร์กบุ๊คของเอ็กเซล .................................................................................................................................... 271
การใช้งานไฟล์เวิร์กบุ๊คฝั่งเซิ ร์ฟเวอร์ .......................................................................................................................................... 272
การใช้งานไฟล์เวิร์กบุ๊คฝั่งไคลเอนต์........................................................................................................................................... 273
การสร้างกราฟบนเว็บเพจด้วยเอ็กเซล......................................................................................................................................... 274
การสร้าง PIVOTTABLE บนเว็บเพจด้วยเอ็กเซล ......................................................................................................................... 276
การประยุกต์ใช้งาน AJAX กับเอ็กเซล ...................................................................................................................................... 278
ภาคผนวก.............................................................................................................................................................................. 281
แปลงไฟล์เวิร์กบุ๊คเป็ น RESOURCE FILE ................................................................................................................................ 282
เขียนโปรแกรมกับเอ็กเซลด้วย PHP ......................................................................................................................................... 285
เขียนโปรแกรมกับเอ็กเซลด้วย VB.NET .................................................................................................................................. 289

สงวนลิขสิ ทธิ์ตามพระราชบัญญัติลิขสิ ทธิ์ พ.ศ. 2537 โดย อานาจ นุตะมาน 9


พัฒนาแอปพลิเคชันด้ วย VB6 กับ Excel

บทนา

ปั จจุบนั ไมโครซอฟต์เอ็กเซล่ือเป็ นโปรแกรมที่มีผใู ้ ช้งานกันแพร่ หลายทัว่ โลก นักพัฒนาโปรแกรมอาจต้องเจอคา่ามจาก


ผูใ้ ช้งาน เช่น พิมพ์รายงานในรู ปแบบเอ็กเซลได้หรื อไม่ ส่ งออกหรื อนาเข้าข้อมูลจากเอ็กเซลได้หรื อไม่ เป็ นต้น หลายคนมักสงสัยว่า
ทาไมผูใ้ ช้งานต้องการให้แสดงผลในรู ปแบบเอ็กเซล หากใครมีประสบการณ์ในการทางานจริ งแล้วคงหลีกเลี่ยงคา่ามเหล่านี้ จาก
ผูใ้ ช้งานไม่พน้ ตราบใดที่โปรแกรมของเราไม่มีความสามาร่ในการทางานร่ วมกับเอ็กเซล

ไมโครซอฟต์ออกแบบผลิตภัณฑ์ในชุด ไมโครซอฟต์ออฟฟิ ศ (Microsoft


Office) มิใช่เพียงให้ใช้งานกับเฉพาะผูใ้ ช้งานทัว่ ไปเท่านั้น แต่ยงั เปิ ดโอกาส
ให้นกั พัฒนาโปรแกรมเพิ่มเติมขีดความสามาร่การทางานของโปรแกรมใน
ชุดออฟฟิ ศได้ดว้ ย สาหรับเครื่ องมือหลักที่ใช้ในการพัฒนากับไมโครซอฟต์
ออฟฟิ ศ คื อ VBA (Visual Basic for Applications) ที่ สามาร่ใช้งานได้
กับทุ กโปรแกรม อาทิ Excel, Word, Powerpoint และ Outlook เนื่ องจาก
VBA ใช้โครงสร้ างภาษาวิชวลเบสิ ก ดังนั้น จึ งสามาร่ใช้โปรแกรมวิชวล
เบสิ ก VB ในชุดวิชวลสตูดิโอ (Visual Studio) เพื่อพัฒนาโปรแกรมของเราให้ทางานร่ วมกับผลิตภัณฑ์ในชุดไมโครซอฟต์ออฟฟิ ศ
ดังกล่าวได้เช่นกัน อย่างไรก็ตาม เนื้ อหาในหนังสื อเล่มนี้ จะอธิ บายการใช้งาน VB กับไมโครซอฟต์เอ็กเซลเท่านั้น คาว่า เอ็กเซล ใน
ความหมายทัว่ ไปคือ โปรแกรมประเภทตารางคานวณ แต่ความหมายในทางโปรแกรมหมาย่ึง แอปพลิเคชันออบเจ็กต์ (Application
Object) กล่ า วคื อ เอ็ ก เซลมี คุ ณ สมบั ติ เป็ นคอมโพเนนต์ ใ นลัก ษณะ
ActiveX ดังนั้นจึ งสามาร่เขี ยนโปรแกรมติ ดต่อกับเอ็กเซลได้โดยตรง
พูดให้ง่ายคือ การเขียนโปรแกรมกับเอ็กเซลเป็ นลักษณะการเรี ยกใช้งาน
คอมโพเน็นต์ในตัวโปรแกรมของเอ็กเซล (EXE) แน่นอนว่าต้องเข้าใจ
หลักการทางานของเอ็กเซลในแบบผูใ้ ช้งานทัว่ ไปด้วยเช่นกัน ่ึงแม้วา่ จะ
เขียนโปรแกรมด้วยวิชวลเบสิ กได้ก็ตาม

เนื้ อหาในหนังสื อเล่ม นี้ จะอธิ บ ายให้เข้าใจหลักวิธีการเขี ยน


โปรแกรมด้วยวิช วลเบสิ ก กับ ไมโครซอฟต์เอ็กเซลในเชิ งปฎิ บัติด้วย
โปรแกรมตัวอย่างที่ส้ นั กระชับตรงประเด็น เพื่อให้สามาร่นาไปใช้งาน
จริ งได้ทนั ที สาหรับ เนื้ อหาในหนังสื อเล่มนี้ ผูเ้ ขียนจะอธิ บายด้วย Classic VB หรื อ VB6 (Visual Basic เวอร์ ชนั 6) ในชุ ดวิชวล
สตูดิโอ (Visual Studio) อย่างไรก็ตาม เนื้ อหาทั้งหมดเป็ นเรื่ องการประยุกต์ใช้งานเป็ นหลัก ดังนั้นคุณผูอ้ ่านควรต้องมีพ้นื ฐานใช้งาน
วิชวลเบสิ กและเอ็กเซลมาก่อน

สงวนลิขสิ ทธิ์ตามพระราชบัญญัติลิขสิ ทธิ์ พ.ศ. 2537 โดย อานาจ นุตะมาน 10


พัฒนาแอปพลิเคชันด้ วย VB6 กับ Excel

บทที่ 1 พืน้ ฐานเอ็กเซลสาหรับโปรแกรมเมอร์


เนื้ อหาในบทนี้ เราจะได้ เรี ย นรู ้ พ้ื น ฐานในสิ่ ง ที่ ค วรต้อ งรู ้ ไ ว้ก่ อ นที่ จ ะเริ่ มต้น พัฒ นาโปรแกรมด้ว ยวิ ช วลเบสิ ก กับ
ไมโครซอฟต์เอ็กเซล การเขียนโปรแกรมกับเอ็กเซลเป็ นการประยุกต์ใช้งานเอ็กเซลให้เกิดประโยชน์สูงสุด ดังนั้นคุณผูอ้ ่านต้องเขียน
โปรแกรมภาษาวิชวลเบสิ กเป็ นมาก่อนและก็ควรต้องใช้งานเอ็กเซลเป็ นมาก่อนด้วยเช่นกัน เพียงแต่วา่ มุมมองของคนเขียนโปรแกรม
กับผูใ้ ช้งานทัว่ ไปจะมองภาพของเอ็กเซลแตกต่างกัน

ข้ อแตกต่ างระหว่าง VB กับ VBA


VBA (Visual Basic for Applications) ในเอ็กเซลเก็ บ โปรแกรมหรื อ ชุ ด ค าสั่งไว้ในไฟล์เวิร์ก บุ๊ ค ของเอ็ก เซล (xls หรื อ
้ งเรี ย กใช้โ ปรแกรมที่ เขี ยนไว้ผ่านเอ็ก เซล พู ด ให้ง่ายหน่ อ ยก็ คื อ VBA เป็ นภาษาสคริ ป ต์ที่ ใช้
xla) ดัง นั้ น เวลาน าไปใช้ง านก็ ต อ
โครงสร้างภาษาวิชวลเบสิ กเช่นกัน เพียงแต่ตวั โปรแกรมคือ ซอร์ สโค้ด (Source Code) ที่ยงั ไม่ได้คอมไพล์ ลักษณะเหมือนกับภาษา
ที่ใช้พฒั นาเว็บแอปพลิเคชัน เช่น Perl, PHP, ASP เป็ นลักษณะ Interpreter หมาย่ึง ู่กแปลคาสัง่ ตอนรันโปรแกรม
VB (Visual Basic) ในชุ ดสตูดิโอ (Visual Studio) เป็ นลักษณะคอมไพเลอร์ (Compiler) ดังนั้น โปรแกรมที่ พ ฒ
ั นาด้วย
VB จึ งู่กคอมไพล์ให้ออกมาเป็ นชุดคาสั่งในรู ปแบบที่ เป็ นภาษาเครื่ อง (Native Machine Code) เก็บไว้ในไฟล์นามสกุล exe หรื อ
dll โดยหลักการแล้วย่อมทางานได้เร็ วกว่า เพราะไม่ตอ
้ งเสี ยเวลาแปลคาสัง่ อีกแล้ว

คลาสออบเจ็กต์ ของเอ็กเซล (Excel Object Class)


การเขี ยนโปรแกรมวิชวลเบสิ กเพื่อ ติ ดต่อกับ คอมโพเนนต์ของเอ็ก เซลในลักษณะที่ เรี ยกกันโดยทั่วไปว่า Automation
หมาย่ึง โปรแกรมเอ็กเซลทาหน้าที่เป็ นผูใ้ ห้บริ การ (Server) คอมโพเนนต์ที่เก็บอยูใ่ นไฟล์โปรแกรม (Excel.EXE) และโปรแกรม
ที่พฒั นาด้วยวิชวลเบสิ กเป็ นผูข้ อใช้บริ การ (Client) พูดให้ง่ายคือ การสร้างออบเจ็กต์จากคลาสของเอ็กเซลในโปรแกรมวิชวลเบสิ ก
นัน่ ล่ะ โดยที่สามาร่ทาได้ดงั นี้
คลาส ออบเจ็กต์ คาอธิบาย
Excel.Application Application
Excel.Chart Workbook 1 Worksheet + 1 Chart
Excel.Sheet Workbook 1 Worksheet

สงวนลิขสิ ทธิ์ตามพระราชบัญญัติลิขสิ ทธิ์ พ.ศ. 2537 โดย อานาจ นุตะมาน 11


พัฒนาแอปพลิเคชันด้ วย VB6 กับ Excel บทที่ 1 พืน้ ฐานเอ็กเซลสาหรับโปรแกรมเมอร์
สาหรั บ รายชื่ อของคลาสข้างต้น คือ ProgID (Programmatic Identifier) ู่กจัด เก็บ อยู่ใน Windows Registry ภายใต้คีย ์
HKEY_CLASSES_ROOT

ตัวอย่ าง สร้างออบเจ็กต์จากคลาสแอปพลิเคชัน (Excel.Application)


Dim xlApp As Application
Dim wb As Workbook
Dim wk As Worksheet
Dim ch As Chart

Set xlApp = CreateObject("Excel.Application")


Set wb = xlApp.Workbooks.Add
Set wk = wb.ActiveSheet
Set ch = wb.Charts.Add

โดยทัว่ ไปแล้วมักจะสร้างออบเจ็กต์จากคลาสของ Application ในการอ้างอิง่ึงแอปพลิเคชันเอ็กเซล เนื่ องจากครอบคลุม


คอมโพเนนต์ทุกตัวของเอ็กเซลทั้งหมด อาทิ เวิร์กบุ๊ค เวิร์กชีต กราฟ เซลล์ ฯลฯ อย่างไรก็ตามสามาร่สร้างออบเจ็กต์จากคลาสของ
Sheet และคลาสของ Chart โดยตรงเลยก็ได้ แต่ออบเจ็กต์ที่ได้จะเป็ นเวิร์กบุ๊ค (Workbook) ที่ประกอบด้วยเวิร์กชีตหรื อกราฟ ดังนั้น
เวลาสร้างออบเจ็กต์จากคลาสดังกล่าวก็ให้ระมัดระวังตรงจุดนี้ดว้ ย

ตัวอย่ าง สร้างออบเจ็กต์จากคลาสของเอ็กเซลกราฟ (Excel.Chart)


Dim xlChart As Workbook
Dim wk As Worksheet
Dim ch As Chart

Set xlChart = CreateObject("Excel.Chart")


Set wk = xlChart.Worksheets(1)
Set ch = xlChart.ActiveChart

ตัวอย่ าง สร้างออบเจ็กต์จากคลาสของเอ็กเซลชีต (Excel.Sheet)


Dim xlSheet As Workbook
Dim wk As Worksheet
Dim ch As Chart

Set xlSheet = CreateObject("Excel.Sheet")


Set wk = xlSheet.ActiveSheet
Set ch = xlSheet.Charts.Add

สงวนลิขสิ ทธิ์ตามพระราชบัญญัติลิขสิ ทธิ์ พ.ศ. 2537 โดย อานาจ นุตะมาน 12


พัฒนาแอปพลิเคชันด้ วย VB6 กับ Excel บทที่ 1 พืน้ ฐานเอ็กเซลสาหรับโปรแกรมเมอร์

คอนโทรลของเอ็กเซล (Excel Object Control)


คอนโทรลของเอ็ ก เซลที่ น ามาใส่ ใ นฟอร์ ม ของวิ ช วลเบสิ ก ในโปรเจ็ ก ต์ คื อ คอมโพเนนต์ Sheet และ Chart จาก
โปรแกรมเอ็กเซล (Excel.EXE) ให้เลือกเมนู Project > Components ในวิชวลเบสิ ก เลือกแท็บ Insertable Objects

จะเห็ นรู ปไอคอนของ Sheet และ Chart ในทูลบ็อกซ์ของวิชวลเบสิ ก หลังจากนั้นสามาร่วางคอนโทรลใส่ ในฟอร์ มได้
โดยตรง สาหรับวิธีติดต่อเอ็กเซลโดยใช้คอนโทรล OLE นั้นให้ดูตวั อย่างในบท่ัดไป

ตัวอย่ าง แสดงตารางข้อมูลและกราฟในฟอร์มจากคอนโทรลของเอ็กเซล
1. สร้างฟอร์มใหม่ในโปรเจ็กต์วชิ วลเบสิ ก
2. ใส่คอนโทรล Sheet และ Chart จากทูลบ็อกซ์ลงในฟอร์ม
3. เขียนโปรแกรมคาสัง่ ต่างๆ ในฟอร์ม ดังนี้
Private Sub Form_Load()

With Sheet1.object.ActiveSheet
.Range("A1") = 1
.Range("A2") = 2
.Range("A3").Formula = "=A1+A2"
End With

With Chart1.object
With .WorkSheets(1)
.Range("A1:B1") = Array("QTR", "AMT")
.Range("A2:B2") = Array(1, 15)
.Range("A3:B3") = Array(2, 20)
.Range("A4:B4") = Array(3, 18)
.Range("A5:B5") = Array(4, 23)
End With
With .ActiveChart
.SetSourceData .Parent.WorkSheets(1).Range("B2:B5")
.PlotBy = 2
.ChartType = 5
End With
End With

End Sub

จากตั ว อย่ า งข้า งต้ น ให้ สั ง เกตว่ า Sheet1.object และ Chart1.object คื อ ออบเจ็ ก ต์ เวิ ร์ ก บุ๊ ค (Workbook) เพราะว่ า
คอนโทรล Sheet1 และ Chart1 สร้างมาจากคลาส Excel.Sheet และ Excel.Chart ตามลาดับนัน่ เอง

สงวนลิขสิ ทธิ์ตามพระราชบัญญัติลิขสิ ทธิ์ พ.ศ. 2537 โดย อานาจ นุตะมาน 13


พัฒนาแอปพลิเคชันด้ วย VB6 กับ Excel บทที่ 1 พืน้ ฐานเอ็กเซลสาหรับโปรแกรมเมอร์

ออบเจ็กต์ ไลบรารีของเอ็กเซล (Excel Object Library)


หากต้องการให้วชิ วลเบสิ กรู ้จกั ออบเจ็กต์ของเอ็กเซล กล่าวคือ พิมพ์จุด . แสดง Property และ Method ของออบเจ็กต์มาให้
อัตโนมัติขณะที่เขียนคาสัง่ ในโปรเจ็กต์ เพื่อช่วยในการเขียนประโยคคาสัง่ ในโปรแกรมสะดวกขึ้น เช่น

1. เลือกเมนู Project > Reference ในโปรเจ็กต์ของวิชวลเบสิ ก


2. เลือกรายการ Microsoft Excel Object Library (Excel.EXE)

วิธีการข้างต้นเรี ยกว่า Early Binding โดยวิชวลเบสิ กจะผูก PEM (Property, Event, Method) กับออบเจ็กต์ของเอ็กเซล
ในขณะออกแบบโปรเจ็กต์ (Design Time) วิธีดงั กล่าวนี้ จะทาให้สามาร่เขียนคาสั่งควบคุมเหตุการณ์ของออบเจ็กต์ในเอ็กเซลได้
สาหรับรายละเอียดเรื่ องนี้ผเู ้ ขียนจะอธิบายเพิ่มเติมในบท่ัดไป

ออบเจ็กต์ เบราเซอร์ กบั เอ็กเซล (Object Browser)


หากกาหนดออบเจ็กต์ไลบรารี ของเอ็กเซลไว้ในโปรเจ็กต์ของวิชวลเบสิ กไว้แล้ว เราสามาร่ค้นหาดูรายละเอียดของเอ็กเซล
ได้วา่ ประกอบด้วยสมาชิกในคลาส (Member) อะไรบ้าง ชื่ออะไร มี PEM อะไรบ้าง มีค่าคงที่ Enum อะไรบ้าง เป็ นต้น ให้เลือกเมนู
View > Object Browser หรื อกดปุ่ มฟั งก์ชน
ั คีย ์ F2 หรื อคลิกปุ่ ม Object Browser ในทูลบาร์ Standard ของโปรเจ็กต์วิชวลเบสิ ก
หลังจากนั้นให้เลือกรายการ Excel ในตัวเลือกช่องไลบรารี ดังรู ป

สงวนลิขสิ ทธิ์ตามพระราชบัญญัติลิขสิ ทธิ์ พ.ศ. 2537 โดย อานาจ นุตะมาน 14


พัฒนาแอปพลิเคชันด้ วย VB6 กับ Excel บทที่ 1 พืน้ ฐานเอ็กเซลสาหรับโปรแกรมเมอร์

ค่าคงที่ของเอ็กเซล (Excel Constants)


ชื่ อ ค่ า คงที่ ข องเอ็ ก เซล (Build-In Constants) ที่ ใ ช้ใ นการเขี ย นโปรแกรมจะขึ้ น ต้น ด้ว ยค าว่า xl เช่ น xlContinuous,
xlDouble เป็ นต้น ให้เปิ ดเอ็กเซล กดปุ่ ม Alt+F11 เข้าโหมด VBA กดปุ่ ม F1 (Help) ค้นหาคาว่า Excel Constants

หากกาหนดออบเจ็กต์ไลบรารี ของเอ็กเซลในโปรเจ็กต์วชิ วลเบสิ กก็สามาร่ดูค่าคงที่ของเอ็กเซลในโปรเจ็กต์วิชวลเบสิ กได้


จาก Object Browser ซึ่งจะแสดงชื่อค่าคงที่ Enum ในสมาชิกของคลาสเอ็กเซลลักษณะดังรู ป

สงวนลิขสิ ทธิ์ตามพระราชบัญญัติลิขสิ ทธิ์ พ.ศ. 2537 โดย อานาจ นุตะมาน 15


พัฒนาแอปพลิเคชันด้ วย VB6 กับ Excel บทที่ 1 พืน้ ฐานเอ็กเซลสาหรับโปรแกรมเมอร์
คนที่เขียนโปรแกรมคาสั่งกับเอ็กเซลแบบ Late Binding ต้องแปลงค่าคงที่ Enum ให้เป็ นค่าตัวเลขโดยตรง อย่างไรก็ตาม
สามาร่ดู โ ครงสร้ า งของออบเจ็ ก ต์ ไ ลบรารี ต่ า งๆ ท านองเดี ย วกั บ Object Browser ได้ โ ดยการใช้ TypeLib Information
(tlbinf32.dll) ที่ มี อยู่ในชุ ด Visual Studio 6.0 จะช่ วยให้ สามาร่เขี ยนโปรแกรมแสดงค่ าคงที่ จ ากออบเจ็ก ต์ไลบรารี ข องเอ็กเซล
(Excel.EXE) ในรู ปแบบที่ตอ ้ งการ

ตัวอย่ าง แสดงค่าคงที่ต่างๆ (Built-In Constants) ของเอ็กเซลด้วย VBA

1. เปิ ดโปรแกรมเอ็กเซล เข้าโหมด VBA (ปุ่ ม Alt+F11)


2. เพิ่มโมดูลใหม่ เขียนคาสัง่ ต่างๆ ดังนี้
Sub XLConstants()

i = 1
With CreateObject("TLI.TypeLibInfo")
.ContainingFile = Application.Path & "\" & "Excel.exe"
For Each r In .Constants
Cells(i, 1) = r.Name
For Each mbr In r.Members
Cells(i, 2) = mbr.Name
Cells(i, 3) = mbr.Value
i = i + 1
Next mbr
Next r
End With

End Sub

3. กดปุ่ ม F5 ดูผลลัพธ์ในเวิร์กชีตของเอ็กเซล

หากต้องการเขี ยนโปรแกรมค าสั่งให้ ง่ายขึ้ น โดยการพิ ม พ์ . แสดง Property และ Method ของออบเจ็ กต์ Typelib ให้ ระบุ
References ในโปรเจ็กต์ ดังนี้

1. เลือกเมนู Tools > References…


2. คลิกเลือกรายการ Typelib Information (ไฟล์ TLBINF32.DLL)

สงวนลิขสิ ทธิ์ตามพระราชบัญญัติลิขสิ ทธิ์ พ.ศ. 2537 โดย อานาจ นุตะมาน 16


พัฒนาแอปพลิเคชันด้ วย VB6 กับ Excel บทที่ 1 พืน้ ฐานเอ็กเซลสาหรับโปรแกรมเมอร์
เวลาเขียนโปรแกรมให้สร้างตัวแปรออบเจ็กต์ไว้ใช้สาหรับอ้างอิง เช่น
Dim oTLI As TypeLibInfo

Set oTLI = TypeLibInfoFromFile("Excel.exe")


For Each r In oTLI.Constants
...

- หรื อ -

Dim oTLI As New TypeLibInfo

oTLI.ContainingFile = "Excel.exe"
For Each r In oTLI.Constants
...

โปรเจ็กต์ตวั อย่างข้างต้นอยูใ่ นแผ่นซีดี 01 - Excel\xlconstants.xls

โครงสร้ างออบเจ็กต์ ของเอ็กเซล (Excel Object Model)


ให้เข้าโปรแกรมเอ็กเซลแล้วกดปุ่ ม Alt+F11 เพื่อเข้าโหมด VBA กดปุ่ ม F1 (Help) ค้นหาคาว่า Excel Object Model ให้
ลองสังเกตตรงจุดเริ่ มต้นของโครงสร้างจะเห็ นคาว่า Application หมาย่ึง ออบเจ็กต์ที่สร้างจากคลาส Excel.Application นั่นเอง
เพราะว่าความหมายของเอ็กเซลในการเขียนโปรแกรมคาสัง่ คือ ออบเจ็กต์แอปพลิเคชัน

ส าหรั บ โครงสร้ า งออบเจ็ ก ต์ ข องเอ็ ก เซลขั้น พื้ น ฐานที่ ค วรต้อ งเริ่ ม ต้น ศึ ก ษาและใช้ง านให้ ค ล่ อ งจะประกอบด้ว ย
Application, Workbook, Worksheet และ Range ดังนี้

สงวนลิขสิ ทธิ์ตามพระราชบัญญัติลิขสิ ทธิ์ พ.ศ. 2537 โดย อานาจ นุตะมาน 17

You might also like