hi a Nghĩa,
Mình định import vào Tool (hàm) để convert tự động !! Còn manual thì mình hiểu rồi !!!!
Unikey là chuẩn !!!
Bạn muốn hàm thì tôi cũng gửi tặng bạn một hàm convert Font đó cho bạn:
Chép vào module nhé!
[GPECODE=vb]Option Explicit'**********************************************************************
Public Enum FontStyles
NoMarksStyle = 0
UnicodeStyle = 1
VCP1258Style = 2
End Enum
'**********************************************************************
Private AllCaseArray As Variant
'**********************************************************************
Function FontConverter(ByVal ChuoiCanChuyenMa As String, _
ByVal MaNguon As FontStyles, _
ByVal MaDich As FontStyles) As String
'Cách dùng: Không dâ'u = 0, Unicode = 1, Vietnamese1258 = 2
If MaNguon < NoMarksStyle Or MaNguon > VCP1258Style _
Or MaDich < NoMarksStyle Or MaDich > VCP1258Style _
Or Trim(ChuoiCanChuyenMa) = "" Then Exit Function
If MaNguon = MaDich Or MaNguon = NoMarksStyle Then _
FontConverter = ChuoiCanChuyenMa: Exit Function
Dim i As Long, j As Long, Ubd As Long, LenChar As Long, Ch2b As Boolean, _
TransChar As String, inString1 As String, inString2 As String
If Not IsArray(AllCaseArray) Then Call FontSourceForConvert
TransChar = ChuoiCanChuyenMa: LenChar = Len(TransChar)
Ubd = 133 '' UBound(AllCaseArray(MaNguon)) = 133
Select Case MaNguon
Case UnicodeStyle
For i = 1 To LenChar
inString1 = Mid(TransChar, i, 1)
If AscW(inString1) >= 192 Then
For j = 0 To Ubd
If inString1 = AllCaseArray(MaNguon)(j) Then
inString1 = AllCaseArray(MaDich)(j)
Exit For
End If
Next
End If
FontConverter = FontConverter + inString1
Next
Case VCP1258Style
For i = 1 To LenChar
Ch2b = False
If i < LenChar Then
inString2 = Mid(TransChar, i + 1, 1)
If inString2 Like "[ìÌÒÞò]" = True Then Ch2b = True
End If
inString1 = Mid(TransChar, i, IIf(Ch2b, 2, 1))
For j = 0 To Ubd
If inString1 = AllCaseArray(MaNguon)(j) Then
inString1 = AllCaseArray(MaDich)(j)
Exit For
End If
Next
FontConverter = FontConverter + inString1
If Ch2b Then
If LenChar = 2 Then
Exit Function
ElseIf LenChar > 2 Then
i = i + 1
End If
End If
Next
End Select
End Function
Private Sub FontSourceForConvert()
Dim NoMarksCase(), UnicodeCase(), VCP1258Case()
NoMarksCase = 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")
UnicodeCase = Array(ChrW(225), ChrW(224), ChrW(7843), ChrW(227), ChrW(7841), ChrW(226), ChrW(7845), ChrW(7847), ChrW(7849), ChrW(7851), _
ChrW(7853), ChrW(259), ChrW(7855), ChrW(7857), ChrW(7859), ChrW(7861), ChrW(7863), ChrW(273), ChrW(233), _
ChrW(232), ChrW(7867), ChrW(7869), ChrW(7865), ChrW(234), ChrW(7871), ChrW(7873), ChrW(7875), ChrW(7877), ChrW(7879), _
ChrW(237), ChrW(236), ChrW(7881), ChrW(297), ChrW(7883), ChrW(243), ChrW(242), ChrW(7887), ChrW(245), _
ChrW(7885), ChrW(244), ChrW(7889), ChrW(7891), ChrW(7893), ChrW(7895), ChrW(7897), ChrW(417), ChrW(7899), ChrW(7901), _
ChrW(7903), ChrW(7905), ChrW(7907), ChrW(250), ChrW(249), ChrW(7911), ChrW(361), ChrW(7909), ChrW(432), _
ChrW(7913), ChrW(7915), ChrW(7917), ChrW(7919), ChrW(7921), ChrW(253), ChrW(7923), ChrW(7927), ChrW(7929), ChrW(7925), _
ChrW(193), ChrW(192), ChrW(7842), ChrW(195), ChrW(7840), ChrW(194), ChrW(7844), ChrW(7846), ChrW(7848), _
ChrW(7850), ChrW(7852), ChrW(258), ChrW(7854), ChrW(7856), ChrW(7858), ChrW(7860), ChrW(7862), ChrW(272), ChrW(201), _
ChrW(200), ChrW(7866), ChrW(7868), ChrW(7864), ChrW(202), ChrW(7870), ChrW(7872), ChrW(7874), ChrW(7876), _
ChrW(7878), ChrW(205), ChrW(204), ChrW(7880), ChrW(296), ChrW(7882), ChrW(211), ChrW(210), ChrW(7886), ChrW(213), _
ChrW(7884), ChrW(212), ChrW(7888), ChrW(7890), ChrW(7892), ChrW(7894), ChrW(7896), ChrW(416), ChrW(7898), ChrW(7900), _
ChrW(7902), ChrW(7904), ChrW(7906), ChrW(218), ChrW(217), ChrW(7910), ChrW(360), ChrW(7908), ChrW(431), ChrW(7912), _
ChrW(7914), ChrW(7916), ChrW(7918), ChrW(7920), ChrW(221), ChrW(7922), ChrW(7926), ChrW(7928), ChrW(7924))
VCP1258Case = Array("aì", "aÌ", "aÒ", "aÞ", "aò", "â", "âì", "âÌ", "âÒ", "âÞ", "âò", "ã", "ãì", "ãÌ", "ãÒ", "ãÞ", "ãò", "ð", "eì", _
"eÌ", "eÒ", "eÞ", "eò", "ê", "êì", "êÌ", "êÒ", "êÞ", "êò", "iì", "iÌ", "iÒ", "iÞ", "iò", "oì", "oÌ", "oÒ", "oÞ", _
"oò", "ô", "ôì", "ôÌ", "ôÒ", "ôÞ", "ôò", "õ", "õì", "õÌ", "õÒ", "õÞ", "õò", "uì", "uÌ", "uÒ", "uÞ", "uò", "ý", "ýì", _
"ýÌ", "ýÒ", "ýÞ", "ýò", "yì", "yÌ", "yÒ", "yÞ", "yò", "Aì", "AÌ", "AÒ", "AÞ", "Aò", "Â", "Âì", "ÂÌ", "ÂÒ", "ÂÞ", _
"Âò", "Ã", "Ãì", "ÃÌ", "ÃÒ", "ÃÞ", "Ãò", "Ð", "Eì", "EÌ", "EÒ", "EÞ", "Eò", "Ê", "Êì", "ÊÌ", "ÊÒ", "ÊÞ", "Êò", _
"Iì", "IÌ", "IÒ", "IÞ", "Iò", "Oì", "OÌ", "OÒ", "OÞ", "Oò", "Ô", "Ôì", "ÔÌ", "ÔÒ", "ÔÞ", "Ôò", "Õ", "Õì", "ÕÌ", _
"ÕÒ", "ÕÞ", "Õò", "Uì", "UÌ", "UÒ", "UÞ", "Uò", "Ý", "Ýì", "ÝÌ", "ÝÒ", "ÝÞ", "Ýò", "Yì", "YÌ", "YÒ", "YÞ", "Yò")
'MsgBox UBound(NoMarksCase) & "/" & UBound(UnicodeCase) & "/" & UBound(VCP1258Case) ''133/133/133
AllCaseArray = Array(NoMarksCase, UnicodeCase, VCP1258Case)
End Sub
[/GPECODE]