วันพฤหัสบดีที่ 28 ตุลาคม พ.ศ. 2553

Microsoft Office : Word เลขไทย



ถ้าเรามีเอกสาร Microsoft Word Document (.doc, .docx) ที่สร้างไว้แล้ว โดยใช้ตัวเลขแบบอารบิก 0123456789 แต่ต้องการแปลงเป็นตัวเลขภาษาไทย ๐๑๒๓๔๕๖๗๘๙ มีวิธีช่วยให้ทำได้แบบง่ายๆ บ้างไหม?
แวบแรกที่มักคิดถึงกันก็คือความสามารถ Find / Replace ใน Word เอง กำหนดเลข ๑ แทนให้กับ 1 ไล่ไปเรื่อยจนครบ

จะให้เร็วอีกนิดก็คือบันทึกเป็น Macro ให้ค้นหาและแทนที่ทั้งหมด จากการค้นข้อมูลเรื่อง Unicode พบว่า ค่าแบบเลขทศนิยมเป็นดังนี้

อารบิก 0-9 => Unicode 48-57
ไทย ๐-๙ => Unicode 3664-3673

จึงเป็นตัวหลักที่จะเอามาใช้ใน VBA ที่จะเป็นแมโคร Word

ด้วยโค้ดดังนี้

Sub ThaiNumbers()
For i = 0 To 9
' This macro is developed by S.Chatchawal.
' schatchawal@gmail.com
' Convert Arabic Numbers To Thai Numbers
' 01234567890
' arabic 0-9 => Unicode 48-57
' Thai 0-9 => Unicode 3664-3673
Selection.HomeKey Unit:=wdStory
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = ChrW(48 + i)
.Replacement.Text = ChrW(3664 + i)
.Wrap = wdFindContinue
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
Next
End Sub

หรือจะอีเมลมารับไฟล์ ThaiNumber.bas ไปใช้เลยก็ได้
ซึ่งจะแนบรายละเอียดไว้ในไฟล์ PDF วิธีใช้สำหรับ Word 2010 ให้ด้วย

หลังจากสร้างแมโครนี้เสร็จ การใช้ก็เพียงแต่กดคีย์ Alt+F8 เปิดไดอะล็อก Macro ขึ้น แล้วเลือกที่ Module1.ThaiNumber แล้วคลิก Run เพียงเท่านี้ทั้งเอกสารก็จะแทนที่เลขอารบิกด้วยเลขไทยแล้ว



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

2.คลิกขวาเลือก Numbering

3.คลิกรูปแบบตัวเลขไทย

4.ตัวอย่างผลลัพธ์ที่ได้

4 ความคิดเห็น:

  1. มาขอรับ ThaiNumber.bas ไปใช้หน่อยนะครับ
    กำลังลำบากเลย

    song343@gmail.com

    ขอบคุณมากครับ

    ตอบลบ
  2. ขอรับ thainumber.bas ไปใช้หน่อยค่ะ ลำบากเหมือนกัน ทำงานไม่สะดวกเลย

    jeab-jr@hotmail.com

    ขอบคุณมากค่ะ

    rid10

    ตอบลบ
  3. ขอรับ thainumber.bas ไปใช้ด้วยค่ะ ไม่มีความรู้ในการเปลี่ยนใน แมโครเลยค่ะ
    th.duangrat@gmail.com
    ขอบคุณมากค่ะ

    ตอบลบ
  4. ขอบคุณมากๆครับ ช่วยได้เยอะเลย :)

    ตอบลบ