Chuyển code mã hóa tiếng Việt thành số thành code chạy trong Word?

Liên hệ QC

Po_Pikachu

Po_pikachu@ymail.com
Tham gia
29/4/08
Bài viết
2,209
Được thích
3,572
Nghề nghiệp
#VALUE!
Theo bài viết ở đây.
Trích tuanthuy13: Các bạn ơi giúp mình chuyển lại hay viết lại cái code mã hóa từ tiếng việt thành con số này qua bên VBA của word với: .... Cái này mình viết bên VB2005 Mong các bạn giúp đỡ.
Và đây là đoạn code:
PHP:
Function Gen(ByVal s As String) As String Dim rs As String Dim uniBytes As Byte() = Encoding.Unicode.GetBytes(s) For i As Integer = 0 To uniBytes.Length - 1 rs &= uniBytes(i).ToString() Next Return rs End Function
Không biết có bác nào quan tâm không? Thân.
 
Lần chỉnh sửa cuối:
PHP:
Trích tuanthuy13:
Các bạn ơi giúp mình chuyển lại hay viết lại cái code mã hóa từ tiếng việt _
        thành con số này qua bên VBA của word với:
....
Cái này mình viết bên VB2005
Mong các bạn giúp đỡ.

mã hóa từ tiếng việt thành con số là như thế nào ? Không hiểu ý của tuanthuy13.
 
Upvote 0
Vậy bác xem code có thấy gì quen không? Em chỉ bí ở chổ Encoding.Unicode.GetBytes(s) không hiểu ý của nó là sao? Và cũng không đưa được về VBA nên đành để mọi người cùng tham gia vậy! Thân.
 
Lần chỉnh sửa cuối:
Upvote 0
Vậy bác xem code có thấy gì quen không? Em chỉ bí ở chổ Encoding.Unicode.GetBytes(s) không hiểu ý của nó là sao? Và cũng không đưa được về VBA nên đành để mọi người cùng tham gia vậy!
Thân.
Hàm Encoding.Unicode.GetBytes(s) là hàm chuyển string s thành 1 array dạng byte với mỗi số là mã Unicode tương ứng của từng ký tự trong string s
VD chuỗi "abc" sẽ đổi thành (97, 0, 98, 0, 99, 0)
Tuy nhiên tôi không rõ đã có office version nào hỗ trợ unicode cho VBA chưa
Tôi đã thử nhiều cách nhưng không lấy được giá trị chữ tiếng Việt trong VBA
Tuy nhiên, để lấy code của 1 ô chỉ có 1 ký tự trong excel (giả sử là ô A1) và dùng hàm của excel thì có cách như sau:
=IF(LEFT(A1,1)=LEFTB(A1,1),CODE(A1),VLOOKUP(A1,table,2))
Hoặc là ký tự thứ i của ô A1 (nếu A1 có nhiều ký tự)
=IF(MID(A1,i)=MIDB(A1,2*i-1,1),CODE(MID(A1,i)),VLOOKUP(MID(A1,i),table,2))
Với table là bảng code của các ký tự tiếng Việt bạn phải tạo ra bằng hàm ToString()của VB2005 như sau:
á 225
à 224
ả 7843
ã 227
ạ 7841
....
 
Lần chỉnh sửa cuối:
Upvote 0
Chuyển mã ký tự sang mã Unicode!

Chia sẻ với các bạn cách làm hơi củ chuối một chút về việc chuyển và dịch mã tương ứng của Unicode nhé!
PHP:
Option Explicit

Function toCode(Target As Range, txtDelimiter As String)
    Dim myTxt As String, i As Long
    On Error Resume Next
    For i = 1 To Len(Target)
        myTxt = myTxt & txtDelimiter & AscW(Mid(Target, i, 1))
    Next
    toCode = Mid(myTxt, Len(txtDelimiter)+1)
End Function

Function FromCode(Target As Range, txtDelimiter As String)
    Dim myTxt As String, i As Long, myArr As Variant
    On Error Resume Next
    myArr = Split(Target, txtDelimiter)
    For i = 0 To UBound(myArr)
        myTxt = myTxt & ChrW(myArr(i))
    Next
    FromCode = myTxt
End Function
+ Hàm AscW (trả về mã Asc của ký tự)
+ Hàm ChrW (trả về ký tự từ mã Unicode tương ứng)
PHP:
Chẳng hạn:
Chúng ta là những người bạn-> _
    67/104/250/110/103/32/116/97/32/108/224/32/110/104/7919/110/103/32/110/103/432/ _
       7901/105/32/98/7841/110->Chúng ta là những người bạn
   '====================================
Cách viết là: =toCode(C5,"/") để chuyển sang mã ASCII Unicode
và ngược lại =FromCode(C5,"/")
Lưu ý là trong chuỗi gốc mà có dấu "/" thì hỏng - _
    dấu này là dấu phân tách chuỗi đích sau khi chuyển đổi.
Tuy nhiên tôi không rõ đã có office version nào hỗ trợ unicode cho VBA chưa
Tôi đã thử nhiều cách nhưng không lấy được giá trị chữ tiếng Việt trong VBA
Tôi không hiểu ý bạn lắm - bạn muốn nói là VBA IDE (Môi trường soạn thảo code VBA của Office) đã hỗ trợ chế độ soạn thảo Unicode chưa? - Nếu câu hỏi là thế thì trả lời là không.
Còn VBA IDE có hỗ trợ xử lý Unicode?
Câu trả lời là Có và việc xử lý chuỗi Unicode tương tự như với chuỗi ASCII thông thường. Tuy nhiên khi làm việc với lưu trữ và sao chép bộ nhớ thì cần phải dùng đến cái búa ByteString như bạn đã đề cập.
 
Lần chỉnh sửa cuối:
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom