Các font chữ thuộc bảng mã vni windows

Nội dung bài viết này sẽ hướng dẫn các bạn cách chuyển từ font chữ của bảng mã VNI Windows sang font chữ của bảng mã Unicode trực tiếp trong excel bằng vba excel, bạn không cần phải dùng thêm phần mềm của bên thứ ba như Unikey… để thực hiện việc chuyển đổi.

Chuyển font chữ của TCVN3 sang font chữ của Unicode trực tiếp trên excel

Font chữ là gì?

Font chữ là kiểu chữ mà bạn dùng để soạn thảo văn bản, hiện nay có rất nhiều font chữ khác nhau, phổ biến và được sử dụng để soạn thảo văn bản nhiều nhất phải để đến là Arial, Time New Roman…

Các font chữ thuộc bảng mã vni windows

Bảng mã là gì?

Bảng mã hiểu đơn giản là tập hợp gồm nhiều font chữ khác nhau, có nhiều bảng mã nhưng phổ biến nhất gồm ba loại sau:

  • Unicode: Gồm các font chữ như Arial, Time New Roman…
  • TCVN3: Gồm các font chữ bắt đầu bằng dấu chấm như .VnTime, .VnArial…
  • VNI-Windows: Gồm các font chữ bắt đầu bằng chữ VNI như Vni-Times, Vni-NTime…

Những trường hợp nào cần chuyển font chữ?

Với nhiều người thì sẽ có nhiều mục đích, lý do khác nhau dẫn đến cần phải chuyển font chữ nhưng mình thì thấy như thế này, đối với các font chữ thuộc bảng mã Unicode thì nó có sẵn trên hệ điều hành Windows rồi, do vậy nếu bạn nhận một văn bản nào đó người khác họ gửi cho bạn, nếu máy tính bạn không có font chữ đó thì bạn cũng có thể đọc được bằng cách chọn lại font chữ như Arial…hoặc đơn giản máy tính bạn cũng hiển thị cho bạn đọc được (Trên các hệ điều hành mới như Windows 10, Windows 11).
 

Nhưng khi bạn nhận được hoặc khi bạn gửi file cho một ai đó mà sử dụng các font chữ thuộc bảng mã như TCVN3, VNI-Windows, lúc này nếu máy tính họ không có font chữ thuộc bảng mả đó thì sẽ không đọc được, vì các font chữ thuộc hai bảng mã này mặc định không có khi máy tính cài xong hệ điều hành Windows, mà bắt buộc bạn phải tải font chữ và cài thêm vào, và không phải ai cũng hiểu điều này, do vậy chúng ta cần lưu ý khi gửi văn bản đi nếu sử dụng font chữ nói trên bằng hai cách cơ bản sau:

  • Cách 1: Khi gửi kèm file bạn hãy gửi kèm luốn font chữ và thông báo người nhận vài vào nếu chưa có, hoặc bạn nhúng luôn font chữ đó vào file (cách này mình sẽ viết một bài khác nhé).
  • Cách 2: Chuyển đổi font chữ trước khi gửi file đi, và đây chính là nội dung chính của bài viết này.

Chuyển font chữ của VNI WINDOWS sang Unicode

Mình có một ví dụ như hình bên dưới, hiện tại nội dung đang là font chữ VNI-Times, và nó thuộc bảng mã VNI Windows, quan sát trên thanh fx các bạn sẽ thấy nội dung này không đọc được

Các font chữ thuộc bảng mã vni windows
Font chữ thuộc bảng mã VNI-Times

Bước 1: Vào Developer\Visual Basic

Các font chữ thuộc bảng mã vni windows

Bước 2: Chọn Insert\Module

Các font chữ thuộc bảng mã vni windows

Bước 3: Copy đoạn code bên dưới dán vào khung soạn thảo, đây là đoạn code mình sưu tầm và đã kiểm tra.

Public Function VniToUni(str$) As String
    Dim VNI$, UNI$, i&, sUni$, arrUNI() As String
    VNI = "aù,aø,aû,aõ,aï,aâ,aê,aá,aà,aå,aã,aä,aé,aè,aú,aü,aë,AÙ,AØ,AÛ,AÕ,AÏ,AÂ,AÊ,AÁ,AÀ,AÅ,AÃ,AÄ,AÉ,AÈ,AÚ,AÜ,AË,eù,eø,eû,eõ,eï,eâ,eá,eà,eå,eã,eä,EÙ,EØ,EÛ,EÕ,EÏ,EÂ,EÁ,EÀ,EÅ,EÃ,EÄ,í ,ì ,æ ,ó ,ò ,Í ,Ì ,Æ ,Ó ,Ò ,où,oø,oû,oõ,oï,oâ,ô,oá,oà,oå,oã,oä,ôù,ôø,ôû,ôõ,ôï,OÙ,OØ,OÛ,OÕ,OÏ,OÂ,Ô ,OÁ,OÀ,OÅ,OÃ,OÄ,ÔÙ,ÔØ,ÔÛ,ÔÕ,ÔÏ,uù,uø,uû,uõ,uï,ö ,öù,öø,öû,öõ,öï,UÙ,UØ,UÛ,UÕ,UÏ,Ö ,ÖÙ,ÖØ,ÖÛ,ÖÕ,ÖÏ,yù,yø,yû,yõ,î ,YÙ,YØ,YÛ,YÕ,Î ,ñ ,Ñ "
    UNI = "E1,E0,1EA3,E3,1EA1,E2,103,1EA5,1EA7,1EA9,1EAB,1EAD,1EAF,1EB1,1EB3,1EB5,1EB7,C1,C0,1EA2,C3,1EA0,C2,102,1EA4,1EA6,1EA8,1EAA,1EAC,1EAE,1EB0,1EB2,1EB4,1EB6,E9,E8,1EBB,1EBD,1EB9,EA,1EBF,1EC1,1EC3,1EC5,1EC7,C9,C8,1EBA,1EBC,1EB8,CA,1EBE,1EC0,1EC2,1EC4,1EC6,ED,EC,1EC9,129,1ECB,CD,CC,1EC8,128,1ECA,F3,F2,1ECF,F5,1ECD,F4,1A1,1ED1,1ED3,1ED5,1ED7,1ED9,1EDB,1EDD,1EDF,1EE1,1EE3,D3,D2,1ECE,D5,1ECC,D4,1A0,1ED0,1ED2,1ED4,1ED6,1ED8,1EDA,1EDC,1EDE,1EE0,1EE2,FA,F9,1EE7,169,1EE5,1B0,1EE9,1EEB,1EED,1EEF,1EF1,DA,D9,1EE6,168,1EE4,1AF,1EE8,1EEA,1EEC,1EEE,1EF0,FD,1EF3,1EF7,1EF9,1EF5,DD,1EF2,1EF6,1EF8,1EF4,111,110"
    arrUNI = Split(UNI, ",")
     For i = 1 To Len(str)
            If InStr(VNI, Mid(str, i, 2)) > 0 And Len(Mid(str, i, 2)) = 2 Then
                sUni = sUni & ChrW("&h" & arrUNI(InStr(VNI, Mid(str, i, 2)) \ 3))
                 i = i + 1
            ElseIf InStr(VNI, Mid(str, i, 1) & " ") > 0 Then
                sUni = sUni & ChrW("&h" & arrUNI(InStr(VNI, Mid(str, i, 1) & " ") \ 3))
            End If
        If InStr(VNI, Mid(str, i, 1)) = 0 Or InStr("a,A,e,E,o,O,u,U,y,Y, ", Mid(str, i, 1)) > 0 Then sUni = sUni & Mid(str, i, 1)
    Next
    VniToUni = sUni
End Function
Các font chữ thuộc bảng mã vni windows

Bước 4: Quay trở lại file excel, ở ô D2 các bạn nhập công thức =VniToUni(C2) vào và nhấn enter

Các font chữ thuộc bảng mã vni windows

Bước 5: Kết quả

Các font chữ thuộc bảng mã vni windows

Kết luận

Như vậy là mình vừa giới thiệu với các bạn cách chuyển đổi trực tiếp đoạn văn bản sử dụng font chữ thuộc bảng mã VNI-Times sang font chữ thuộc bảng mã Unicode, nếu có thắc mắc gì hãy để lại bình luận bên dưới bài viết này nha.

Cùng tham gia cộng đồng hỏi đáp về chủ đề VBA