วิธีแปลงเลขไทยเป็นเลขอารบิกใน Word ด้วย Macro VBA อัตโนมัติ อัปเดต 2026

0
7
MICROSOFT WORD • VBA • 2026

วิธีแปลงเลขไทยเป็นเลขอารบิก และเลขอารบิกเป็นเลขไทยใน Word ด้วย Macro VBA อัตโนมัติ

คู่มือ Step by Step พร้อม Full VBA Code สำหรับครู งานธุรการ เอกสารราชการ และผู้ใช้งาน Microsoft Word ไม่ต้องเปลี่ยนตัวเลขทีละหลักอีกต่อไป

✓ Full VBA Code ✓ Word 2024 / Microsoft 365 ✓ 2-Way Converter ✓ Unicode Thai Digits

แปลงตัวเลขทั้งเอกสาร Word ได้ง่าย ๆ

หากเคยพิมพ์เอกสาร Word เสร็จแล้วเพิ่งพบว่า ต้องเปลี่ยนเลขอารบิกทั้งหมดเป็นเลขไทย หรือเปลี่ยนเลขไทยกลับเป็นเลขอารบิก การแก้ไขตัวเลขด้วยตนเองอาจเสียเวลามาก โดยเฉพาะเอกสารที่มีหลายสิบหน้า

บทความนี้จะแนะนำการสร้าง Macro VBA สำหรับ Microsoft Word ที่สามารถแปลงตัวเลขได้ทั้งสองทิศทาง ผ่านหน้าต่างเลือกคำสั่งภาษาอังกฤษ พร้อมตัวอย่างโค้ดและวิธีใช้งาน

01

Macro VBA คืออะไร?

VBA ย่อมาจาก Visual Basic for Applications เป็นภาษาสำหรับเขียนคำสั่งอัตโนมัติในโปรแกรม Microsoft Office รวมถึง Microsoft Word ช่วยลดขั้นตอนการทำงานซ้ำ ๆ และประหยัดเวลาในการจัดการเอกสาร

ARABIC → THAI
2569
↓
๒๕๖๙
THAI → ARABIC
๑๒๓๔
↓
1234
จุดเด่น: Macro จะเปลี่ยนอักขระตัวเลขจริง ไม่ใช่เพียงเปลี่ยนการตั้งค่าการแสดงผลตัวเลข ใน Microsoft Word
02

Microsoft Word รุ่นที่รองรับ

ตัวอย่างนี้ออกแบบสำหรับ Microsoft Word เวอร์ชัน Desktop บน Windows ที่รองรับ VBA Macro เช่น Word 2016, 2019, 2021, 2024 และ Word for Microsoft 365

เวอร์ชัน VBA Macro
Word 2016รองรับ
Word 2019รองรับ
Word 2021รองรับ
Word 2024รองรับ
Microsoft 365 Desktopรองรับ
Word for the Webไม่สามารถรัน VBA โดยตรง
03

Step by Step วิธีสร้าง Macro VBA

1
เปิดเอกสาร Word

เปิดไฟล์ Microsoft Word ที่ต้องการแปลงตัวเลข และสำรองไฟล์ก่อนแก้ไข

2
เปิด Visual Basic Editor

กดแป้นพิมพ์ Alt + F11 เพื่อเปิดหน้าต่าง Microsoft Visual Basic

3
สร้าง Module

เลือกโปรเจกต์ที่ต้องการ แล้วคลิก Insert → Module

4
วาง Full VBA Code

คัดลอกโค้ดด้านล่างแล้วนำไปวาง ในหน้าต่าง Module ที่สร้างไว้

5
บันทึกและเรียกใช้งาน

กด Alt + F8 เลือก ConvertThaiArabicNumbers แล้วคลิก Run

04

Full VBA Code พร้อมใช้งาน

โค้ดนี้ใช้ข้อความภาษาอังกฤษในหน้าต่าง Macro เพื่อหลีกเลี่ยงปัญหาภาษาไทยแสดงเป็น เครื่องหมายคำถามใน VBA Editor โดยสร้างเลขไทยด้วย Unicode ผ่านฟังก์ชัน ChrW$()

Module1.bas — VBA
Option Explicit

Sub ConvertThaiArabicNumbers()

    Dim userChoice As String
    Dim sourceDigits As String
    Dim targetDigits As String
    Dim thaiDigits As String
    Dim story As Range
    Dim currentRange As Range
    Dim i As Long
    Dim conversionType As String

    ' Create Thai Unicode digits
    For i = &HE50 To &HE59
        thaiDigits = thaiDigits & ChrW$(i)
    Next i

    ' English selection dialog
    userChoice = InputBox( _
        "Select conversion type:" & vbCrLf & vbCrLf & _
        "1 = Arabic to Thai" & vbCrLf & _
        "2 = Thai to Arabic" & vbCrLf & vbCrLf & _
        "Enter your choice (1 or 2):", _
        "Thai / Arabic Number Converter", "1")

    If userChoice = "" Then Exit Sub

    Select Case userChoice

        Case "1"
            sourceDigits = "0123456789"
            targetDigits = thaiDigits
            conversionType = "Arabic to Thai"

        Case "2"
            sourceDigits = thaiDigits
            targetDigits = "0123456789"
            conversionType = "Thai to Arabic"

        Case Else
            MsgBox "Please enter 1 or 2.", _
                   vbExclamation, "Invalid Selection"
            Exit Sub

    End Select

    ' Confirmation
    If MsgBox( _
        "Conversion: " & conversionType & _
        vbCrLf & vbCrLf & _
        "Convert numbers in this document?" & _
        vbCrLf & _
        "Please save a backup first.", _
        vbYesNo + vbQuestion, _
        "Confirm Conversion") <> vbYes Then Exit Sub

    On Error GoTo ErrorHandler

    Application.ScreenUpdating = False

    ' Process document story ranges
    For Each story In ActiveDocument.StoryRanges

        Set currentRange = story

        Do While Not currentRange Is Nothing

            For i = 1 To 10

                With currentRange.Find

                    .ClearFormatting
                    .Replacement.ClearFormatting

                    .Text = Mid$(sourceDigits, i, 1)
                    .Replacement.Text = _
                        Mid$(targetDigits, i, 1)

                    .Forward = True
                    .Wrap = wdFindStop
                    .Format = False
                    .MatchCase = False
                    .MatchWholeWord = False
                    .MatchWildcards = False

                    .Execute Replace:=wdReplaceAll

                End With

            Next i

            Set currentRange = _
                currentRange.NextStoryRange

        Loop

    Next story

    Application.ScreenUpdating = True

    MsgBox _
        "Number conversion completed successfully!" & _
        vbCrLf & _
        "Conversion: " & conversionType, _
        vbInformation, _
        "Conversion Completed"

    Exit Sub

ErrorHandler:

    Application.ScreenUpdating = True

    MsgBox "Error: " & Err.Description, _
           vbCritical, "Conversion Error"

End Sub
หมายเหตุ: โค้ดแปลงตัวเลขในเนื้อหาหลัก ส่วนหัว ส่วนท้าย และ StoryRanges ที่ Word เข้าถึงได้ แต่บางวัตถุ เช่น SmartArt หรือกล่องข้อความ ที่มีโครงสร้างพิเศษ อาจต้องตรวจสอบแยกต่างหาก
05

วิธีรัน Macro และเลือกการแปลง

Thai / Arabic Number Converter

หน้าต่าง Macro จะให้เลือกคำสั่งดังนี้

OPTION 1
1
Arabic to Thai
OPTION 2
2
Thai to Arabic

เลือก 1 เพื่อแปลงเลขอารบิกเป็นเลขไทย หรือเลือก 2 เพื่อแปลงเลขไทยกลับเป็นเลขอารบิก จากนั้นคลิก OK และยืนยันด้วย Yes

06

ตัวอย่างผลลัพธ์ก่อนและหลังแปลง

ก่อนแปลง หลังแปลงเป็นเลขไทย
พ.ศ. 2569 พ.ศ. ๒๕๖๙
นักเรียน 125 คน นักเรียน ๑๒๕ คน
ชั้นประถมศึกษาปีที่ 5 ชั้นประถมศึกษาปีที่ ๕
งบประมาณ 12,500 บาท งบประมาณ ๑๒,๕๐๐ บาท
เวลา 08.30 น. เวลา ๐๘.๓๐ น.
เลขที่ 123/2569 เลขที่ ๑๒๓/๒๕๖๙
07

ทดลองแปลงตัวเลขออนไลน์

ทดลองแปลงเลขไทยและเลขอารบิกได้ทันที โดยไม่ต้องเปิด Microsoft Word เครื่องมือนี้ใช้ JavaScript เพื่อสาธิตผลลัพธ์ โดยไม่แก้ไขไฟล์เอกสาร

ผลลัพธ์หลังแปลง
ผลลัพธ์จะแสดงที่นี่
08

ทำให้ Macro ใช้งานได้กับทุกเอกสาร

หากต้องการเรียกใช้ Macro โดยไม่ต้องสร้างใหม่ ทุกครั้ง สามารถบันทึกโค้ดไว้ใน Normal.dotm ซึ่งเป็นเทมเพลตเริ่มต้นของ Microsoft Word

1
เปิด VBA Editor

กด Alt + F11

2
เลือก Normal Project

ค้นหาโปรเจกต์ Normal ใน Project Explorer

3
Insert Module

สร้าง Module ใหม่ใน Normal แล้ววางโค้ด VBA

4
Save

บันทึก Normal.dotm เพื่อเรียกใช้ Macro กับเอกสารอื่น

09

ข้อควรระวังในการใช้ Macro

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

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

ไม่ควรเปิดใช้งาน Macro จากไฟล์ที่ไม่รู้จัก หรือเปลี่ยนการตั้งค่าความปลอดภัยให้อนุญาต Macro ทั้งหมดโดยไม่มีการตรวจสอบ

10

คำถามที่พบบ่อย (FAQ)

Macro นี้แปลงตัวเลขทั้งเอกสารได้หรือไม่?

สามารถแปลงในเนื้อหาหลักและ StoryRanges ของ Word ที่เข้าถึงได้ แต่ควรตรวจสอบวัตถุพิเศษและฟิลด์ภายหลัง

ใช้กับ Microsoft Word 2024 ได้หรือไม่?

ได้ สำหรับ Word 2024 รุ่น Desktop บน Windows ที่รองรับ VBA Macro

ต้องติดตั้งโปรแกรมเพิ่มเติมหรือไม่?

ไม่ต้องติดตั้งโปรแกรมเพิ่มเติม เนื่องจาก Word Desktop บน Windows มี Visual Basic Editor อยู่แล้ว

ทำไมข้อความภาษาไทยใน VBA แสดงเป็น ??????

VBA Editor บางระบบมีข้อจำกัด เรื่องการเข้ารหัสภาษาไทย โค้ดนี้จึงใช้เมนูภาษาอังกฤษ และสร้างเลขไทยด้วย Unicode ChrW$ เพื่อหลีกเลี่ยงปัญหาดังกล่าว

ใช้กับไฟล์ DOCX ได้หรือไม่?

สามารถใช้ Macro จาก Normal.dotm เพื่อแก้ไขเอกสาร DOCX ได้ หากต้องการฝัง Macro ภายในไฟล์เอง ต้องบันทึกเป็น DOCM

สามารถแปลงเลขไทยกลับเป็นเลขอารบิกได้หรือไม่?

ได้ เพียงรัน Macro อีกครั้งแล้วเลือก 2 = Thai to Arabic

สรุป

การใช้ Macro VBA แปลงเลขไทยและเลขอารบิก ใน Microsoft Word เป็นเทคนิคที่ช่วยลดขั้นตอน การจัดทำเอกสารอย่างมาก โดยเฉพาะงานราชการ งานธุรการ และเอกสารของครู ที่ต้องจัดการตัวเลขจำนวนมาก

เพียงสร้าง Macro ครั้งเดียว ก็สามารถเลือกแปลงตัวเลขได้สองทิศทาง และสามารถเก็บไว้ใน Normal.dotm เพื่อใช้งานในครั้งต่อไปได้อีกด้วย

ทิ้งคำตอบไว้

กรุณาใส่ความคิดเห็นของคุณ!
กรุณาใส่ชื่อของคุณที่นี่