Function VIQRConvert(ByVal Text As String, ByVal bMode As Boolean) As String
''Remark: - bMode = True <--> Convert Unicode to VIQR
'' - bMode = False <--> Convert VIQR to Unicode
Dim CharCode, viqrCode, i As Long, Tmp As String
On Error Resume Next
Tmp = Text
CharCode = Array(ChrW(7855), ChrW(7857), ChrW(7859), ChrW(7861), ChrW(7863), ChrW(7845), ChrW(7847), _
ChrW(7849), ChrW(7851), ChrW(7853), ChrW(7871), ChrW(7873), ChrW(7875), ChrW(7877), _
ChrW(7879), ChrW(7889), ChrW(7891), ChrW(7893), ChrW(7895), ChrW(7897), ChrW(7899), _
ChrW(7901), ChrW(7903), ChrW(7905), ChrW(7907), ChrW(7913), ChrW(7915), ChrW(7917), _
ChrW(7919), ChrW(7921), ChrW(225), ChrW(224), ChrW(7843), ChrW(227), ChrW(7841), _
ChrW(259), ChrW(226), ChrW(273), ChrW(233), ChrW(232), ChrW(7867), ChrW(7869), _
ChrW(7865), ChrW(234), ChrW(237), ChrW(236), ChrW(7881), ChrW(297), ChrW(7883), _
ChrW(243), ChrW(242), ChrW(7887), ChrW(245), ChrW(7885), ChrW(244), ChrW(417), _
ChrW(250), ChrW(249), ChrW(7911), ChrW(361), ChrW(7909), ChrW(432), ChrW(253), _
ChrW(7923), ChrW(7927), ChrW(7929), ChrW(7925))
viqrCode = Array("a('", "a(`", "a(?", "a(~", "a(.", "a^'", "a^`", "a^?", "a^~", "a^.", "e^'", _
"e^`", "e^?", "e^~", "e^.", "o^'", "o^`", "o^?", "o^~", "o^.", "o+'", "o+`", _
"o+?", "o+~", "o+.", "u+'", "u+`", "u+?", "u+~", "u+.", "a'", "a`", "a?", _
"a~", "a.", "a(", "a^", "dd", "e'", "e`", "e?", "e~", "e.", "e^", "i'", _
"i`", "i?", "i~", "i.", "o'", "o`", "o?", "o~", "o.", "o^", "o+", "u'", _
"u`", "u?", "u~", "u.", "u+", "y'", "y`", "y?", "y~", "y.")
For i = 0 To UBound(CharCode)
Tmp = Replace(Tmp, IIf(bMode, CharCode(i), viqrCode(i)), IIf(bMode, viqrCode(i), CharCode(i)))
Tmp = Replace(Tmp, UCase(IIf(bMode, CharCode(i), viqrCode(i))), UCase(IIf(bMode, viqrCode(i), CharCode(i))))
Next
VIQRConvert = Tmp
End Function