เทคนิคการใช้ Microsoft Office ตอนที่ 1
วิธีการแปลงเลขอารบิกเป็นเลขไทยโดยอัตโนมัติ บน Microsoft Word
หากใครที่ทำหนังสือราชการจะพบปัญหาเดียวกันครับ หลักๆคือการพิมพ์ทุกอย่างให้เป็นเลขไทย ทั้งเลขหนังสือ ตัวเลขวันที่ต่างๆ ให้เป็นเลขไทย เเละตามข้อบังคับฟอนต์ ไทยสารบัญ (TH SarabunPSK) ที่ทางราชการกำหนดรูปเเบบไว้ หลายท่านอาจจะคุ้นชินกับการพิมพ์โดยตรง หรือ การไล่ crl+f เเละ replace ทีล่ะเลขไป หลายท่านอาจจะคุ้นชินกับการโหลด ฟ้อน TH Sarabun๙ มาใช้ในการเปลี่ยนตัวเลขไทยซึ่งในความจริงนั้นก็สามารถทำได้เช่นเดียวกันครับ
เเต่ปัญหา คือ ฟ้อน TH Sarabun๙ ที่ถูกดัดแปลงนั้น จะแสดงตัวเลขอารบิกเป็นรูปแบบของเลขไทย แต่มันแสดงแค่ 1 ตัว interface (รูปลักษณะภายนอก) เท่านั้น เมื่อนําไฟล์ดังกล่าวไปเปิดยังเครื่องที่ไม่ได้ติดตั้งฟ้อนต์ TH Sarabun๙ ก็จะเห็นเป็นเลขอารบิกเช่นเดิม รวมถึงปัญหาบัคต่างๆ ทั้งย่อหน้าเพี้ยน ช่องว่างไม่สม่ำสมอ เป็นต้น
วันนี้ผมจะมาเสนอวิธีการเปลี่ยนเลขอารบิกเป็นเลขไทย โดยใช้เทคนิค Macro ครับ ซึ่งทำได้ไม่ยากเลยครับ
ท่านสามารถพิมพ์เลข อารบิกโดยใช้แป้นพิมพ์ทางด้านขวาของคีย์บอรดได้ดังเดิม พอพิมพ์งานเสร็จ กดปุ่มคลิกเดียว ทั้งเอกสารของท่าน ก็จะเปลี่ยนเป็นเลขไทยให้ทันที แถมเปิดในเครื่องอื่นๆ ก็ยังสามารถเห็นเป็นเลขไทยได้เช่นกัน เพราะไม่ได้เป็นการเปลี่ยนรูปจากฟ้อนเเบบ TH Sarabun๙ เเต่เป็นการใช้เทคนิคสร้าง code ลิ้งค์ให้เเปลงเป็นเลขไทยในไฟล์จริงๆเลยครับ
สารบัญ
1.วิธีติดตั้งฟ้อนไทยสารบัญ TH Sarabun
2.วิธีการแปลงเลขอารบิกเป็นเลขไทย โดยอัตโนมัติ
3.การสร้างปุ่ม Macro
4.กรณีไม่สามารถใช้งานตั้งค่าได้
1.วิธีติดตั้งฟ้อนไทยสารบัญ TH Sarabun
กรณียังไม่มีฟ้อนในการใช้งาน
สามารถโหลดฟ้อนได้ที่ https://computer.ru.ac.th/Download/index?cid=2
จากนั้นเเตกไฟล์ฟ้อนไว้ เเล้ว เข้าเเว่นขยายมุมซ้ายล่าง search (ข้างปุ่ม start windows ) หาคำว่า font settings เปิดเเล้วลากฟ้อนที่เเตกไฟล์ไว้มาลงได้เลยครับ
2.วิธีการแปลงเลขอารบิกเป็นเลขไทย โดยอัตโนมัติ
การแปลงเลขอารบิกเป็นเลขไทยที่ผมจะนำเสนอต่อไปนี้เป็นการตั้งค่ามาโครครับ เพื่อเปลี่ยนคำสั่งให้สามารถเปลี่ยนตัวเลขทั้งเอกสารภายในปุ่มเดียวเลยครับ
ขั้นเเรก เปิดโปรแกรม Microsoft Word แล้วไปที่แท็บ มุมมอง หรือ View -> Macros มาโคร -> View Macros แสดงมาโคร เเล้วเลือกครับ Macros ข้างๆ switch windows ครับ
จากนั้นตั้งชื่อฟังชั่นไว้ อาจจะเป็นชื่อ arabic to thai ก็ได้ครับ เเล้ว กดปุ่ม create หรือว่า สร้าง
ก็จะขึ้นมาตามนี้ครับ
ขั้นต่อไป ให้ copy code นี้ไปวางทับของเดิมให้หมดเลยครับ เเทนหน้าเดิมทั้งหน้าครับ จะได้หน้าตาดังข้างล่างสุดครับ
สามารถโหลด code ได้จาก https://docs.google.com/document/d/1UHUpl7VZI0RKa3K8hAQNG36HaxsUXB9dm35BS5vzDD4/edit?usp=sharing
จะได้ออกมาหน้าตาประมาณนี้ครับ จากนั้นกดเซฟ ฝั่งซ้ายรูป floppy disk ได้เลยครับ เเล้วปิดไปครับ
เท่านี้เป็นอันเสร็จสิ้นวิธีสร้างมาโครสําหรับเปลี่ยนสลับตัวเลขอารบิกเป็นเลขไทย
วิธีการใช้งานให้คลิกที่แท็บ มุมมอง -> มาโคร จะปรากฏคําสั่งใหเลือกใช้งาน ดังภาพ วิธีใช้งานคือเลือกที่คําสั่งที่ตองการ แลวกดปุ่ม เรียกใช้ หรือ RUN แต่เดี๋ยวก่อน มีวิธีแถมที่ทําใหสะดวกกว่านี้
3.การสร้างปุ่ม Macro
เมื่อเราสร้างมาโครไว้ใช้งานเรียบร้อยแล้ว วิธีการเรียกใช้มันก็ยุ่งยากเหลือเกิน คลิกเขาไปซะหลาย คลิกเชียว อย่ากระนั้นเลย เราสร้างปุ่มเอาไวเรียกใช้งานง่ายๆ ดีกว่า ให้ไปที่ด้านบนซ้ายของหน้าต่าง Microsoft Word แล้ว คลิกกําหนดแถบเครื่องมือด่วน ตามภาพ
ตรงกรอบ popular เลือกให้มาเป็น macros ครับ
หลังจากเเอดเพิ่ม macro มาที่ปุ่มลัดทั้งสองเเบบเเล้ว สามารถกด modify ด้านล่างเพื่อปรับเเต่งปุ่มให้มีรูปร่างหน้าตาตามที่ต้องการได้เลยครับ เเล้วกด ok ครับ หลังจากนั้นพอเปิด word ปกติ จะใช้งานก็สามารถกดปุ่ม ด้านข้างปุ่ม save คือ ปุ่มที่สร้างขึ้นมาเพื่อใช้งานได้เลยครับ
4.กรณีไม่สามารถใช้งานตั้งค่าได้
กรณีที่ตั้งค่าเปลี่ยนเลขไทยเเล้ว โดยใช้การตั้งค่า Macro ข้างต้น เเต่พอกดปุ่มเเล้วเป็นภาษาต่างดาวเเทนที่จะเป็นเลขไทย
เปลี่ยนเลขไทยใน Word แล้ว ใช้ไม่ได้ผล คือ พอเปลี่ยนแล้วแทนที่จะเป็นเลขไทย กลายเป็นอักขระต่างดาวอะไรก็ไม่รู้ ไม่สามารถใช้โค้ดที่ให้ไว้ได้
เมื่อได้เห็นแล้วก็เข้าใจ ก็เลยอนุมานได้ว่า ปัญหาไม่ได้ยากเย็นอะไร คือ Chr(240) ที่เคยใช้แทนเลข ๐ (ศูนย์ไทย) จะต้องเปลี่ยนใหม่ แก้แค่ตรงนี้ที่เดียวก็น่าจะได้ ไม่ใช่เรื่องยากอะไร แต่คิดว่าคงต้องอธิบายเพิ่มเติมสักหน่อยว่า ทำไม Code VBA ที่เขียนไปแล้ว พอไปใช้บางเครื่องแล้วใช้ไม่ได้
คือในโค้ด VBA ที่ใช้นั้น ใช้ Chr แทนลำดับตัวเลข ในระบบ ASCII คือ ตรงโค้ดที่เขียน Chr(48 + i) (ซึ่งก่อนหน้าได้กำกับว่า For i = 0 To 9) นั่นคือเรากำหนด encoding ของตัวอักขระที่ 48 เป็น 0 ซึ่งก็คือ ลำดับ 48 ใน Decimal code (โปรดดูที่หน้า ASCII Code ประกอบ) และที่เราให้แทนที่ด้วย Chr(240 + i) ก็คือให้แทนที่ด้วย ๐ (เลขศูนย์ไทย)
ดังนั้น แทนที่มันจะออกมาเป็นเลข 0 แต่กลายเป็นตัว ð อันนี้ก็เข้าใจได้ไม่ยากว่าตัว 240 มันไม่ใช่ เลข ๐ ซะแล้ว ตัว encoding ที่เครื่องคอมพิวเตอร์นั้นทำงานอยู่ในอีกแบบหนึ่ง ซึ่งเมื่อเทียบกับตารางนี้ ก็จะเห็น่ามันตรงกัน https://docs.microsoft.com/en-us/office/vba/language/reference/user-interface-help/character-set-128255
อันนี้คือเหตุผลว่าทำไม โค้ดที่เคยใช้มันถึงไม่ทำงาน หรือ ทำงานแปลก ๆ แทนที่จะแปลงตัวเลขเป็นไทยกลายเป็นตัวต่างดาวไปซะงั้น
เมื่อรู้ว่าปัญหาเกิดจากอะไร เราก็มาวิธีแก้ ปัญหาคือเมื่อเป็น Unicode แล้วแล้วจะเปลี่ยนเป็นอะไรดีล่ะ? อันนี้ก็ต้องมาทำความเข้าใจกับไวยากรณ์ของมันอีกสักหน่อย
โค้ดอักขระ ที่เราคุ้นเคยกันจะมีอยู่ 3 แบบ คือ
Chr และ Chr$ จะส่งค่าของอักขระที่ใช้โค้ด ASCII (หรือ ANSI)
ChrB และ ChrB$ ส่งข้อมูลไบต์ที่มีอยู่ในสตริงแทนที่จะส่งกลับอักขระซึ่งอาจเป็นหนึ่งหรือสองไบต์ ChrB จะส่งกลับค่าไบต์เดียวเสมอ
Chr$ and ChrB$ จะเป็น String
ChrW จะส่งกลับสตริงที่มีอักขระ Unicode ยกเว้นบนแพลตฟอร์มที่ไม่ได้รับการสนับสนุน Unicode ใน Mac ไม่สนับสนุนการใช้ ChrW(n) จะไม่สามารถส่งกลับอักขระ Unicode ทั้งหมดสำหรับค่า n ในช่วง 128 – 65535 สำหรับค่า Unicode n ที่มากกว่า 127 ไม่ควรใช้ ChrW ใน Mac ดังนั้น สิ่งที่ต้องเปลี่ยนก็คือ Chr ที่จะใช้กับเลขไทย ให้เปลี่ยนมาใช้ ChrW แทน ซึ่งตัวเลขไทยใน Unicode จะเริ่มเลข ๐ ที่ 3664 (แบบ decimal code ดูรายละเอียดที่ https://www.codetable.net/unicodecharacters?page=12) ดังนั้น เราจะเปลี่ยนเล็กน้อยดังนี้
กด ดู code โดยใช้จากหน้าที่ สอง ใน google doc นะครับ https://docs.google.com/document/d/1UHUpl7VZI0RKa3K8hAQNG36HaxsUXB9dm35BS5vzDD4/edit?usp=sharing
พอวาง code เสร็จก็ย้อนกลับไปทำตามขั้นตอนที่ 3 แบบเดิมได้เลยครับ หลักๆคือเเค่เปลี่ยน code ชุดใหม่นี้เเทนครับผม ใช้ code ชุด กรณีใช้งานไม่ได้นะครับ
อ้างอิง : https://datarevol.com/word/arabic-to-thai/
ตัว code ที่แก้ไขใช้ได้แล้ว
ขอบคุณนะคะ