Minh Tam 2024
Thành viên mới

- Tham gia
- 17/3/25
- Bài viết
- 8
- Được thích
- 0
Chào cả nhà GPE. Em xin gửi 1 số code lượm vặt trên diễn đàn gom lại chia sẻ cho các mọi người copy vào dùng cho nhanh
Mã:
Option Explicit
Public Type DataText
start As Single
Len As Single
Name As String
SIZE As Single
Strikethrough As Boolean
Superscript As Boolean
SubScript As Boolean
Underline As Single
ColorIndex As Variant
Bold As Boolean
Italic As Boolean
End Type
Function IsUnicode(s$) As Boolean
'Haøm kieåm tra font Unicode
Dim bLen!, Map() As Byte, i%
If LenB(s) Then
Map = s: bLen = UBound(Map)
For i = 1 To bLen Step 2
If (Map(i) > 0) Then IsUnicode = True: Exit Function
Next
End If
End Function
Function IsVni(vnstr$) As Boolean
'Haøm kieåm tra font VNI
Dim VNI$, k!, arrVNI() As String, j!
VNI = "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ä,où,oø,oû,oõ,oï,oâ,oá,oà,oå,oã,oä,ôù,ôø,ôû,ôõ,ôï,uù,uø,uû,uõ,uï,öù,öø,öû,öõ,öï,yù,yø,yû,yõ,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Ä,Í,Ì,Æ,Ó,Ò,OÙ,OØ,OÛ,OÕ,OÏ,OÂ,OÁ,OÀ,OÅ,OÃ,OÄ,ÔÙ,ÔØ,ÔÛ,ÔÕ,ÔÏ,UÙ,UØ,UÛ,UÕ,UÏ,ÖÙ,ÖØ,ÖÛ,ÖÕ,ÖÏ,YÙ,YØ,YÛ,YÕ"
arrVNI = Split(VNI, ",")
For k = 1 To Len(vnstr)
For j = 0 To 117
If Mid(vnstr, k, 2) = arrVNI(j) Then
IsVni = True: j = 117: k = Len(vnstr)
Else
IsVni = False
End If
Next j
Next k
End Function
Function IsTCVN3(vnstr$) As Boolean
'Haøm kieåm tra font TCVN3
Dim i%
Dim abc$: abc = "¸µ¶·¹¨¾»¼½©ÊÇÈÉËÐϪÕÔÖÝ×ØÜÞãßáâä«èåçéêëøõ÷ïýúûüþ®¡¢£¤¥ê¦§"
For i = 1 To Len(vnstr)
If InStr(abc, Mid(vnstr, i, 1)) > 0 Then IsTCVN3 = True: i = Len(vnstr) Else IsTCVN3 = False
Next i
End Function
Function FixVniTcvn3(vnstr$) As Boolean
'Haøm söûa moät vaøi loãi kyù töï khi chuyeån töø VNI sang TCVN3
Dim i!, C
For i = 1 To Len(vnstr): C = Mid(vnstr, i, 1)
On Error Resume Next
Select Case C
Case "ñ"
If Mid(vnstr, i - 2, 1) = "p" Then
FixVniTcvn3 = False And i = Len(vnstr)
ElseIf Mid(vnstr, i + 1, 1) = " " Then
FixVniTcvn3 = True And i = Len(vnstr)
Else
FixVniTcvn3 = True
End If
Case "Ñ"
If Mid(vnstr, i - 1, 1) = " " Then
FixVniTcvn3 = False And i = Len(vnstr)
Else
FixVniTcvn3 = True
End If
Case "ô": If is_o(vnstr, i) = True Then FixVniTcvn3 = True And i = Len(vnstr)
Case "Ì": If is_e(vnstr, i) = True Then FixVniTcvn3 = True And i = Len(vnstr)
Case "Æ": If is_e1(vnstr, i) = True Then FixVniTcvn3 = True And i = Len(vnstr)
Case "Ó": If is_e2(vnstr, i) = True Then FixVniTcvn3 = True And i = Len(vnstr)
Case "Ò": If is_e3(vnstr, i) = True Then FixVniTcvn3 = True And i = Len(vnstr)
Case "í": If is_i(vnstr, i) = True Then FixVniTcvn3 = True And i = Len(vnstr)
Case "ì": If is_i1(vnstr, i) = True Then FixVniTcvn3 = True And i = Len(vnstr)
Case "æ": If is_i2(vnstr, i) = True Then FixVniTcvn3 = True And i = Len(vnstr)
Case "ó": If is_i3(vnstr, i) = True Then FixVniTcvn3 = True And i = Len(vnstr)
Case "ò": If is_i4(vnstr, i) = True Then FixVniTcvn3 = True And i = Len(vnstr)
End Select
Next i
End Function
Function is_o(vnstr$, k!) As Boolean
vnstr = ChuThuong(vnstr): C = Mid(vnstr, k, 1): On Error Resume Next
If Mid(vnstr, k - 1, 3) = "bôt" Or Mid(vnstr, k - 1, 3) = "bôn" Or Mid(vnstr, k - 1, 3) = "côn" Or _
Mid(vnstr, k - 2, 1) = "g" Or Mid(vnstr, k - 2, 4) = "g vô" Or Mid(vnstr, k - 1, 2) = "lô" Or _
Mid(vnstr, k - 1, 3) = "nô h" Or Mid(vnstr, k - 1, 3) = "sôt" Or Mid(vnstr, k - 1, 3) = "vô m" Or _
Mid(vnstr, k - 1, 3) = "vôn" Or Mid(vnstr, k - 4, 5) = "è trô" Or Mid(vnstr, k - 2, 4) = "trô c" _
Or Mid(vnstr, k - 4, 5) = "n trô" Or Mid(vnstr, k - 2, 5) = "trô v" Or Mid(vnstr, k - 2, 4) = "trôc" _
Or Mid(vnstr, k - 2, 4) = "chôc" Then
is_o = False
ElseIf Mid(vnstr, k + 2, 1) = "x" Or Mid(vnstr, k + 2, 1) = "b" Or Mid(vnstr, k + 2, 1) = "r" Or _
Mid(vnstr, k - 1, 3) = "hôi" Or Mid(vnstr, k - 3, 4) = "o mô" Or Mid(vnstr, k - 1, 4) = "mô m" Or _
Mid(vnstr, k - 4, 5) = "lô mô" Or Mid(vnstr, k - 2, 4) = "trôn" Or Mid(vnstr, k - 1, 2) = "öô" Or _
Mid(vnstr, k - 1, 5) = "lô mô" Or Mid(vnstr, k - 1, 2) = "ñô" Or Mid(vnstr, k - 2, 6) = "trôn c" _
Or Mid(vnstr, k - 1, 1) = "u" Then
is_o = True
End If
End Function
Function is_e(vnstr$, k!) As Boolean
C = Mid(vnstr, k, 1): On Error Resume Next
If Mid(vnstr, k - 1, 1) = "o" Or Mid(vnstr, k + 1, 1) = "m" Or Mid(vnstr, k + 1, 1) = "n" Then
is_e = False
ElseIf Mid(vnstr, k - 1, 1) = "B" Or Mid(vnstr, k - 1, 1) = "D" Or Mid(vnstr, k - 1, 1) = "Ñ" _
Or Mid(vnstr, k - 1, 1) = "G" Or Mid(vnstr, k - 1, 1) = "H" Or Mid(vnstr, k - 1, 1) = "K" Or _
Mid(vnstr, k - 1, 1) = "L" Or Mid(vnstr, k - 1, 1) = "M" Or Mid(vnstr, k - 1, 1) = "N" Or _
Mid(vnstr, k - 1, 1) = "U" Or Mid(vnstr, k - 1, 1) = "R" Or Mid(vnstr, k - 1, 1) = "S" Or _
Mid(vnstr, k - 1, 1) = "T" Or Mid(vnstr, k - 1, 1) = "V" Or Mid(vnstr, k - 1, 1) = "X" Then
is_e = True
End If
End Function
Function is_e1(vnstr$, k!) As Boolean
C = Mid(vnstr, k, 1): On Error Resume Next
If Mid(vnstr, k + 1, 1) = "t" Then
is_e1 = False
ElseIf Mid(vnstr, k - 1, 1) = "B" Or Mid(vnstr, k - 1, 1) = "D" Or Mid(vnstr, k - 1, 1) = "Ñ" _
Or Mid(vnstr, k - 1, 1) = "G" Or Mid(vnstr, k - 1, 1) = "H" Or Mid(vnstr, k - 1, 1) = "K" Or _
Mid(vnstr, k - 1, 1) = "L" Or Mid(vnstr, k - 1, 1) = "M" Or Mid(vnstr, k - 1, 1) = "N" Or _
Mid(vnstr, k - 1, 1) = "U" Or Mid(vnstr, k - 1, 1) = "R" Or Mid(vnstr, k - 1, 1) = "S" Or _
Mid(vnstr, k - 1, 1) = "T" Or Mid(vnstr, k - 1, 1) = "V" Or Mid(vnstr, k - 1, 1) = "X" Then
is_e1 = True
End If
End Function
Function is_e2(vnstr$, k!) As Boolean
C = Mid(vnstr, k, 1): On Error Resume Next
If Mid(vnstr, k - 1, 1) = "o" Or Mid(vnstr, k + 1, 1) = "m" Or Mid(vnstr, k + 1, 1) = "n" Then
is_e2 = False
ElseIf Mid(vnstr, k - 1, 1) = "B" Or Mid(vnstr, k - 1, 1) = "D" Or Mid(vnstr, k - 1, 3) = "Ñ" _
Or Mid(vnstr, k - 1, 1) = "G" Or Mid(vnstr, k - 1, 1) = "H" Or Mid(vnstr, k - 1, 1) = "K" Or _
Mid(vnstr, k - 1, 1) = "L" Or Mid(vnstr, k - 1, 1) = "M" Or Mid(vnstr, k - 1, 1) = "N" Or _
Mid(vnstr, k - 1, 1) = "U" Or Mid(vnstr, k - 1, 1) = "R" Or Mid(vnstr, k - 1, 1) = "S" Or _
Mid(vnstr, k - 1, 1) = "T" Or Mid(vnstr, k - 1, 1) = "V" Or Mid(vnstr, k - 1, 1) = "X" Then
is_e2 = True
End If
End Function
Function is_e3(vnstr$, k!) As Boolean
C = Mid(vnstr, k, 1): On Error Resume Next
If Mid(vnstr, k - 1, 1) = "o" Or Mid(vnstr, k + 1, 1) = "m" Or Mid(vnstr, k + 1, 1) = "n" Then
is_e3 = False
ElseIf Mid(vnstr, k - 1, 1) = "B" Or Mid(vnstr, k - 1, 1) = "D" Or Mid(vnstr, k - 1, 1) = "Ñ" _
Or Mid(vnstr, k - 1, 1) = "H" Or Mid(vnstr, k - 1, 1) = "K" Or Mid(vnstr, k - 1, 1) = "L" _
Or Mid(vnstr, k - 1, 1) = "M" Or Mid(vnstr, k - 1, 1) = "N" Or Mid(vnstr, k - 1, 1) = "U" _
Or Mid(vnstr, k - 1, 1) = "S" Or Mid(vnstr, k - 1, 1) = "T" Or Mid(vnstr, k - 1, 1) = "V" Or _
Mid(vnstr, k - 1, 1) = "X" Then
is_e3 = True
End If
End Function
Function is_i(vnstr$, k!) As Boolean
vnstr = ChuThuong(vnstr): C = Mid(vnstr, k, 1): On Error Resume Next
If Mid(vnstr, k - 1, 4) = "bí n" Or Mid(vnstr, k - 3, 4) = "t bí" Or Mid(vnstr, k - 1, 1) = "c" Or _
Mid(vnstr, k - 2, 1) = "g" Or Mid(vnstr, k - 1, 1) = "®" Or Mid(vnstr, k - 1, 4) = "rí m" Or _
Mid(vnstr, k - 3, 4) = "g sí" Or Mid(vnstr, k - 1, 4) = "sí m" Or Mid(vnstr, k - 1, 1) = "" Then
is_i = False
ElseIf Mid(vnstr, k - 1, 4) = "bí t" Or Mid(vnstr, k - 1, 4) = "bí ñ" Or Mid(vnstr, k - 1, 3) = "bín" Or _
Mid(vnstr, k - 1, 4) = "dí d" Or Mid(vnstr, k - 1, 2) = "hí" Or Mid(vnstr, k - 1, 2) = "lí" Or _
Mid(vnstr, k - 1, 4) = "mí m" Or Mid(vnstr, k - 1, 4) = "t mí" Or Mid(vnstr, k + 1, 1) = "t" Or _
Mid(vnstr, k - 1, 4) = "ví v" Or Mid(vnstr, k - 1, 1) = "x" Or Mid(vnstr, k - 1, 3) = "tí t" Then
is_i = True
End If
End Function
Function is_i1(vnstr$, k!) As Boolean
vnstr = ChuThuong(vnstr): C = Mid(vnstr, k, 1): On Error Resume Next
If Mid(vnstr, k - 1, 4) = "bì n" Or Mid(vnstr, k - 1, 4) = "dì h" Or Mid(vnstr, k - 3, 1) = "c" Or _
Mid(vnstr, k - 1, 1) = "c" Or Mid(vnstr, k - 1, 1) = "®" Or Mid(vnstr, k - 3, 1) = "p" Or Mid(vnstr, k - 1, 1) = "g" _
Or Mid(vnstr, k - 1, 3) = "lì l" Or Mid(vnstr, k - 1, 3) = "lì m" Or Mid(vnstr, k - 4, 1) = "µ" Or _
Mid(vnstr, k - 1, 1) = "n" Or Mid(vnstr, k - 3, 4) = "n vì" Or Mid(vnstr, k - 2, 1) = "æ" _
Or Mid(vnstr, k - 2, 1) = "æ" Or Mid(vnstr, k - 1, 4) = "vì l" Then
is_i1 = False
ElseIf Mid(vnstr, k - 1, 1) = "h" Or Mid(vnstr, k - 1, 1) = "k" Or Mid(vnstr, k - 1, 1) = "u" Or _
Mid(vnstr, k - 1, 4) = "rì r" Or Mid(vnstr, k - 3, 4) = "m rì" Or Mid(vnstr, k - 1, 1) = "s" Or _
Mid(vnstr, k - 1, 1) = "t" Or Mid(vnstr, k - 1, 1) = "x" Then
is_i1 = True
End If
End Function
Function is_i2(vnstr$, k!) As Boolean
vnstr = ChuThuong(vnstr): C = Mid(vnstr, k, 1): On Error Resume Next
If Mid(vnstr, k - 1, 1) = "b" Or Mid(vnstr, k - 1, 1) = "c" Or Mid(vnstr, k - 3, 1) = "g" Or _
Mid(vnstr, k - 1, 1) = "g" Or Mid(vnstr, k - 1, 1) = "®" Or Mid(vnstr, k - 1, 1) = "m" Or _
Mid(vnstr, k - 3, 1) = "c næ" Or Mid(vnstr, k - 1, 1) = "s" Or Mid(vnstr, k - 4, 1) = "µ" _
Or Mid(vnstr, k - 1, 1) = "n" Or Mid(vnstr, k - 2, 1) = "æ" Or Mid(vnstr, k - 2, 1) = "æ" Or _
Mid(vnstr, k - 1, 4) = "vì l" Or Mid(vnstr, k - 3, 4) = "ô tæ" Or Mid(vnstr, k - 1, 4) = "t« t" Or _
Mid(vnstr, k - 1, 4) = "tæ c" Or Mid(vnstr, k - 1, 4) = "tæ q" Then
is_i2 = False
ElseIf Mid(vnstr, k - 1, 4) = "hæ m" Or Mid(vnstr, k - 1, 4) = "hæ h" Or Mid(vnstr, k - 1, 1) = "u" Or _
Mid(vnstr, k - 1, 4) = "ræ r" Or Mid(vnstr, k - 1, 4) = "sæ v" Or Mid(vnstr, k - 1, 4) = "sæ c" Or _
Mid(vnstr, k - 3, 4) = "c sæ " Or Mid(vnstr, k - 1, 1) = "t" Or Mid(vnstr, k - 1, 4) = "xæ t" Then
is_i2 = True
End If
End Function
Function is_i3(vnstr$, k!) As Boolean
vnstr = ChuThuong(vnstr): C = Mid(vnstr, k, 1): On Error Resume Next
If Mid(vnstr, k - 1, 1) = "®" Or Mid(vnstr, k - 1, 1) = "h" Or Mid(vnstr, k - 1, 1) = "g" _
Or Mid(vnstr, k + 1, 2) = "ng" Or Mid(vnstr, k - 1, 3) = "són" Or Mid(vnstr, k - 1, 1) = "t" _
Or Mid(vnstr, k - 1, 1) = "n" Or Mid(vnstr, k - 2, 1) = "æ" Or Mid(vnstr, k - 2, 1) = "æ" Or _
Mid(vnstr, k - 1, 4) = "vì l" Then
is_i3 = False
ElseIf Mid(vnstr, k - 1, 4) = "lónh" Or Mid(vnstr, k - 1, 1) = "u" Or Mid(vnstr, k - 1, 4) = "vó m" _
Or Mid(vnstr, k - 1, 4) = "vó ñ" Or Mid(vnstr, k - 1, 4) = "vó n" Or Mid(vnstr, k - 3, 4) = "c sæ " _
Or Mid(vnstr, k - 1, 1) = "b" Or Mid(vnstr, k - 1, 1) = "c" Or Mid(vnstr, k - 3, 1) = "d" Then
is_i3 = True
End If
End Function
Function is_i4(vnstr$, k!) As Boolean
vnstr = ChuThuong(vnstr): C = Mid(vnstr, k, 1): On Error Resume Next
If Mid(vnstr, k - 1, 1) = "®" Or Mid(vnstr, k - 1, 1) = "c" Or Mid(vnstr, k - 1, 1) = "b" Or _
Mid(vnstr, k - 1, 4) = "dòng" Or Mid(vnstr, k - 1, 1) = "m" Or Mid(vnstr, k + 1, 2) = "ng" Or _
Mid(vnstr, k - 1, 3) = "són" Or Mid(vnstr, k - 1, 1) = "t" Or Mid(vnstr, k - 1, 1) = "n" Or _
Mid(vnstr, k - 2, 1) = "æ" Or Mid(vnstr, k - 2, 1) = "æ" Or Mid(vnstr, k - 1, 4) = "vì l" Then
is_i4 = False
ElseIf Mid(vnstr, k - 1, 4) = "lònh" Or Mid(vnstr, k - 1, 1) = "u" Or Mid(vnstr, k - 1, 4) = "lònh" _
Or Mid(vnstr, k - 1, 4) = "vó ñ" Or Mid(vnstr, k - 1, 4) = "ròn" Or Mid(vnstr, k - 1, 4) = "vòng " _
Or Mid(vnstr, k - 1, 1) = "b" Or Mid(vnstr, k - 1, 1) = "k" Or Mid(vnstr, k - 3, 1) = "d" Or _
Mid(vnstr, k - 1, 3) = "xòn" Then
is_i4 = True
End If
End Function
Function AutoFont(vnstr$) As String
If IsUnicode(vnstr) = True Then
AutoFont = 1
ElseIf IsTCVN3(vnstr) = True Then
AutoFont = 2
ElseIf IsVni(vnstr) = True Then
AutoFont = 3
ElseIf FixVniTcvn3(vnstr) = True Then
AutoFont = 3
Else
AutoFont = 1
End If
End Function
Function CFont(Text$, ByVal Nguon As Byte, ByVal Dich As Byte) As String
'Haøm chuyeån font chöõ ña naêng
Dim iUNI As Variant, iTCVN As Variant, iVNI As Variant, iLatin As Variant
Dim sText$, tText$, istr$
Dim istr2$, i!, j!, Doup As Boolean
iUNI = Array(225, 224, 7843, 227, 7841, 226, 7845, 7847, 7849, 7851, 7853, 259, 7855, 7857, 7859, _
7861, 7863, 273, 233, 232, 7867, 7869, 7865, 234, 7871, 7873, 7875, 7877, 7879, 237, 236, 7881, 297, _
7883, 243, 242, 7887, 245, 7885, 244, 7889, 7891, 7893, 7895, 7897, 417, 7899, 7901, 7903, 7905, 7907, _
250, 249, 7911, 361, 7909, 432, 7913, 7915, 7917, 7919, 7921, 253, 7923, 7927, 7929, 7925, 193, 192, 7842, _
195, 7840, 194, 7844, 7846, 7848, 7850, 7852, 258, 7854, 7856, 7858, 7860, 7862, 272, 201, 200, 7866, 7868, _
7864, 202, 7870, 7872, 7874, 7876, 7878, 205, 204, 7880, 296, 7882, 211, 210, 7886, 213, 7884, 212, 7888, _
7890, 7892, 7894, 7896, 416, 7898, 7900, 7902, 7904, 7906, 218, 217, 7910, 360, 7908, 431, 7912, 7914, 7916, _
7918, 7920, 221, 7922, 7926, 7928, 7924)
iTCVN = Array("¸", "µ", "¶", "·", "¹", "©", "Ê", "Ç", "È", "É", "Ë", "¨", "¾", "»", "¼", "½", "Æ", "®", "Ð", _
"Ì", "Î", "Ï", "Ñ", "ª", "Õ", "Ò", "Ó", "Ô", "Ö", "Ý", "×", "Ø", "Ü", "Þ", "ã", "ß", "á", "â", "ä", "«", "è", _
"å", "æ", "ç", "é", "¬", "í", "ê", "ë", "ì", "î", "ó", "ï", "ñ", "ò", "ô", "", "ø", "õ", "ö", "÷", "ù", "ý", _
"ú", "û", "ü", "þ", "¸", "µ", "¶", "·", "¹", "¢", "Ê", "Ç", "È", "É", "Ë", "¡", "¾", "»", "¼", "½", "Æ", "§", _
"Ð", "Ì", "Î", "Ï", "Ñ", "£", "Õ", "Ò", "Ó", "Ô", "Ö", "Ý", "×", "Ø", "Ü", "Þ", "ã", "ß", "á", "â", "ä", "¤", _
"è", "å", "æ", "ç", "é", "¥", "í", "ê", "ë", "ì", "î", "ó", "ï", "ñ", "ò", "ô", "¦", "ø", "õ", "ö", "÷", "ù", _
"ý", "ú", "û", "ü", "þ")
iVNI = Array("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ä", "í", "ì", "æ", "ó", "ò", "où", "oø", _
"oû", "oõ", "oï", "oâ", "oá", "oà", "oå", "oã", "oä", "ô", "ôù", "ôø", "ôû", "ôõ", "ôï", "uù", "uø", "uû", "uõ", _
"uï", "ö", "öù", "öø", "öû", "öõ", "öï", "yù", "yø", "yû", "yõ", "î", "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Ä", "Í", "Ì", "Æ", "Ó", "Ò", "OÙ", "OØ", "OÛ", "OÕ", "OÏ", "OÂ", "OÁ", "OÀ", "OÅ", "OÃ", "OÄ", "Ô", _
"ÔÙ", "ÔØ", "ÔÛ", "ÔÕ", "ÔÏ", "UÙ", "UØ", "UÛ", "UÕ", "UÏ", "Ö", "ÖÙ", "ÖØ", "ÖÛ", "ÖÕ", "ÖÏ", "YÙ", "YØ", "YÛ", _
"YÕ", "Î")
iLatin = Array("a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "d", "e", "e", _
"e", "e", "e", "e", "e", "e", "e", "e", "e", "i", "i", "i", "i", "i", "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", "u", "y", "y", "y", "y", _
"y", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "D", "E", "E", "E", "E", _
"E", "E", "E", "E", "E", "E", "E", "I", "I", "I", "I", "I", "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", "U", "Y", "Y", "Y", "Y", "Y")
If Nguon = Dich Then CFont = Text: Exit Function
sText = Text
Select Case Nguon
Case 1
For i = 1 To Len(sText)
istr = Mid(sText, i, 1)
If AscW(istr) >= 192 Then
For j = 0 To UBound(iUNI)
If AscW(istr) = iUNI(j) Then
Select Case Dich
Case 2
istr = iTCVN(j)
Case 3
istr = iVNI(j)
Case 4
istr = iLatin(j)
End Select
Exit For
End If
Next
End If
CFont = CFont + istr
Next
Case 2
For i = 1 To Len(sText)
istr = Mid(sText, i, 1)
If AscW(istr) >= 161 And AscW(istr) <= 254 Then
For j = 0 To UBound(iTCVN)
If istr = iTCVN(j) Then
Select Case Dich
Case 1
istr = ChrW(iUNI(j))
Case 3
istr = iVNI(j)
Case 4
istr = iLatin(j)
End Select
Exit For
End If
Next
End If
CFont = CFont + istr
Next
Case 3
For i = 1 To Len(sText)
Doup = False
If i < Len(sText) Then
istr2 = Mid(sText, i + 1, 1)
If istr2 Like "[ùøûõïâáàåãäêéèúüë]" = True _
Or istr2 Like "[ÙØÛÕÏÂÁÀÅÃÄÊÉÈÚÜË]" = True Then
Doup = True
End If
End If
If Doup Then
istr = Mid(sText, i, 2)
Else
istr = Mid(sText, i, 1)
End If
For j = 0 To UBound(iVNI)
If istr = iVNI(j) Then
Select Case Dich
Case 1
istr = ChrW(iUNI(j))
Case 2
istr = iTCVN(j)
Case 4
istr = iLatin(j)
End Select
Exit For
End If
Next
CFont = CFont + istr
If Len(sText) > 2 And Doup = True Then
i = i + 1
ElseIf Len(sText) = 2 And Doup = True Then
Exit Function
End If
Next
End Select
End Function
Function ChangeText(Text$, Optional ChangeCase As Byte = 4) As String
'Haøm ñoåi kieåu chöõ ña naêng
Dim i%
Select Case ChangeCase
Case 0
ChangeText = Text
Case 1
ChangeText = UCase(Text)
Case 2
ChangeText = LCase(Text)
Case 3
If Len(Text) < 1 Then Exit Function
Text = LCase(Text)
For i = 1 To Len(Text) - 2
If Mid(Text, i, 1) Like "[.;?!]" Then
Mid(Text, i + 2, 1) = UCase(Mid(Text, i + 2, 1))
End If
Next i
ChangeText = UCase(Left(Text, 1)) + Mid(Text, 2, Len(Text) - 1)
Case 4
If Len(Text) < 1 Then Exit Function
Text = LCase(Text)
For i = 1 To Len(Text) - 1
If Mid(Text, i, 1) = " " Or Mid(Text, i, 1) = "." Then
Mid(Text, i + 1, 1) = UCase(Mid(Text, i + 1, 1))
End If
Next i
ChangeText = UCase(Left(Text, 1)) + Mid(Text, 2, Len(Text) - 1)
End Select
End Function
Public Function ChuThuong(HA As String)
Dim C As String, i!
For i = 1 To Len(HA)
C = Mid(HA, i, 1)
Select Case C
Case "A": C = "a": Case "¡": C = "¨": Case "¢": C = "©": Case "£": C = "ª": Case "¤": C = "«"
Case "¥": C = "¬": Case "¦": C = "": Case "§": C = "®": Case "B": C = "b": Case "C": C = "c"
Case "D": C = "d": Case "E": C = "e": Case "F": C = "f": Case "G": C = "g": Case "H": C = "h"
Case "I": C = "i": Case "J": C = "j": Case "K": C = "k": Case "L": C = "l": Case "M": C = "m"
Case "N": C = "n": Case "O": C = "o": Case "P": C = "p": Case "Q": C = "q": Case "R": C = "r"
Case "S": C = "s": Case "T": C = "t": Case "U": C = "u": Case "V": C = "v": Case "W": C = "w"
Case "X": C = "x": Case "Y": C = "y": Case "Z": C = "z": 'Case "É": c = "é"
End Select
ChuThuong = ChuThuong + C
Next i
End Function
Function VniTcvn3(ByVal sToConvert$) As String
'Haøm chuyeån töø font Vni sang TCVN3
Dim arrOutput() As Variant
Dim arrInput() As Variant
Dim sResult$, sTam$, i!, j!, bFound!
If Len(sToConvert) <= 0 Then
Exit Function
End If
arrInput = Array("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ä", "ì", "í", "æ", "ó", "ò", "oø", "où", "oû", "oõ", "oï", "oâ", "oà", "oá", "oå", "oã", "oä", "ô", "ôø", "ôù", "ôû", "ôõ", "ôï", "uø", "uù", "uû", "uõ", "uï", "ö", "öø", "öù", "öû", "öõ", "öï", "yø", "yù", "yû", "yõ", "î", "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Ä", "Ì", "Í", "Æ", "Ó", "Ò", "OØ", "OÙ", "OÛ", "OÕ", "OÏ", "OÂ", "OÀ", "OÁ", "OÅ", "OÃ", "OÄ", "Ô", "ÔØ", "ÔÙ", "ÔÛ", "ÔÕ", "ÔÏ", "UØ", "UÙ", "UÛ", "UÕ", "UÏ", "Ö", "ÖØ", "ÖÙ", "ÖÛ", "ÖÕ", "ÖÏ", "YØ", "YÙ", "YÛ", "YÕ", "Î")
arrOutput = Array("µ", "¸", "¶", "·", "¹", "¨", "»", "¾", "¼", "½", "Æ", "©", "Ç", "Ê", "È", "É", "Ë", "®", "Ì", "Ð", "Î", "Ï", "Ñ", "ª", "Ò", "Õ", "Ó", "Ô", "Ö", "×", "Ý", "Ø", "Ü", "Þ", "ß", "ã", "á", "â", "ä", "«", "å", "è", "æ", "ç", "é", "¬", "ê", "í", "ë", "ì", "î", "ï", "ó", "ñ", "ò", "ô", "", "õ", "ø", "ö", "÷", "ù", "ú", "ý", "û", "ü", "þ", "µ", "¸", "¶", "·", "¹", "¡", "»", "¾", "¼", "½", "Æ", "¢", "Ç", "Ê", "È", "É", "Ë", "§", "Ì", "Ð", "Î", "Ï", "Ñ", "£", "Ò", "Õ", "Ó", "Ô", "Ö", "×", "Ý", "Ø", "Ü", "Þ", "ß", "ã", "á", "â", "ä", "¤", "å", "è", "æ", "ç", "é", "¥", "ê", "í", "ë", "ì", "î", "ï", "ó", "ñ", "ò", "ô", "¦", "õ", "ø", "ö", "÷", "ù", "ú", "ý", "û", "ü", "þ")
bFound = 1
sResult = CStr(sToConvert)
Restart:
For i = bFound To Len(sResult)
bFound = False
For j = UBound(arrInput) To LBound(arrInput) Step -1
If (StrComp(arrInput(j), Mid(sResult, i, Len(arrInput(j))), vbTextCompare) = 0) And (StrComp(Left(arrInput(j), 1), Mid(sResult, i, 1), vbBinaryCompare) = 0) Then
sTam = Left(sResult, i - 1) & arrOutput(j) & Mid(sResult, i + Len(arrInput(j)))
sResult = sTam
bFound = i + Len(arrOutput(j))
GoTo Restart
Exit For
End If
Next j
Next i
VniTcvn3 = sResult
End Function
Function Tcvn3Vni(ByVal sToConvert$) As String
'Haøm chuyeån töø font TCVN3 sang Vni
Dim arrOutput() As Variant
Dim arrInput() As Variant
Dim sResult$, sTam$, i!, j!, bFound!
If Len(sToConvert) <= 0 Then
Exit Function
End If
arrInput = Array("µ", "¸", "¶", "·", "¹", "¨", "»", "¾", "¼", "½", "Æ", "©", "Ç", "Ê", "È", "É", "Ë", "®", "Ì", "Ð", "Î", "Ï", "Ñ", "ª", "Ò", "Õ", "Ó", "Ô", "Ö", "×", "Ý", "Ø", "Ü", "Þ", "ß", "ã", "á", "â", "ä", "«", "å", "è", "æ", "ç", "é", "¬", "ê", "í", "ë", "ì", "î", "ï", "ó", "ñ", "ò", "ô", "", "õ", "ø", "ö", "÷", "ù", "ú", "ý", "û", "ü", "þ", "µ", "¸", "¶", "·", "¹", "¡", "»", "¾", "¼", "½", "Æ", "¢", "Ç", "Ê", "È", "É", "Ë", "§", "Ì", "Ð", "Î", "Ï", "Ñ", "£", "Ò", "Õ", "Ó", "Ô", "Ö", "×", "Ý", "Ø", "Ü", "Þ", "ß", "ã", "á", "â", "ä", "¤", "å", "è", "æ", "ç", "é", "¥", "ê", "í", "ë", "ì", "î", "ï", "ó", "ñ", "ò", "ô", "¦", "õ", "ø", "ö", "÷", "ù", "ú", "ý", "û", "ü", "þ")
arrOutput = Array("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ä", "ì", "í", "æ", "ó", "ò", "oø", "où", "oû", "oõ", "oï", "oâ", "oà", "oá", "oå", "oã", "oä", "ô", "ôø", "ôù", "ôû", "ôõ", "ôï", "uø", "uù", "uû", "uõ", "uï", "ö", "öø", "öù", "öû", "öõ", "öï", "yø", "yù", "yû", "yõ", "î", "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Ä", "Ì", "Í", "Æ", "Ó", "Ò", "OØ", "OÙ", "OÛ", "OÕ", "OÏ", "OÂ", "OÀ", "OÁ", "OÅ", "OÃ", "OÄ", "Ô", "ÔØ", "ÔÙ", "ÔÛ", "ÔÕ", "ÔÏ", "UØ", "UÙ", "UÛ", "UÕ", "UÏ", "Ö", "ÖØ", "ÖÙ", "ÖÛ", "ÖÕ", "ÖÏ", "YØ", "YÙ", "YÛ", "YÕ", "Î")
bFound = 1
sResult = CStr(sToConvert)
Restart:
For i = bFound To Len(sResult)
bFound = False
For j = UBound(arrInput) To LBound(arrInput) Step -1
If (StrComp(arrInput(j), Mid(sResult, i, Len(arrInput(j))), vbTextCompare) = 0) And (StrComp(Left(arrInput(j), 1), Mid(sResult, i, 1), vbBinaryCompare) = 0) Then
sTam = Left(sResult, i - 1) & arrOutput(j) & Mid(sResult, i + Len(arrInput(j)))
sResult = sTam
bFound = i + Len(arrOutput(j))
GoTo Restart
Exit For
End If
Next j
Next i
Tcvn3Vni = sResult
End Function
Function UniVni(ByVal sToConvert$) As String
'Haøm chuyeån töø font Unicode sang Vni
Dim arrOutput() As Variant
Dim arrInput() As Variant
Dim sResult$, sTam$, i!, j!, bFound!
If Len(sToConvert) <= 0 Then
Exit Function
End If
arrInput = Array(ChrW$(224), ChrW$(225), ChrW$(7843), ChrW$(227), ChrW$(7841), ChrW$(259), ChrW$(7857), ChrW$(7855), ChrW$(7859), ChrW$(7861), ChrW$(7863), ChrW$(226), ChrW$(7847), ChrW$(7845), ChrW$(7849), ChrW$(7851), ChrW$(7853), ChrW$(273), ChrW$(232), ChrW$(233), ChrW$(7867), ChrW$(7869), ChrW$(7865), ChrW$(234), ChrW$(7873), ChrW$(7871), ChrW$(7875), ChrW$(7877), ChrW$(7879), ChrW$(236), ChrW$(237), ChrW$(7881), ChrW$(297), ChrW$(7883), ChrW$(242), ChrW$(243), ChrW$(7887), ChrW$(245), ChrW$(7885), ChrW$(244), ChrW$(7891), ChrW$(7889), ChrW$(7893), _
ChrW$(7895), ChrW$(7897), ChrW$(417), ChrW$(7901), ChrW$(7899), ChrW$(7903), ChrW$(7905), ChrW$(7907), ChrW$(249), ChrW$(250), ChrW$(7911), ChrW$(361), ChrW$(7909), ChrW$(432), ChrW$(7915), ChrW$(7913), ChrW$(7917), ChrW$(7919), ChrW$(7921), ChrW$(7923), ChrW$(253), ChrW$(7927), ChrW$(7929), ChrW$(7925), ChrW$(192), ChrW$(193), ChrW$(7842), ChrW$(195), ChrW$(7840), ChrW$(258), ChrW$(7856), ChrW$(7854), ChrW$(7858), ChrW$(7860), ChrW$(7862), ChrW$(194), ChrW$(7846), ChrW$(7844), ChrW$(7848), ChrW$(7850), ChrW$(7852), ChrW$(272), ChrW$(200), ChrW$(201), ChrW$(7866), _
ChrW$(7868), ChrW$(7864), ChrW$(202), ChrW$(7872), ChrW$(7870), ChrW$(7874), ChrW$(7876), ChrW$(7878), ChrW$(204), ChrW$(205), ChrW$(7880), ChrW$(296), ChrW$(7882), ChrW$(210), ChrW$(211), ChrW$(7886), ChrW$(213), ChrW$(7884), ChrW$(212), ChrW$(7890), ChrW$(7888), ChrW$(7892), ChrW$(7894), ChrW$(7896), ChrW$(416), ChrW$(7900), ChrW$(7898), ChrW$(7902), ChrW$(7904), ChrW$(7906), ChrW$(217), ChrW$(218), ChrW$(7910), ChrW$(360), ChrW$(7908), ChrW$(431), ChrW$(7914), ChrW$(7912), ChrW$(7916), ChrW$(7918), ChrW$(7920), ChrW$(7922), ChrW$(221), ChrW$(7926), ChrW$(7928), ChrW$(7924))
arrOutput = Array("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ä", "ì", "í", "æ", "ó", "ò", "oø", "où", "oû", "oõ", "oï", "oâ", "oà", "oá", "oå", "oã", "oä", "ô", "ôø", "ôù", "ôû", "ôõ", "ôï", "uø", "uù", "uû", "uõ", "uï", "ö", "öø", "öù", "öû", "öõ", "öï", "yø", "yù", "yû", "yõ", "î", "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Ä", "Ì", "Í", "Æ", "Ó", "Ò", "OØ", "OÙ", "OÛ", "OÕ", "OÏ", "OÂ", "OÀ", "OÁ", "OÅ", "OÃ", "OÄ", "Ô", "ÔØ", "ÔÙ", "ÔÛ", "ÔÕ", "ÔÏ", "UØ", "UÙ", "UÛ", "UÕ", "UÏ", "Ö", "ÖØ", "ÖÙ", "ÖÛ", "ÖÕ", "ÖÏ", "YØ", "YÙ", "YÛ", "YÕ", "Î")
bFound = 1
sResult = CStr(sToConvert)
Restart:
For i = bFound To Len(sResult)
bFound = False
For j = UBound(arrInput) To LBound(arrInput) Step -1
If (StrComp(arrInput(j), Mid(sResult, i, Len(arrInput(j))), vbTextCompare) = 0) And (StrComp(Left(arrInput(j), 1), Mid(sResult, i, 1), vbBinaryCompare) = 0) Then
sTam = Left(sResult, i - 1) & arrOutput(j) & Mid(sResult, i + Len(arrInput(j)))
sResult = sTam
bFound = i + Len(arrOutput(j))
GoTo Restart
Exit For
End If
Next j
Next i
UniVni = sResult
End Function
Function VniUni(ByVal sToConvert$) As String
'Haøm chuyeån töø font Vni sang Unicode
Dim arrOutput() As Variant
Dim arrInput() As Variant
Dim sResult$, sTam$, i!, j!, bFound!
If Len(sToConvert) <= 0 Then
Exit Function
End If
arrInput = Array("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ä", "ì", "í", "æ", "ó", "ò", "oø", "où", "oû", "oõ", "oï", "oâ", "oà", "oá", "oå", "oã", "oä", "ô", "ôø", "ôù", "ôû", "ôõ", "ôï", "uø", "uù", "uû", "uõ", "uï", "ö", "öø", "öù", "öû", "öõ", "öï", "yø", "yù", "yû", "yõ", "î", "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Ä", "Ì", "Í", "Æ", "Ó", "Ò", "OØ", "OÙ", "OÛ", "OÕ", "OÏ", "OÂ", "OÀ", "OÁ", "OÅ", "OÃ", "OÄ", "Ô", "ÔØ", "ÔÙ", "ÔÛ", "ÔÕ", "ÔÏ", "UØ", "UÙ", "UÛ", "UÕ", "UÏ", "Ö", "ÖØ", "ÖÙ", "ÖÛ", "ÖÕ", "ÖÏ", "YØ", "YÙ", "YÛ", "YÕ", "Î")
arrOutput = Array(ChrW$(224), ChrW$(225), ChrW$(7843), ChrW$(227), ChrW$(7841), ChrW$(259), ChrW$(7857), ChrW$(7855), ChrW$(7859), ChrW$(7861), ChrW$(7863), ChrW$(226), ChrW$(7847), ChrW$(7845), ChrW$(7849), ChrW$(7851), ChrW$(7853), ChrW$(273), ChrW$(232), ChrW$(233), ChrW$(7867), ChrW$(7869), ChrW$(7865), ChrW$(234), ChrW$(7873), ChrW$(7871), ChrW$(7875), ChrW$(7877), ChrW$(7879), ChrW$(236), ChrW$(237), ChrW$(7881), ChrW$(297), ChrW$(7883), ChrW$(242), ChrW$(243), ChrW$(7887), ChrW$(245), ChrW$(7885), ChrW$(244), ChrW$(7891), ChrW$(7889), ChrW$(7893), _
ChrW$(7895), ChrW$(7897), ChrW$(417), ChrW$(7901), ChrW$(7899), ChrW$(7903), ChrW$(7905), ChrW$(7907), ChrW$(249), ChrW$(250), ChrW$(7911), ChrW$(361), ChrW$(7909), ChrW$(432), ChrW$(7915), ChrW$(7913), ChrW$(7917), ChrW$(7919), ChrW$(7921), ChrW$(7923), ChrW$(253), ChrW$(7927), ChrW$(7929), ChrW$(7925), ChrW$(192), ChrW$(193), ChrW$(7842), ChrW$(195), ChrW$(7840), ChrW$(258), ChrW$(7856), ChrW$(7854), ChrW$(7858), ChrW$(7860), ChrW$(7862), ChrW$(194), ChrW$(7846), ChrW$(7844), ChrW$(7848), ChrW$(7850), ChrW$(7852), ChrW$(272), ChrW$(200), ChrW$(201), ChrW$(7866), _
ChrW$(7868), ChrW$(7864), ChrW$(202), ChrW$(7872), ChrW$(7870), ChrW$(7874), ChrW$(7876), ChrW$(7878), ChrW$(204), ChrW$(205), ChrW$(7880), ChrW$(296), ChrW$(7882), ChrW$(210), ChrW$(211), ChrW$(7886), ChrW$(213), ChrW$(7884), ChrW$(212), ChrW$(7890), ChrW$(7888), ChrW$(7892), ChrW$(7894), ChrW$(7896), ChrW$(416), ChrW$(7900), ChrW$(7898), ChrW$(7902), ChrW$(7904), ChrW$(7906), ChrW$(217), ChrW$(218), ChrW$(7910), ChrW$(360), ChrW$(7908), ChrW$(431), ChrW$(7914), ChrW$(7912), ChrW$(7916), ChrW$(7918), ChrW$(7920), ChrW$(7922), ChrW$(221), ChrW$(7926), ChrW$(7928), ChrW$(7924))
bFound = 1
sResult = CStr(sToConvert)
Restart:
For i = bFound To Len(sResult)
bFound = False
For j = UBound(arrInput) To LBound(arrInput) Step -1
If (StrComp(arrInput(j), Mid(sResult, i, Len(arrInput(j))), vbTextCompare) = 0) And (StrComp(Left(arrInput(j), 1), Mid(sResult, i, 1), vbBinaryCompare) = 0) Then
sTam = Left(sResult, i - 1) & arrOutput(j) & Mid(sResult, i + Len(arrInput(j)))
sResult = sTam
bFound = i + Len(arrOutput(j))
GoTo Restart
Exit For
End If
Next j
Next i
VniUni = sResult
End Function
Function UniTcvn3(ByVal sToConvert$) As String
'Haøm chuyeån töø font Unicode sang TCVN3
Dim arrOutput() As Variant
Dim arrInput() As Variant
Dim sResult$, sTam$, i!, j!, bFound!
If Len(sToConvert) <= 0 Then
Exit Function
End If
arrInput = Array(ChrW$(224), ChrW$(225), ChrW$(7843), ChrW$(227), ChrW$(7841), ChrW$(259), ChrW$(7857), ChrW$(7855), ChrW$(7859), ChrW$(7861), ChrW$(7863), ChrW$(226), ChrW$(7847), ChrW$(7845), ChrW$(7849), ChrW$(7851), ChrW$(7853), ChrW$(273), ChrW$(232), ChrW$(233), ChrW$(7867), ChrW$(7869), ChrW$(7865), ChrW$(234), ChrW$(7873), ChrW$(7871), ChrW$(7875), ChrW$(7877), ChrW$(7879), ChrW$(236), ChrW$(237), ChrW$(7881), ChrW$(297), ChrW$(7883), ChrW$(242), ChrW$(243), ChrW$(7887), ChrW$(245), ChrW$(7885), ChrW$(244), ChrW$(7891), ChrW$(7889), ChrW$(7893), _
ChrW$(7895), ChrW$(7897), ChrW$(417), ChrW$(7901), ChrW$(7899), ChrW$(7903), ChrW$(7905), ChrW$(7907), ChrW$(249), ChrW$(250), ChrW$(7911), ChrW$(361), ChrW$(7909), ChrW$(432), ChrW$(7915), ChrW$(7913), ChrW$(7917), ChrW$(7919), ChrW$(7921), ChrW$(7923), ChrW$(253), ChrW$(7927), ChrW$(7929), ChrW$(7925), ChrW$(192), ChrW$(193), ChrW$(7842), ChrW$(195), ChrW$(7840), ChrW$(258), ChrW$(7856), ChrW$(7854), ChrW$(7858), ChrW$(7860), ChrW$(7862), ChrW$(194), ChrW$(7846), ChrW$(7844), ChrW$(7848), ChrW$(7850), ChrW$(7852), ChrW$(272), ChrW$(200), ChrW$(201), ChrW$(7866), _
ChrW$(7868), ChrW$(7864), ChrW$(202), ChrW$(7872), ChrW$(7870), ChrW$(7874), ChrW$(7876), ChrW$(7878), ChrW$(204), ChrW$(205), ChrW$(7880), ChrW$(296), ChrW$(7882), ChrW$(210), ChrW$(211), ChrW$(7886), ChrW$(213), ChrW$(7884), ChrW$(212), ChrW$(7890), ChrW$(7888), ChrW$(7892), ChrW$(7894), ChrW$(7896), ChrW$(416), ChrW$(7900), ChrW$(7898), ChrW$(7902), ChrW$(7904), ChrW$(7906), ChrW$(217), ChrW$(218), ChrW$(7910), ChrW$(360), ChrW$(7908), ChrW$(431), ChrW$(7914), ChrW$(7912), ChrW$(7916), ChrW$(7918), ChrW$(7920), ChrW$(7922), ChrW$(221), ChrW$(7926), ChrW$(7928), ChrW$(7924))
arrOutput = Array("µ", "¸", "¶", "·", "¹", "¨", "»", "¾", "¼", "½", "Æ", "©", "Ç", "Ê", "È", "É", "Ë", "®", "Ì", "Ð", "Î", "Ï", "Ñ", "ª", "Ò", "Õ", "Ó", "Ô", "Ö", "×", "Ý", "Ø", "Ü", "Þ", "ß", "ã", "á", "â", "ä", "«", "å", "è", "æ", "ç", "é", "¬", "ê", "í", "ë", "ì", "î", "ï", "ó", "ñ", "ò", "ô", "", "õ", "ø", "ö", "÷", "ù", "ú", "ý", "û", "ü", "þ", "µ", "¸", "¶", "·", "¹", "¡", "»", "¾", "¼", "½", "Æ", "¢", "Ç", "Ê", "È", "É", "Ë", "§", "Ì", "Ð", "Î", "Ï", "Ñ", "£", "Ò", "Õ", "Ó", "Ô", "Ö", "×", "Ý", "Ø", "Ü", "Þ", "ß", "ã", "á", "â", "ä", "¤", "å", "è", "æ", "ç", "é", "¥", "ê", "í", "ë", "ì", "î", "ï", "ó", "ñ", "ò", "ô", "¦", "õ", "ø", "ö", "÷", "ù", "ú", "ý", "û", "ü", "þ")
bFound = 1
sResult = CStr(sToConvert)
Restart:
For i = bFound To Len(sResult)
bFound = False
For j = UBound(arrInput) To LBound(arrInput) Step -1
If (StrComp(arrInput(j), Mid(sResult, i, Len(arrInput(j))), vbTextCompare) = 0) And (StrComp(Left(arrInput(j), 1), Mid(sResult, i, 1), vbBinaryCompare) = 0) Then
sTam = Left(sResult, i - 1) & arrOutput(j) & Mid(sResult, i + Len(arrInput(j)))
sResult = sTam
bFound = i + Len(arrOutput(j))
GoTo Restart
Exit For
End If
Next j
Next i
UniTcvn3 = sResult
End Function
Function Tcvn3Uni(ByVal sToConvert$) As String
'Haøm chuyeån töø font TCVN3 sang Unicode
Dim i&, arrUNI() As String, sUni$, arrInput$, UNI$, arrOutput$
arrInput = "¸µ¶·¹¨¾»¼½Æ©ÊÇÈÉË??ÎÏѪ??ÓÔÖ?×ØÜ??ßáâä«èåæçé¬íêë?îóïñ?ôø?ö÷ù?úûü?®¸µ¶·¹¡¾»¼½Æ¢ÊÇÈÉË??ÎÏÑ£??ÓÔÖ?×ØÜ??ßáâä¤èåæçé¥íêë?îóïñ?ô¦ø?ö÷ù?úûü?§"
arrOutput = "225,224,7843,227,7841,259,7855,7857,7859,7861,7863,226,7845,7847,7849,7851,7853,233,232,7867,7869,7865,234,7871,7873,7875,7877,7879,237,236,7881,297,7883,243,242,7887,245,7885,244,7889,7891,7893,7895,7897,417,7899,7901,7903,7905,7907,250,249,7911,361,7909,432,7913,7915,7917,7919,7921,253,7923,7927,7929,7925,273,225,224,7843,227,7841,258,7855,7857,7859,7861,7863,194,7845,7847,7849,7851,7853,233,232,7867,7869,7865,202,7871,7873,7875,7877,7879,237,236,7881,297,7883,243,242,7887,245,7885,212,7889,7891,7893,7895,7897,416,7899,7901,7903,7905,7907,250,249,7911,361,7909,431,7913,7915,7917,7919,7921,253,7923,7927,7929,7925,272"
arrUNI = Split(arrOutput, ",")
For i = 1 To Len(sToConvert)
If InStr(arrInput, Mid(sToConvert, i, 1)) > 0 Then
sUni = sUni & ChrW(arrUNI(InStr(arrInput, Mid(sToConvert, i, 1)) - 1))
Else
sUni = sUni & Mid(sToConvert, i, 1)
End If
Next
Tcvn3Uni = sUni
End Function
Function Tcvn3Uni_2(Text$) As String
Dim iUNI As Variant, iTCVN As Variant, sText$
Dim i!, j!, istr$
iUNI = Array(225, 224, 7843, 227, 7841, 226, 7845, 7847, 7849, 7851, 7853, 259, 7855, 7857, 7859, _
7861, 7863, 273, 233, 232, 7867, 7869, 7865, 234, 7871, 7873, 7875, 7877, 7879, 237, 236, 7881, 297, _
7883, 243, 242, 7887, 245, 7885, 244, 7889, 7891, 7893, 7895, 7897, 417, 7899, 7901, 7903, 7905, 7907, _
250, 249, 7911, 361, 7909, 432, 7913, 7915, 7917, 7919, 7921, 253, 7923, 7927, 7929, 7925, 193, 192, 7842, _
195, 7840, 194, 7844, 7846, 7848, 7850, 7852, 258, 7854, 7856, 7858, 7860, 7862, 272, 201, 200, 7866, 7868, _
7864, 202, 7870, 7872, 7874, 7876, 7878, 205, 204, 7880, 296, 7882, 211, 210, 7886, 213, 7884, 212, 7888, _
7890, 7892, 7894, 7896, 416, 7898, 7900, 7902, 7904, 7906, 218, 217, 7910, 360, 7908, 431, 7912, 7914, 7916, _
7918, 7920, 221, 7922, 7926, 7928, 7924)
iTCVN = Array("¸", "µ", "¶", "·", "¹", "©", "Ê", "Ç", "È", "É", "Ë", "¨", "¾", "»", "¼", "½", "Æ", "®", "Ð", _
"Ì", "Î", "Ï", "Ñ", "ª", "Õ", "Ò", "Ó", "Ô", "Ö", "Ý", "×", "Ø", "Ü", "Þ", "ã", "ß", "á", "â", "ä", "«", "è", _
"å", "æ", "ç", "é", "¬", "í", "ê", "ë", "ì", "î", "ó", "ï", "ñ", "ò", "ô", "", "ø", "õ", "ö", "÷", "ù", "ý", _
"ú", "û", "ü", "þ", "¸", "µ", "¶", "·", "¹", "¢", "Ê", "Ç", "È", "É", "Ë", "¡", "¾", "»", "¼", "½", "Æ", "§", _
"Ð", "Ì", "Î", "Ï", "Ñ", "£", "Õ", "Ò", "Ó", "Ô", "Ö", "Ý", "×", "Ø", "Ü", "Þ", "ã", "ß", "á", "â", "ä", "¤", _
"è", "å", "æ", "ç", "é", "¥", "í", "ê", "ë", "ì", "î", "ó", "ï", "ñ", "ò", "ô", "¦", "ø", "õ", "ö", "÷", "ù", _
"ý", "ú", "û", "ü", "þ")
sText = Text
For i = 1 To Len(sText)
istr = Mid(sText, i, 1)
If AscW(istr) >= 161 And AscW(istr) <= 254 Then
For j = 0 To UBound(iTCVN)
If istr = iTCVN(j) Then istr = ChrW(iUNI(j)): Exit For
Next
End If
Tcvn3Uni_2 = Tcvn3Uni_2 + istr
Next
End Function
Function UniVba(TxtUni As String) As String
'Chuyeån Unicode thaønh Charw code
If TxtUni = "" Then
UniVba = """"""
Else
TxtUni = TxtUni & " "
If AscW(Left(TxtUni, 1)) < 256 Then
UniVba = """"
For n = 1 To Len(TxtUni) - 1
uni1 = Mid(TxtUni, n, 1)
uni2 = AscW(Mid(TxtUni, n + 1, 1))
If AscW(uni1) > 255 And uni2 > 255 Then
UniVba = UniVba & "ChrW(" & AscW(uni1) & ") & "
ElseIf AscW(uni1) > 255 And uni2 < 256 Then
UniVba = UniVba & "ChrW(" & AscW(uni1) & ") & """
ElseIf AscW(uni1) < 256 And uni2 > 255 Then
UniVba = UniVba & uni1 & """ & "
Else
UniVba = UniVba & uni1
End If
Next
If Right(UniVba, 4) = " & """ Then
UniVba = Mid(UniVba, 1, Len(UniVba) - 4)
Else
UniVba = UniVba & """"
End If
End If
End If
End Function
Sub FontList(Obj As Object)
'Taïo danh saùch font chöõ cho combobox
Dim Wd As Object, FontID
Set Wd = CreateObject("Word.Application")
For Each FontID In Wd.FontNames
Obj.AddItem FontID
Next
Wd.Quit
Set Wd = Nothing
End Sub