ป้ายกำกับ: VBA

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

    โค้ดเปลี่ยนเลขอารบิกเป็นไทยใน 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