โค้ดเปลี่ยนเลขอารบิกเป็นไทยใน MS Word

การเปลี่ยนเลขอารบิกเป็นเลขไทย และเลขไทยเป็นเลขอารบิก ต้องใช้ VBA (Visual Basic for Applications) ซึ่งเป็นเครื่องมือภายใน Microsoft Office ที่ให้ผู้ใช้สามารถเขียนโค้ดเพื่อควบคุมและปรับแต่งการทำงานได้

ด้านล่างนี้คือขั้นตอนและตัวอย่างการเขียนมาโครเพื่อทำการเปลี่ยนแปลงเลขอารบิกเป็นเลขไทย และเลขไทยเป็นเลขอารบิกใน Microsoft Word:

ขั้นตอนการสร้างมาโครใน Microsoft Word:

  1. เปิด Microsoft Word
  2. ไปที่แท็บ View (มุมมอง) > เลือก Macros (มาโคร) > เลือก View Macros (ดูมาโคร)
  3. ในหน้าต่าง Macros ให้พิมพ์ชื่อที่คุณต้องการสำหรับมาโคร เช่น ConvertArabicToThai แล้วคลิก Create (สร้าง)
  4. หน้าต่าง Microsoft Visual Basic for Applications (VBA Editor) จะเปิดขึ้นมา
  5. วางโค้ดต่อไปนี้ลงไปในหน้าต่างนั้น

ตัวอย่างโค้ดแปลงเลขอารบิกเป็นเลขไทย

Sub ConvertArabicToThai()
    Dim arabicNums As String
    Dim thaiNums As Variant
    Dim i As Integer
    
    ' Arabic numbers
    arabicNums = "0123456789"
    
    ' Thai numbers as Unicode characters
    thaiNums = Array(ChrW(&H0E50), ChrW(&H0E51), ChrW(&H0E52), ChrW(&H0E53), _
                     ChrW(&H0E54), ChrW(&H0E55), ChrW(&H0E56), ChrW(&H0E57), _
                     ChrW(&H0E58), ChrW(&H0E59))
    
    ' Loop through the Arabic numbers and replace with Thai numbers in the document
    For i = 1 To Len(arabicNums)
        With ActiveDocument.Content.Find
            .ClearFormatting
            .Replacement.ClearFormatting
            .Text = Mid(arabicNums, i, 1) ' Find Arabic number
            .Replacement.Text = thaiNums(i - 1) ' Replace with corresponding Thai number using Unicode
            .Forward = True
            .Wrap = wdFindContinue
            .Format = False
            .MatchCase = False
            .MatchWholeWord = False
            .MatchWildcards = False
            .MatchSoundsLike = False
            .MatchAllWordForms = False
            .Execute Replace:=wdReplaceAll
        End With
    Next i
End Sub

โค้ดแปลงเลขไทยเป็นเลขอารบิก

Sub ConvertThaiToArabic()
    Dim arabicNums As String
    Dim thaiNums As Variant
    Dim i As Integer
    
    ' Arabic numbers
    arabicNums = "0123456789"
    
    ' Thai numbers as Unicode characters
    thaiNums = Array(ChrW(&H0E50), ChrW(&H0E51), ChrW(&H0E52), ChrW(&H0E53), _
                     ChrW(&H0E54), ChrW(&H0E55), ChrW(&H0E56), ChrW(&H0E57), _
                     ChrW(&H0E58), ChrW(&H0E59))
    
    ' Loop through the Thai numbers and replace with Arabic numbers in the document
    For i = 1 To Len(arabicNums)
        With ActiveDocument.Content.Find
            .ClearFormatting
            .Replacement.ClearFormatting
            .Text = thaiNums(i - 1) ' Find Thai number using Unicode
            .Replacement.Text = Mid(arabicNums, i, 1) ' Replace with corresponding Arabic number
            .Forward = True
            .Wrap = wdFindContinue
            .Format = False
            .MatchCase = False
            .MatchWholeWord = False
            .MatchWildcards = False
            .MatchSoundsLike = False
            .MatchAllWordForms = False
            .Execute Replace:=wdReplaceAll
        End With
    Next i
End Sub