BlogExcel Facebook Google+ 2017-06-24T09:57:03Z Nước ngoài thì mình không rõ lắm, nhưng ở VN thì mình gặp rất nhiều các báo cáo, văn bản...dùng nhiều bảng mã trong cùng một đoạn văn h...

Chuyển Đổi Bảng Mã Unicode Và Vni Trong Excel

In ra - Lưu thành PDF - Gửi qua email

Nước ngoài thì mình không rõ lắm, nhưng ở VN thì mình gặp rất nhiều các báo cáo, văn bản...dùng nhiều bảng mã trong cùng một đoạn văn hoặc 1 báo cáo, việc dùng nhiều bảng mã như thế vừa làm mất đi tính thống nhất, cũng như thẩm mỹ của nó. Và cũng có thể khiến người nhận file không thể đọc được nếu như máy tính của họ không có font chữ phù hợp dành cho bảng mã đó.

Có rất nhiều cách để chuyển các bảng mã với nhau sao cho thống nhất như dùng Unikey..., nhưng nhanh nhất và dễ dùng nhất đó chính là dùng VBA để tạo hàm tùy chỉnh hỗ trợ cho việc này.
Ở VN thì mình thấy thường dùng nhất là ba loại bảng mã sau:
1. Unicode: Font kiểu như: Time New Roman, Arial, ...
2. VNI: Font kiểu như: VNI-Times, ...
3. TCVN3: Font kiểu như: .VnTime
Ở bài viết này mình sẽ giới thiệu cách chuyển đổi qua lại giữa Unicode và Vni với nhau. Giữa các bảng mã còn lại mình sẽ giới thiệu ở bài viết sau.
1. Chuyển Đổi Từ Unicode Sang Vni.
- Ở hình ảnh bên dưới chúng ta có đoạn văn bản có font là Times New Roman thuộc bảng mã Unicode. Bây giờ mình sẽ chuyển nó thành bảng mã Vni


- Bạn nhấn Alt + F11 để mở VBA lên. Sau đó vào Insert/Module


- Và Copy đoạn Code này:

  1. Public Function Uni2Vni(nhapUni As StringAs String
  2. '---------------------------------------------------------------------------------------
  3. ' Function : Uni2Vni
  4. ' Author    : phantronghiep07
  5. ' Phone     : 0915 080 282
  6. '---------------------------------------------------------------------------------------
  7.    Dim maAcii, Vni, loi, suaLoi
  8.     Dim i As Integer
  9.    
  10.      maAcii = Array(7845, 7847, 7849, 7851, 7853, 226, 225, 224, 7843, 227, 7841, 7855, 7857, 7859, _
  11.                                 7861, 7863, 259, 250, 249, 7911, 361, 7909, 7913, 7915, 7917, 7919, 7921, 432, _
  12.                                 7871, 7873, 7875, 7877, 7879, 234, 233, 232, 7867, 7869, 7865, 7889, 7891, 7893, _
  13.                                 7895, 7897, 244, 243, 242, 7887, 245, 7885, 7899, 7901, 7903, 7905, 7907, 417, _
  14.                                 237, 236, 7881, 297, 7883, 253, 7923, 7927, 7929, 7925, 273, 7844, 7846, 7848, _
  15.                                 7850, 7852, 194, 193, 192, 7842, 195, 7840, 7854, 7856, 7858, 7860, 7862, 258, _
  16.                                 218, 217, 7910, 360, 7908, 7912, 7914, 7916, 7918, 7920, 431, 7870, 7872, 7874, _
  17.                                 7876, 7878, 202, 201, 200, 7866, 7868, 7864, 7888, 7890, 7892, 7894, 7896, 212, _
  18.                                 211, 210, 7886, 213, 7884, 7898, 7900, 7902, 7904, 7906, 416, 205, 204, 7880, 296, _
  19.                                 7882, 221, 7922, 7926, 7928, 7924, 272)
  20.                                
  21.      Vni = Array("aá""aà""aå""aã""aä""aâ""aù""aø""aû""aõ""aï""aé""aè", _
  22.                             "aú""aü""aë""aê""uù""uø""uû""uõ""uï""öù""öø""öû""öõ", _
  23.                             "öï""ö""eá""eà""eå""eã""eä""eâ""eù""eø""eû""eõ""eï", _
  24.                             "oá""oà""oå""oã""oä""oâ""où""oø""oû""oõ""oï""ôù""ôø", _
  25.                             "ôû""ôõ""ôï""ô""í""ì""æ""ó""ò""yù""yø""yû""yõ""î", _
  26.                             "ñ""AÁ""AÀ""AÅ""AÃ""AÄ""AÂ""AÙ""AØ""AÛ""AÕ", _
  27.                             "AÏ""AÉ""AÈ""AÚ""AÜ""AË""AÊ""UÙ""UØ""UÛ""UÕ", _
  28.                             "UÏ""ÖÙ""ÖØ""ÖÛ""ÖÕ""ÖÏ""Ö""EÁ""EÀ""EÅ", _
  29.                             "EÃ""EÄ""EÂ""EÙ""EØ""EÛ""EÕ""EÏ""OÁ""OÀ""OÅ", _
  30.                             "OÃ""OÄ""OÂ""OÙ""OØ""OÛ""OÕ""OÏ""ÔÙ""ÔØ""ÔÛ", _
  31.                             "ÔÕ""ÔÏ""Ô""Í""Ì""Æ""Ó""Ò""YÙ""YØ""YÛ""YÕ", _
  32.                             "Î""Ñ"' Cua so viet code phai chon font chu Vni thi hien thi moi dung
  33.                            
  34.         loi = Array("aauø""aaø""aaoõ""auø""aoõ""aeù""aeø""auuø""aeâ""uuø""uoõ", _
  35.                             "öoõ""eoõ""AAUØ""AAØ""AAOÕ""AUØ""AOÕ""AEÙ""AEØ""AUUØ", _
  36.                             "AEÂ""UUØ""UOÕ""ÖOÕ""EOÕ"' Cua so viet code phai chon font chu Vni thi hien thi moi dung
  37.                            
  38.         suaLoi = Array("aá""aà""aã""aù""aõ""aé""aè""aú""aê""uù""uõ""öõ""eõ""AÁ", _
  39.                                 "AÀ""AÃ""AÙ""AÕ""AÉ""AÈ""AÚ""AÊ""UÙ""UÕ""ÖÕ""EÕ"' Cua so viet code phai chon font chu Vni thi hien thi moi dung
  40.        
  41.         Uni2Vni = nhapUni
  42.         For i = 0 To 133
  43.             Uni2Vni = Replace(Uni2Vni, ChrW(maAcii(i)), Vni(i))
  44.         Next i
  45.        
  46.         For i = 0 To 25
  47.             Uni2Vni = Replace(Uni2Vni, loi(i), suaLoi(i))
  48.         Next i
  49.        
  50. End Function
Dán vào khung soạn thảo như hình.


- Quay trở lại File Excel lúc nãy. Lúc này nếu ta gõ hàm =Uni2v thì Excel sẽ gợi ý hàm để sử dụng.


- Các bạn gõ hàm đầy đủ là =Uni2Vni(A1)


- Lúc này đoạn văn bản A1 đã được chuyển thành bảng mã VNI ở ô B2. Các bạn có thể thấy font bây giờ là VNI-Times. Bạn có thể chọn Font bất kỳ nhé. Miễn sao nó thuộc bảng mã VNI là được.


2. Chuyển Đổi Từ Vni Sang Unicode.
Tương tự như cách chuyển đổi từ Unicode sang Vni ở trên. Bạn sử dụng Code sau và dán vào phần VBA.

  1. Public Function Vni2Uni(nhapVni As StringAs String    ' Vni --> Unicode
  2. '---------------------------------------------------------------------------------------
  3. ' Function : Vni2Uni
  4. ' Author    : phantronghiep07
  5. ' Phone     : 0915 080 282
  6. '---------------------------------------------------------------------------------------
  7.    Dim maAcii, Uni
  8.     Dim i As Integer
  9.    
  10.      maAcii = Array(7845, 7847, 7849, 7851, 7853, 226, 7843, 227, 7841, 7855, 7857, 7859, _
  11.                                 7861, 7863, 259, 250, 249, 7911, 361, 7909, 7913, 7915, 7917, 7919, 7921, 432, _
  12.                                 7871, 7873, 7875, 7877, 7879, 234, 233, 232, 7867, 7869, 7865, 7889, 7891, 7893, _
  13.                                 7895, 7897, 7887, 245, 7885, 7899, 7901, 7903, 7905, 7907, 417, _
  14.                                 237, 236, 7881, 297, 7883, 253, 7923, 7927, 7929, 7925, 273, 7844, 7846, 7848, _
  15.                                 7850, 7852, 194, 7842, 195, 7840, 7854, 7856, 7858, 7860, 7862, 258, _
  16.                                 218, 217, 7910, 360, 7908, 7912, 7914, 7916, 7918, 7920, 431, 7870, 7872, 7874, _
  17.                                 7876, 7878, 202, 201, 200, 7866, 7868, 7864, 7888, 7890, 7892, 7894, 7896, _
  18.                                 7886, 213, 7884, 7898, 7900, 7902, 7904, 7906, 416, 205, 204, 7880, 296, _
  19.                                 7882, 221, 7922, 7926, 7928, 7924, 272, 225, 224, 244, 243, 242, 193, 192, 212, 211, 210)
  20.                                
  21.      Vni = Array("aá""aà""aå""aã""aä""aâ""aû""aõ""aï""aé""aè", _
  22.                             "aú""aü""aë""aê""uù""uø""uû""uõ""uï""öù""öø""öû""öõ", _
  23.                             "öï""ö""eá""eà""eå""eã""eä""eâ""eù""eø""eû""eõ""eï", _
  24.                             "oá""oà""oå""oã""oä""oû""oõ""oï""ôù""ôø", _
  25.                             "ôû""ôõ""ôï""ô""í""ì""æ""ó""ò""yù""yø""yû""yõ""î", _
  26.                             "ñ""AÁ""AÀ""AÅ""AÃ""AÄ""AÂ""AÛ""AÕ", _
  27.                             "AÏ""AÉ""AÈ""AÚ""AÜ""AË""AÊ""UÙ""UØ""UÛ""UÕ", _
  28.                             "UÏ""ÖÙ""ÖØ""ÖÛ""ÖÕ""ÖÏ""Ö""EÁ""EÀ""EÅ", _
  29.                             "EÃ""EÄ""EÂ""EÙ""EØ""EÛ""EÕ""EÏ""OÁ""OÀ""OÅ", _
  30.                             "OÃ""OÄ""OÛ""OÕ""OÏ""ÔÙ""ÔØ""ÔÛ", _
  31.                             "ÔÕ""ÔÏ""Ô""Í""Ì""Æ""Ó""Ò""YÙ""YØ""YÛ""YÕ", _
  32.                             "Î""Ñ""aù""aø""oâ""où""oø""AÙ""AØ""OÂ""OÙ""OØ")
  33.                            
  34.         Vni2Uni = nhapVni
  35.         For i = 0 To 133
  36.             Vni2Uni = Replace(Vni2Uni, Vni(i), ChrW(maAcii(i)))
  37.        '     MsgBox Vni2Uni & i
  38.        Next i
  39.                            
  40. End Function
- Và công thức để các bạn chuyển đổi là =Vni2Uni nhé. Ngược lại với công thức trên. Ở đây tác giả muốn để công thức như vậy cho các bạn dễ nhớ. Các bạn có thể chỉnh Code để có công thức theo ý muốn nhé.
  • Chú Ý:

- Các bạn có thể lưu file có chứa code lại để lần sau sử dụng hoặc nếu muốn dùng cho tất cả file excel khi cần thì các bạn sử dụng code trên vào tạo một Add-ins để những lần sau không cần phải dán Code VBA vào cho mỗi lần sử dụng nhé. Việc tạo Add-Ins như thế nào thì mời các bạn tham khảo ở bài viết này. Mình đã có một bài rất chi tiết về vấn đề này.

- Và tất nhiên là mình xin gửi lời cám ơn sâu sắc đến tác giả của loạt Code VBA này, đó là thành viên phantronghiep07 của caulacbovb.com
Nguồn Code: phantronghiep07 - CLBVB
5 BlogExcel.Com: Chuyển Đổi Bảng Mã Unicode Và Vni Trong Excel Nước ngoài thì mình không rõ lắm, nhưng ở VN thì mình gặp rất nhiều các báo cáo, văn bản...dùng nhiều bảng mã trong cùng một đoạn văn h...

Đăng Ký Nhận Email Từ BlogExcel.Com

Bài Mới Nhất: