วันเสาร์ที่ 26 มีนาคม พ.ศ. 2559

#1 VBA คืออะไร อะไรคือ VBA


VBA คืออะไร

สวัสดีครับ วันนี้ผมจะมาแนะนำเกี่ยวกับ ภาษาง่ายๆ ที่เขียนไม่ยากแต่มีประโยชน์กับชีวิตการทำงานในออฟฟิศเป็นอย่างสูงนะครับ ภาษาที่ผมจะขอแนะนำวันนี้ก็คือ ภาษา VBA นั้นเองงงง.....


VBA มีชื่อเต็มว่า Visual Basic for Application

ถือกำเนิดมากจากการเอาภาษา Visual Basic มาใช้เพื่อควบคุม Application หรือ โปรแกรมประยุกต์อื่นๆ เผื่อที่จะสามารถทำงานได้ตามที่เราสั่งได้นะครับ

โดยความสามารถหลักๆของ VBA นั้นทำให้ เราสามารถสร้าง function ได้เอง (UDFs - User Define Functions) ช่วยในการ automated งานต่างๆ อีกทั้งเราสามารถไปใช้ Windows API และ function พื้นฐานอย่างอื่นๆได้ ผ่านทาง DDLs (Dynamic-link libraries) นั่นคือสาเหตุที่ทำให้ VBA สามารถทำงานเจ๋งๆได้หลายๆอย่างเลยทีเดียว (รวมไปถึงสร้างไวรัสด้วย .....อะจึ๊ย....)

ถึงแม้ว่า VBA เนี่ยมีความสามารถพิเศษหลายๆอย่าง แถมยังมีชื่อมาจาก Visual Basic ซึ่งเป็น นึงในภาษาที่ Microsoft ปลุกปั้นมานมนานและมีบริษัทใหญ่ๆหลายบริษัทใช้ แต่ VBA นั้นจะเน้นไปทาง run ได้เฉพาะใน host application มากกว่าการที่จะรันเดี่ยวๆ VBA สามารถใช้งาน ActiveX/COM DLLs ได้ แต่ก็ไม่สามารถสร้างได้แต่ช่วงหลังๆ VBA ก็สร้างให้สามารถ รองรับ Class ที่เป็น Module ได้ก็ตาม

ปัจจุบันนี้ Application ในกลุ่ม Microsoft Office หลายๆตัวได้นำ VBA ไปรวมเป็นที่เรียบร้อยแล้ว แต่ที่เห็นใช้งานกันหลักๆก็ยังคงเป็น Excel กับ Access อยู่ดี


เอ... ควบคุม Application อื่นๆ แปลว่ายังไงนะ?

ลองคิดอย่างนี้ดูครับ เวลา เราจะทำงานอะไรทีนึงเราก็ต้องค่อยๆ click ค่อยๆ พิมพ์ไปที่ละตัวๆใช่ไหมอ่ะครับ เช่น ผมต้องสร้าง report สรุปรายรับรายจ่ายของบริษัท ที่จะต้อง import file เข้ามาเพื่อทำ Pivot แล้วก็ต้องเอาไปทำกราฟต่อเพื่อที่จะนำเสนอผู้บริหาร ในทุกๆเดือน ผมก็ต้องมาผูกสูตรใน excel ใหม่ทุกรอบ ผมขอเรียกวิธีการทำงานอย่างนี้ว่าแบบ manual ละกัน จริงอยู่ว่าการใช้ function ของ excel อาจสามารถตอบโจทย์หลายๆ แต่หลายๆอย่างก็ยังจำเป็นต้องใช้คนเข้าไปคลิกจัดการ

แล้วลองคิดดูสิครับ ถ้าหากว่าเราต้องทำงานซ้ำซาก อย่างนี้ทุกๆเดือนๆ มันจะเสียเวลาขนาดไหน? จะดีกว่าไหมถ้าเราสามารถหาคนมาทำแทนเราได้? แล้วเค้าสามารถทำได้เหมือนเดิมอย่างไม่บกพร่อง?

VBA ก็เลยเกิดมาเผื่อสิ่งนี้ละครับ เราจะได้ไม่ต้องมานั่งทำงานเดิมๆซ้ำไปซ้ำมา โดย เราเขียนcode VBA เนี่ยละ ครั้งเดียวแล้วครั้งต่อๆไปมันก็จะทำงานแทนเราครับ แค่เราต้องรู้ว่าเราต้องสั่งเค้ายังไง แล้วเค้าก็จะทำตามที่เราสั่งอย่างไม่บกพร่อง

โอย ยากอ่ะ ต้องมานั่งเขียน code อีกเขียนไม่เป็นอ่ะ

อย่าเพิ่งอคติกับการเขียน code ครับ การเขียน VBA code ไม่ได้ยากเหมือน VB, JAVA, C# หรอกครับ เพราะว่า Microsoft ได้พัฒนาสิ่งที่เรียกว่า Macro มาพร้อมๆกับ VBA นี้ ซึ่งตัว Macro ตัวนี้มันก็สามารถใช้ในการบันทึกกิจกรรมต่างๆ แล้วแปลงเป็น VBA Code ให้เราได้ซึ่งจะทำให้เราสามารถเขียน Code ได้อย่างไม่อยากเย็นเลยครับ นอกจากนี้รูปแบบภาษาของ VBA ก็ยังค่อนข้างตรงไปตรงมาตาม style VB อีกด้วย

เอะ เดี๋ยวก่อนนะ เมื่อกี้บอกว่า VBA สามารถทำเป็น virus ได้ด้วยหรอ?

ใช่ครับ VBA ที่เราใช้ประโยชน์กับมันก็สามารถเปลี่ยนกลายเป็นไวรัสได้ครับ โดยเรามักจะเรียกไวรัสที่เกิดจาก VBA ว่า Macro virus ถ้าอยากหาข้อมูลเพิ่มเติ่มหา ได้จากในนี้เลย https://en.wikipedia.org/wiki/Macro_virus ดังนั้นการที่เราได้ macro มาสักตัวนึงอย่างลืมดูก่อนนะครับว่าเราได้ macro มาจากแหล่งที่น่าเชื่อถือได้หรือเปล่า ถ้าเราสามารถดู source code ได้ เราก็ควรเสียเวลาอ่านก่อนครับผม

โดยหลักๆแล้วผมจะเน้นการเขียน VBAเพื่อใช้ในงาน Excel และ Access เพราะว่า Excel และ Access นั้นจะเก็บข้อมูลในรูปแบบของตารางข้อมูล หรือ data table( คิดง่ายๆ มันเป็นช่องๆอ่ะครับ) เราเลยสามารถกำหนด ตำแหน่งได้อย่างง่ายดาย


ขอคุณข้อมูลจาก: https://en.wikipedia.org/wiki/Visual_Basic_for_Applications


หากมีคำถามสามารถถามมาได้ใน comment เลยนะครับ

ไม่มีความคิดเห็น:

แสดงความคิดเห็น