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

Cao Cường
Cao Cường
May 04 2022

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…

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

Font chữ thuộc bảng mã VNI-Times

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

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

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

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

Bước 5: Kết quả

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.

 

0/5 - (0 bình chọn)

0/5 - (0 bình chọn)

Bài viết liên quan

Hướng dẫn về một số hàm DAX căn bản trong Power Pivot (Phần 2)

Hướng dẫn về một số hàm DAX căn bản trong Power Pivot (Phần 2)

Hướng dẫn cách phân biệt Data Table với Lookup Table trong Power Pivot

Hướng dẫn cách phân biệt Data Table với Lookup Table trong Power Pivot

Hướng dẫn cách mở thẻ Power Pivot trên thanh Menu của Excel

Hướng dẫn cách mở thẻ Power Pivot trên thanh Menu của Excel

Hướng dẫn cách phân biệt giữa Power Pivot và Pivot Table

Hướng dẫn cách phân biệt giữa Power Pivot và Pivot Table

Hướng dẫn cách kết nối các bảng trong Power Pivot

Hướng dẫn cách kết nối các bảng trong Power Pivot

Hướng dẫn cách đổi tên bảng và tên cột trong Power Pivot

Hướng dẫn cách đổi tên bảng và tên cột trong Power Pivot

@ 2020 - Bản quyền của Công ty cổ phần công nghệ giáo dục Gitiho Việt Nam
Giấy chứng nhận Đăng ký doanh nghiệp số: 0109077145, cấp bởi Sở kế hoạch và đầu tư TP. Hà Nội