โปรแกรมในที่ทำงานหลายคนคงหนีไม่พ้น Excel ครอบจักรวาล แต่มันก็ทำอะไรได้มากกว่าที่คิดนะ

ก่อนอื่น ยังไงก็ต้องขออภัยสำหรับการตั้งกระทู้ผิดประเภทต่อผู้ที่หลงเข้ามาทุกท่าน  เพราะ บช ผมยังไม่ได้รับการยืนยันเลยตั้งเป็นกระทู้สนทนาไม่ได้

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

คนที่ติมาก็เป็นคนสร้างโปรเจคระบบส่งที่ทำกลับหลายๆบริษัท  ลักษณะการทำงานก็เลยคล้ายๆ กัน แต่ที่แผนกผมไม่มีโปรเซสที่ว่า

หัวหน้าผมเลยได้รับตัวอย่างไฟล์ Excel  มาเป็นก้อนข้อมูลรายการของสินค้าที่ต้องส่ง  ที่เอามาแมทช์ด้วยการแสกนใบกำกับภาษีด้วยการ vlookup กับ ตารางที่เป็น master data ง่ายๆ หัวหน้าก็พาไปยังจุดที่เขารับงานว่าทำการแสกนยังไง 

เขาก็ถามมาว่า ต้องทำแบบนี้ ได้ไหม เราก็บอกว่าได้ คือตอนนั้นมันไม่มีอะไรซ้ำซ้อนหรอก

แต่กับมาคิดๆ ดูมันมีปัญหาที่ตามมาเยอะมากๆ    Excel   ยังไงก็หนีไม่พ้นเรื่อง User Error เพราะความยืดหยุ่นมากเกินไปของมัน มีอิสระกับผู้ใช้มากเท่าไหร่ก็มีช่องโหว่มากเท่านั้น

แล้วไหนจะต้องมาตัดแปะ ก็อปวาง เราจะต้องมาคิดว่า  ว่ากรุ๊ปไฟล์ยังไง เพราะถ้าสะสมข้อมูลไปเรื่องความจุไฟล์มันก็มีขนาดใหญ่จนเกิดอาการหน่วง

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

ผมก็เลยมานั่งคิดว่าจะแก้ปัญหาพวกนี้ยังไงโดยใช้  Excel ครอบจักรวาล และไม่พึ่งแอดมินจากไอที ใจอยากให้เขาเปิด permission  ให้ user ผมแล้ว ลง IDE อย่าง Visual Studio ถามว่าเขาจะช่วยมั้ย ก็คงไม่อยากหวัง  หรือถ้าได้ก็จะต้องมีพิธีอะไรอีกตามเคย คงไม่ต้องบอกหรอกมันหนีไม่พ้นเรื่องผลประโยชน์ เพราะใครคงไม่อยากเพิ่มงานตัวเองโดยที่ไม่ได้อะไรเลยล่ะมั้ง  อันนี้ผมคิดไปเอง  เพราะรีเควสอะไรไปแล้วเขาจะทำให้ช้ามาก หัวหน้าเขาก็เคยคุยกับไอทีว่าจะต้องมีระบบ  แต่มันก็ต้องใช้เวลา แล้วใจเขาอยากได้ระบบวันนั้นด้วยซ้ำ ไม่รู้ว่าหัวหน้าไปโดนกดดันอะไรมานักหนา   ผมล่ะสิ้นหวังกับระบบการทำงานแบบขั้นบันไดมาก  ทำไมไม่จับเข่าคุยกันทุกๆคน ให้มันจบๆ ไป แถมการทำงานก็ถูกจำกัดด้วยบทบาทหน้าที่ ต่างคนต่างทำไปตามหน้าที่  ถ้าคุยกันจริงป่านนี้คงรู้ว่าต้องมีระบบนานไปแล้ว แผนกก็อายุ 5 ปี ไปแล้ว หัวหน้าเขาก็เลยมาขอให้ผมช่วย  แถมบอกว่าเอาพรุ่งนี้เลยได้มั้ย  ใจอยากจะเถียงมาก  แต่บอกอะไรไปก็ไม่เข้าหู แค่กำลังอ้าปากเขาก็เพ้ออะไรออกมาก็ไม่รู้ ในใจผม คืออยากจะมองบนให้ตากลับมาอีกรอบ

แต่ดูอาการนี้แล้ว  คงห้ามไม่อยู่แล้วละก็เลยรับปากไปว่า  จะลองทำดู  แต่ไม่เสร็จพรุ่งนี้แน่  ในใจคิดว่าถือทำบุญไปก็แล้วกัน จะมีใครในโลกที่ใจบุญเท่าผมอีก

มันนั้งคิดว่าถ้ามีต้องการให้ข้อมูลอัพเดทแบบเรียลไทม์ตามอุดมคติที่เพ้อฝันของหัวหน้า คงต้องมีดาต้าเบส แล้วต้องมีบน Excel 

แล้วก็มาต้องจ้อง Excel  แล้วก็มานั้งคลิกดูเมนูเล่นๆ ก็เจอฟีเจอร์ใหม่ของ Excel (สำหรับผม) นั่นก็คิอ มันคอนเน็กท์กับดาต้าเบสได้ แล้วผมก็ไปเอาดาเบสมาจากไหน  จะสร้างเซิร์ฟเวอร์หรอ คงไม่มีทาง  แถมคงติดนโยบายป้องกันข้อมูลบริษัทอีก  จะขอไอทีสร้าง Local Server ก็ยิ่งหมดหวัง เห็นว่ามันใส่ไฟล์ access ได้ก็เลยจะใช้ access นี่แหละ ก็ไปหาโหลดไฟล์ access  เปล่าๆ เอามา เขียนโค้ด vba ตอนนั้นไม่รู้ว่ามันสร้างไฟล์จาก  ado library ได้ (ติดมากับ office) เพราะแพคเก็จ office ของผมไม่มี access  ติดมาด้วยซ้ำ แล้วก็ต้องมาระลึกชาติ SQL กันใหม่ 3-5 วันก็มีรูปร่างพอให้ออกมาใช้ แก้บัคอะไรเสร็จแล้วก็ราวๆหนึ่งอาทิตย์ 

ตอนพัฒนา Excel ครอบจักรวาล ก็เจอข้อจำกัด คือ

ui ที่เป็น control ให้ยูเซอร์ใช้ โบราณมากกกกก แถมเป็น control พื้นฐานก็คือปุ่ม, ช่องใส่, เลเบิล

ไม่มี date picker กับ data gridview ที่มันจำเป็นมากๆ 

ก็เลยต้องสร้าง user form เป็นตัวคีย์ข้อมูลแล้ว ใส่ตารางบนชีต Excel ที่ลิงค์กับ access  ที่แนบเป็น data conection เอาไว้กด refresh ดูข้อมูล (query and connections)

พอหัวหน้าเขามาดูวิธีใช้ เขาก็บ่นว่าทำไมมันยุ่งอยาก คือต้องมากดปุ่มเปิด user form พอจะดูข้อมูลก็ต้องมาปิดแล้วกด refresh ข้อมูลดูบนชีคอีก 

เขาบอกของที่เขาทำอยู่ยังง่ายกว่าอีก ตอนนั้นถ้าผมลบโปรดจคทิ้งได้คงลบไปแล้ว  คือไม่น่าทำให้เลย  ไม่น่าทำให้ตัวเองลำบากเลย  ผมลดภาระให้ยูเซอร์เยอะมาก  (ถ้าจะพูดให้ะลเอียด)  แต่ดันไม่อยากลำบากกับการแค่ปิดเปิดฟอร์ม  จะตั้งฟอร์มเป็น modeless (ให้หน้าต่างมันอิระกับ excel มันก็ยังจออยู่ดี)  จะบอกว่า  Excel  มันมีชีดจำกัดยังไงก็คงไม่เข้าใจหรอก  ผมเองก็ไม่ได้ถูกจ้างมาในฐานะไอที หรือทีม development ด้วยซ้ำ

ก็เลยย้าย control มาวางไว้บนซีต  บอกเลยมามันมีปัญหาตามมามาก  เพราะเหมือนกราฟฟิคของ excel มันไม่ optimize กับไฟล์ที่เป็นรูปภาพ

พอเซฟแล้วเปิดมาอีกทีมันก็เละ กดได้บ้าง ไม่ได้บ้าง  ขนาดเปลี่ยนบ้าง  ช่องกับปุ่มหายบ้าง ย้ายเครื่องแล้วเรียก control  ไม่ได้บ้าง  เพราะ activex control แต่ละเครื่องมันคนละเวอร์ชั่น

 พอเขียนอีกเครื่องแล้ว แล้วเปิดอีกเครื่องแล้วกดเซฟทับ เปิดอีกที  control  ก็พัง  คนใช้งานก็บ่นว่าใช้ไม่ได้  ผมก็แก้ให้ หลังๆก็แนะนำให้ปิดเปิดใหม่เอา คือปลงแล้ว

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

"ก็ใช้เบราเซอร์สิ" ตอนที่แอบอู้เล่นเว็บอยู่ แล้วชอบเปิด dev tools มาดูดรูป ผมก็คิดได้อย่างนั้น ผมก็เลยหาคำตอบจากกูเกิลว่าจะสร้างเว็บแอพฯ แบบออฟไลน์ ต้องใช้อะไรบ้าง ได้คำตอบคือ  indexedDB ผมมานั้งเขียน js ลองศึกษาเสียเวลาอยู่ได้ตั้งนาน
ปรากฎว่ามันไม่สนับสนุนการส่งข้อมูลไปเครื่องอื่น และดาต้าเบสมันเป็นอิสระกันถ้าต่าง client เช่นต่าง ยูเซอร์ ต่างเบราเซอร์ มันก็แยกข้อมูลออกกันเป็นคนละชุด  ถ้าล้างแคช ข้อมูลก็หายหมดด้วย
จะให้มาสั่งให้ยูเซอร์อัพโหลดไฟล์  json ย้ายเครื่องไปย้ายเครื่องมา ก็คงดูลำบาก แถมมีโอกาสที่จะผิดพลาดและตกหล่นสูง

ผมก็เลยวางแผนสร้างดาต้าเบสของผมเองขึ้นมาจากรูปแบบไบนารี่ที่เป็นบล๊อกๆ เพื่อที่จะเข้าถึงข้อมูลได้ไว ให้นึกภาพก็เหมือนกับเราเรียงบ้านเลขที่ในซอยแล้วมีอันดับรายการ ถ้าเราหายตัวได้  เราก็หายตัวไปที่บ้านหลังนั้นได้เลย  ถ้าเรามีแค่บ้านเลขที่ต่อให้หายตัวได้  เราก็ไม่รู้ว่าบ้านนั้นมันอยู่หลังไหน  ก็ต้องมาไล่เดินดูตั้งแต่ต้นซอย ผมค่อยๆ ทำทีละนิด ทีละหน่อย ไปได้เป็นเดือน  ด้วยความที่ไม่ศึกษาอะไรเลย  แล้วก็มารู้ที่หลังว่า policy ของ เบราเซอร์ มันมีไม่มีการอนุญาติให้เข้าถึงไฟล์ในเครื่องได้เอง  ต้องให้ ยูเซอร์ อัพและดาวน์โหลดด้วยตัวเองเท่านั้น  ถ้าเป็นแบบนั้นก็ไม่ได้ต่างอะไร indexedDB เลยกับไปใช้ indexedDB ยังสะดวกกว่าซะอีก

มานั้งจ้องพวก control บนซีต Excel แล้วก็นึกขึ้นพวก activex control บางอันมันก็ติดมาจากโปรแกรมอื่น ที่เป็น third party นี่หว่า  นึกถึงเกมเฟลชที่เพื่อนแอบใส่ excel เอาไปเล่นในห้องเรียนเลย หามาลองทำเล่นบ้างดีกว่า  แต่ถึงยังไง flash player ถ้าจะเอาทำเป็น database ที่ต้องแชร์ไฟล์ผ่าน network คงไม่เวิร์คหรอก แถมถ้าจะทำก็ต้องติดตั้งตัวเขียนโปรแกรมอีก ลอหาเกมเฟลชมาลง excel ไปได้สักพัก ก็ระลึกชาติได้  ว่า มันมี  activex control ที่เป็น browser นี่หว่า แบบนี้ browser มันก็ติดต่อกับ access database โดยไม่ต้องมี server ได้สิ. activex control ที่ว่ามันก็คือ internet explorer นั่นแหละ  นี่แม้มันจะเก่าและถูกเลิกสนับสนุนแล้ว แต่มันก็ทำอะไรได้เยอะ  ie เวอร์ชั่นสุดท้ายคือ 11 แถมยังไงมันต้องติดมาทุกเครื่องอยู่แล้ว  ไม่ต้องไปง้อ   activex control กระโหลกกะลา ที่มีปัญหาจุกจิกและโบราณมากแล้ว  ความจริงผมจะไปหา  activex control  ดีๆมาก็ได้นะ  แต่มันต้องเอามาใช้ในโฟลเดอร์ของวินโดว์แล้วใช้ user ที่เป็น admin ลงทะเบียนผ่าน cmd เพื่อให้เครื่องรู้จัก เคยขอให้ไอทีทำให้แล้วมันเจอบ้างไม่เจอบ้าง  activex control  ที่ซับพอร์ต vb6 (vba) มันก็ไม่ค่อยมี  ถ้าไปหาโหลดเอาจากเว็บที่ไม่น่าเชื่อถือก็อาจโดนโค้ดแฝงอีก  นั้นแหละครับ ทุกอย่างก็มาจบลงที่ ie11 ที่เป็น internet flame บน userform บน excel อีกที แค่นี้ก็เพียงพอที่จะทำโปรแกรมทุกอย่างแล้วมีการแชร์ดาต้าเบสผ่านการแชร์ไฟล์บน network แล้ว   ขอโทษที่เราดูหมื่นนายมาตลอดนะ Excel นายมันคือ Excel ครอบจักรวาลจริงๆ  ถ้าไม่โง่คณิตกับฟิสิกต์ผมก็อยากเขียนแอพที่เป็น 3D ด้วย WebG library และ framework ต่างๆ ที่มีให้เลือกเยอะจนเลือกไม่ถูก  ผมก็ได้กลับมารื้อฟื้นการเขียนเว็บพวก html... เขียนสดๆบน notepad แล้วมา debuging กับ developer tools บนเบราเซอร์  
เรื่องประสบการณ์หลังจากนี้ผมอาจจะเล่าภายหลังนะครับ  วันนี้โม้เยอะ  จนขี้เกียจแล้ว  

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