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à 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…
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
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ả
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 nhé.
Khóa học phù hợp với bất kỳ ai đang muốn tìm hiểu lại Excel từ con số 0. Giáo án được Gitiho cùng giảng viên thiết kế phù hợp với công việc thực tế tại doanh nghiệp, bài tập thực hành xuyên suốt khóa kèm đáp án và hướng dẫn giải chi tiết. Tham khảo ngay bên dưới!