• Hàm chuyển chuỗi Unicode tiếng Việt thành Chuỗi mã Unicode trong VBA
  • RE: Hàm chuyển chuỗi Unicode tiếng Việt thành Chuỗi mã Unicode trong VBA

    Noname > 29-08-19, 03:57 PM

    Mình chuối vãi, Excel có hàm Hex2Dec để chuyển từ thập lục phân ra thập phân.
    Sau khi thấy mã code trong Character Map, qua Excel chuyển thành thập phân là được:
    = HEX2DEC(EA) => kết quả: 234

    Access thì có thể dùng hàm: CLng("&H+CodeHex ") với Codehex lấy được từ Character Map.
    Ví dụ: CLng("&HEA") =234
  • RE: Hàm chuyển chuỗi Unicode tiếng Việt thành Chuỗi mã Unicode trong VBA

    maidinhdan > 14-05-20, 02:15 PM

    Bổ sung Demo khắc phục lỗi không thể chuyển một số từ:
    [Thủ Thuật] [Demo-Phần 2] Chuyển chữ Uni to ChrW để hiện thông báo tiếng việt
    [Hình: DemohinhUnitoChrPhan2.png]
  • RE: Hàm chuyển chuỗi Unicode tiếng Việt thành Chuỗi mã Unicode trong VBA

    tranthanhan1962 > 10-06-23, 10:16 PM

    Tôi bị lỗi này mà xử lý mãi không xong. Tôi sử dụng bộ gõ telex của window 11. Khi sử dụng tool của Nonam thì nó dịch chữ [ợ] ra thành ChrW(7907). dùng MsgBoxUni để chuyển ra thông báo thì nó dịch  ChrW(7907) thành [ś]. vào word kiểm tra thì đúng là chữ [ợ] là  ChrW(7907) thật.Có khi nào  MsgBoxUni bị lỗi không nhỉ?
  • RE: Hàm chuyển chuỗi Unicode tiếng Việt thành Chuỗi mã Unicode trong VBA

    ongke0711 > 11-06-23, 09:57 AM

    (10-06-23, 10:16 PM)tranthanhan1962 Đã viết: Tôi bị lỗi này mà xử lý mãi không xong. Tôi sử dụng bộ gõ telex của window 11. Khi sử dụng tool của Nonam thì nó dịch chữ [ợ] ra thành ChrW(7907). dùng MsgBoxUni để chuyển ra thông báo thì nó dịch  ChrW(7907) thành [ś]. vào word kiểm tra thì đúng là chữ [ợ] là  ChrW(7907) thật.Có khi nào  MsgBoxUni bị lỗi không nhỉ?

    Anh dùng cái hàm MsgboxUni() này xem thử.

    Mã PHP:
    Option Explicit

    #If VBA7 Then
        Private Declare PtrSafe Function GetActiveWindow Lib "user32" () As LongPtr
        
    Public Declare PtrSafe Function MessageBoxW Lib "user32" _
                                        
    (ByVal hwnd As LongPtr_
                                        ByVal lpText 
    As LongPtr_
                                        ByVal lpCaption 
    As LongPtr_
                                        ByVal wType 
    As Long) As Long
    #Else
        Private Declare Function GetActiveWindow Lib "user32" () As Long
        
    Public Declare Function MessageBoxW Lib "user32" _
                                
    (ByVal hwnd As Long_
                                ByVal lpText 
    As Long_
                                ByVal lpCaption 
    As Long_
                                ByVal wType 
    As Long) As Long
    #End If

    Public Function MsgBoxUni(ByVal sMsgUni As StringOptional ByVal Buttons As VbMsgBoxStyle vbOKOnlyOptional ByVal sTitleUni As String "Thông báo") As VbMsgBoxResult
        MsgBoxUni 
    MessageBoxW(GetActiveWindowStrPtr(sMsgUni), StrPtr(sTitleUni), Buttons)
    End Function 
  • RE: Hàm chuyển chuỗi Unicode tiếng Việt thành Chuỗi mã Unicode trong VBA

    AnNguyen > 13-06-23, 08:51 AM

    (11-06-23, 09:57 AM)ongke0711 Đã viết:
    (10-06-23, 10:16 PM)tranthanhan1962 Đã viết: Tôi bị lỗi này mà xử lý mãi không xong. Tôi sử dụng bộ gõ telex của window 11. Khi sử dụng tool của Nonam thì nó dịch chữ [ợ] ra thành ChrW(7907). dùng MsgBoxUni để chuyển ra thông báo thì nó dịch  ChrW(7907) thành [ś]. vào word kiểm tra thì đúng là chữ [ợ] là  ChrW(7907) thật.Có khi nào  MsgBoxUni bị lỗi không nhỉ?

    Anh dùng cái hàm MsgboxUni() này xem thử.

    Mã PHP:
    Option Explicit

    #If VBA7 Then
        Private Declare PtrSafe Function GetActiveWindow Lib "user32" () As LongPtr
        
    Public Declare PtrSafe Function MessageBoxW Lib "user32" _
                                        
    (ByVal hwnd As LongPtr_
                                        ByVal lpText 
    As LongPtr_
                                        ByVal lpCaption 
    As LongPtr_
                                        ByVal wType 
    As Long) As Long
    #Else
        Private Declare Function GetActiveWindow Lib "user32" () As Long
        
    Public Declare Function MessageBoxW Lib "user32" _
                                
    (ByVal hwnd As Long_
                                ByVal lpText 
    As Long_
                                ByVal lpCaption 
    As Long_
                                ByVal wType 
    As Long) As Long
    #End If

    Public Function MsgBoxUni(ByVal sMsgUni As StringOptional ByVal Buttons As VbMsgBoxStyle vbOKOnlyOptional ByVal sTitleUni As String "Thông báo") As VbMsgBoxResult
        MsgBoxUni 
    MessageBoxW(GetActiveWindowStrPtr(sMsgUni), StrPtr(sTitleUni), Buttons)
    End Function 

    Em hiện tại cũng đang dùng hàm này anh ạ. 
    Nhưng có 1 vài máy mà dùng windown cũ hơn nó có vài ký tự lạ. còn lại ok hết.