Xin giải pháp cho ASCII và Unicode !

Liên hệ QC

thinhminhhb

Thành viên mới
Tham gia
16/12/09
Bài viết
3
Được thích
2
Mình muốn viết 1 đoạn code để nó tự động điền vào ô trống một đoạn văn bản cho trước (do các báo cáo giống nhau. VD tên dưới chữ ký). Nhưng mình gặp vấn đề là nếu lưu dòng string đó sẵn rồi đem add vào ô thì sẽ gặp tình trạng lỗi font do xâu ký tự thuộc ASCII còn chữ hiển thị bên ngoài là Unicode.
VD: dòng chữ unicode là: Bùi Thịnh Minh
nhưng đem lưu vào string thì nó sẽ: Bu?i Thi?nh Minh hoặc buÌi thiònh minh.
Ai có giải pháp xin giúp đỡ !
 
Nếu viết một đoạn text dài bằng font unicode thì khá vất vả bạn ạ. Cách đơn giản hơn là bạn viết bằng font TCVN3, sau đó dùng 1 hàm chuyển sang font Unicode. Hàm này bạn tìm trong add-ins chuyển font, có trên diễn đàn đấy.
 
Upvote 0
Mình muốn viết 1 đoạn code để nó tự động điền vào ô trống một đoạn văn bản cho trước (do các báo cáo giống nhau. VD tên dưới chữ ký). Nhưng mình gặp vấn đề là nếu lưu dòng string đó sẵn rồi đem add vào ô thì sẽ gặp tình trạng lỗi font do xâu ký tự thuộc ASCII còn chữ hiển thị bên ngoài là Unicode.
VD: dòng chữ unicode là: Bùi Thịnh Minh
nhưng đem lưu vào string thì nó sẽ: Bu?i Thi?nh Minh hoặc buÌi thiònh minh.
Ai có giải pháp xin giúp đỡ !
Chưa hiểu ý bạn lắm! Bạn nói lưu chuổi Unicode vào string là vào đâu? Vào 1 file txt chăng?
Nếu đúng thế thì khi lưu, bạn phải chọn mục Encoding = UTF-8... Tiếp theo dùng chức năng Import External Data của Excel (trong menu Data) là có thể lấy nguyên chuổi đã lưu vào cell rồi
 
Upvote 0
Mình có một ý này nhờ các anh em cao thủ trong diễn đàn nghiên cứu. Việc ghi chuỗi unicode từ vba vào bảng tính thì hơi vất vả. Nhưng sao không có một hàm để chuyển chuỗi unicode dạng ascii sang unicode để ghi vào bảng tính nhỉ. Ví dụ hàm uni đã viết xong, để chuyển chuỗi "giải pháp" thì ta mã hóa thành chuỗi "giair phaps" và dùng =uni("giair phaps") --> "giải pháp"
 
Upvote 0
Mình có một ý này nhờ các anh em cao thủ trong diễn đàn nghiên cứu. Việc ghi chuỗi unicode từ vba vào bảng tính thì hơi vất vả. Nhưng sao không có một hàm để chuyển chuỗi unicode dạng ascii sang unicode để ghi vào bảng tính nhỉ. Ví dụ hàm uni đã viết xong, để chuyển chuỗi "giải pháp" thì ta mã hóa thành chuỗi "giair phaps" và dùng =uni("giair phaps") --> "giải pháp"
bạn dùng kiểu "ký sinh" là được. Mở 1 userform, trên đó có chứa 1 textbox, nhập vào textbox chữ "giải pháp", khi chuyển vào excel bạn gán userform.textbox.text là được.
 
Lần chỉnh sửa cuối:
Upvote 0
Hi jack nt.
Ý mình có hơi khác một chút. Ví dụ khi có hàm này, trong code VBA muốn ghi vào bảng tính chuỗi "giải pháp", thay vì phải tạo chuỗi unicode bằng hàm univba() (mình đã down ở diễn đàn) rồi copy chuỗi này vào trong code, thì ta chỉ cần dùng uni("giair phaps") trực tiếp.
Nhưng ý mình vậy thôi, nếu được, bạn nào mở topic mới để nghiên cứu còn topic này của bạn thinhminhhb không tiện để trao đổi điều này
 
Lần chỉnh sửa cuối:
Upvote 0
Hi thinhminhhb.
Mình down được đoạn code trên diễn dàn. Bạn tạo hàm như trong code. Và đây là cách mình làm. Bạn muốn đưa chuỗi "Bùi Thịnh Minh" vào code thì bạn làm như sau: Trong Excel Bạn nhập chuỗi "Bùi Thịnh Minh" (A1), B1=univba(a1). Bạn copy ô B1 dán vào code ví dụ:
s="Bùi Th" & ChrW(7883) & "nh Minh". Sau đó bạn có thể ghi vào bảng tính chuỗi này rồi.

PHP:
Function UniVba(ByVal TxtUni As String) As String
    If TxtUni = "" Then
        UniVba = """"""
    Else
        TxtUni = TxtUni & " "
        If AscW(Left(TxtUni, 1)) < 256 Then
            UniVba = """"
        End If
        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 Function
 
Chỉnh sửa lần cuối bởi điều hành viên:
Upvote 0
Web KT

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

Back
Top Bottom