VBA và Unicode

Liên hệ QC

levanduyet

Hãy để gió cuốn đi.
Thành viên danh dự
Tham gia
30/5/06
Bài viết
1,798
Được thích
4,706
Giới tính
Nam
Chào các bạn,
1, Làm thế nào để thể hiện chuỗi Unicode từ một textbox sang Listview?
2, Làm thế nào để lưu chuổi Unicode vào một file text
Và còn nhiều vấn đề về Unicode mà chúng ta gặp phải trong lập trình VBA.
Nếu chúng ta tham khảo tại http://www.vovisoft.com/VisualBasic/UnicodeDB.htm
Không biết có thể áp dụng cho Listview hay không?

Mong các bạn cùng thảo luận vấn đề này.


Lê Văn Duyệt
 
Đây đúng là vấn đề nan giải đấy. Theo nguyên tắc muốn hiển thị unicode ta phải sử dụng Microsoft Forms 2.0 tuy nhiên nó lại không có listview. Tuy nhiên chúng ta có thể mua một VB6 control listview hỗ trợ unicode của một bên thứ 3 để dùng cũng ok thôi mà.
Em cũng có 1 con đấy bác nào cần em up lên cho.

Kiến thức hạn hẹp mong các bác đừng chê cười
 
Upvote 0
ruadangyeu đã viết:
Đây đúng là vấn đề nan giải đấy. Theo nguyên tắc muốn hiển thị unicode ta phải sử dụng Microsoft Forms 2.0 tuy nhiên nó lại không có listview. Tuy nhiên chúng ta có thể mua một VB6 control listview hỗ trợ unicode của một bên thứ 3 để dùng cũng ok thôi mà.
Em cũng có 1 con đấy bác nào cần em up lên cho.

Kiến thức hạn hẹp mong các bác đừng chê cười
Có phải listview không?

Gởi cho tôi được k? Cám ơn nhiều.

LVD
 
Upvote 0
Để tối nhé

Các bác chờ em đến tối nhé
Bây giờ em không đem theo
Các bác mang về nghiên cứu nhé
 
Upvote 0
Google "uniListView"
Google "Unicode Listview"

Hope that helps!
 
Lần chỉnh sửa cuối:
Upvote 0
To: hai2hai,
Anh biết các tool này, nhưng vấn đề là chúng ta phải mua. Đó là lý do anh muốn đưa ra đây nhằm thảo luận và thực hiện được yêu cầu mà không phải dùng các tool đó. Anh nghĩ rằng hai2hai có nhiều kinh nghiệm về vấn đề này. Em có thể chia sẻ được không?

Lê Văn Duyệt
 
Upvote 0
Em nghĩ là anh chưa thử Search rồi anh Duyệt ạ. :)

Ở cái Search đầu tiên nó tìm ra trang CLB VB của Việt Nam. Trên đó mọi người đã share full sourcecode rồi còn gì.

Chính vì em tìm mọi thứ (cả free source code) trên mạng nên em mới guide line mọi người tìm trên mạng cho nhanh.

Trước kia em toàn hì hục viết ActiveXes nhưng giờ thì thôi rồi anh ạ. Bây giờ chủ yếu em tìm cách xây dựng bài toán là chính.

Ở trên mạng có 1 site chuyên về Unicode ActiveX đấy anh. Trên đó có 1 Tutorial về Unicode. Có lẽ anh sẽ tự tìm được qua Google thôi.
 
Upvote 0
hai2hai đã viết:
Em nghĩ là anh chưa thử Search rồi anh Duyệt ạ. :)

Ở cái Search đầu tiên nó tìm ra trang CLB VB của Việt Nam. Trên đó mọi người đã share full sourcecode rồi còn gì.

Chính vì em tìm mọi thứ (cả free source code) trên mạng nên em mới guide line mọi người tìm trên mạng cho nhanh.

Trước kia em toàn hì hục viết ActiveXes nhưng giờ thì thôi rồi anh ạ. Bây giờ chủ yếu em tìm cách xây dựng bài toán là chính.

Ở trên mạng có 1 site chuyên về Unicode ActiveX đấy anh. Trên đó có 1 Tutorial về Unicode. Có lẽ anh sẽ tự tìm được qua Google thôi.
Cám ơn hai2hai nhiều nhiều nhiều.

Lê Văn Duyệt
 
Upvote 0
gửi các bác

Bác thử con này xem thế nào
Em down về lâu lắm rồi nhưng chưa có cơ hội thử, hồi đó đọc một bài viết thấy hay thì down về thôi
 

File đính kèm

Upvote 0
ruadangyeu đã viết:
Bác thử con này xem thế nào
Em down về lâu lắm rồi nhưng chưa có cơ hội thử, hồi đó đọc một bài viết thấy hay thì down về thôi

Thì tất cả cái này đều ở trên mạng mà.

Cài của Rùa là lấy ở vbAccelerator.com

Khá nhiều người đã lấy code của các components trên đó (Free) để mông má lại vì các code trên đó để chạy được toàn phải nhờ cái SubClass DLL riêng của bọn vbAccelerator đó (tức anh ách).

Nhưng mà bây giờ tìm kiếm Controls trên đó là khá chậm rồi vì các controls trên này có từ site đó lâu lắm rồi.
 
Upvote 0
hai2hai đã viết:
Thì tất cả cái này đều ở trên mạng mà.

Cài của Rùa là lấy ở vbAccelerator.com

Khá nhiều người đã lấy code của các components trên đó (Free) để mông má lại vì các code trên đó để chạy được toàn phải nhờ cái SubClass DLL riêng của bọn vbAccelerator đó (tức anh ách).

Nhưng mà bây giờ tìm kiếm Controls trên đó là khá chậm rồi vì các controls trên này có từ site đó lâu lắm rồi.

Đã test thử nhưng báo nhiều lỗi, download *.ocx về và đăng ký với window rồi cũng báo lỗi. *****

LVD
 
Upvote 0
levanduyet đã viết:
Đã test thử nhưng báo nhiều lỗi, download *.ocx về và đăng ký với window rồi cũng báo lỗi. *****

LVD

Anh mở Sourcecode, kiểm tra reference xem thiếu cái gì thì download cái đó. Tóm lại vẫn cần phải có một DLL "SubClass"
 
Upvote 0
levanduyet đã viết:
Đã test thử nhưng báo nhiều lỗi, download *.ocx về và đăng ký với window rồi cũng báo lỗi. *****

LVD

Hình như anh chưa quen làm với VB (cái lỗi missing references này chạy phát ra ngay mà) hoặc chưa chịu đọc kỹ cái bài em viết ở trên nhỉ. :D

vì các code trên đó để chạy được toàn phải nhờ cái SubClass DLL riêng của bọn vbAccelerator đó (tức anh ách).

Tuy nhiên SourceCode loại này ko hiếm mà anh :)
 
Upvote 0
hai2hai đã viết:
Hình như anh chưa quen làm với VB (cái lỗi missing references này chạy phát ra ngay mà) hoặc chưa chịu đọc kỹ cái bài em viết ở trên nhỉ. :D
Tuy nhiên SourceCode loại này ko hiếm mà anh :)
Anh đã ref rồi nhưng vẫn báo lỗi tại cái User type var! :(
Vấn đề là anh chỉ muốn cái OCX Listview, hổ trợ Unicode. Vì khi chuyển dữ liệu từ textbox qua Listview thì chỉ đọc được "Ch??ng trình..." tức anh ách...chẳng lẻ quay về với VNI-Font?!
Tks,

Lê Văn Duyệt
(Vẫn chưa giải quyết được ! :((()
 
Lần chỉnh sửa cuối:
Upvote 0
levanduyet đã viết:
Anh đã ref rồi nhưng vẫn báo lỗi tại cái User type var! :(
Vấn đề là anh chỉ muốn cái OCX Listview, hổ trợ Unicode. Vì khi chuyển dữ liệu từ textbox qua Listview thì chỉ đọc được "Ch??ng trình..." tức anh ách...chẳng lẻ quay về với VNI-Font?!
Tks,

Lê Văn Duyệt
(Vẫn chưa giải quyết được ! :((()

Trùi ui anh, em chỉ trích dẫn là cái code mà Rùa upload lên là lấy từ site đó. Chứ có bảo là cái đó hỗ trợ Unicode đâu. Mà mọi người thường lấy cái code đó rồi mông má lại thành unicode. Em đã bảo anh là Google theo cách mà em guideline thì sẽ tìm thấy cái Listview support Unicode rồi mà. Ko nhẽ lại để em down hộ anh rồi gửi cho anh (trong thời kỳ internet này mà làm vậy thì kỳ quá). Chỉ vài cái click là xong mà. Dĩ nhiên chất lượng của code đó thì em chưa đảm bảo vì em cũng ko dùng.

Nhưng có 1 cách rất đơn giản mà em đã bảo Tuân áp dụng trong A-Excel là khi add item lên cái Listview đó thì chuyển sang TCVN3 - sử dụng 1 font nào đó tỷ như VK Sans Serif (khi cài đặt chương trình thì thêm cái font VK Sans Serif vào bộ cài đặt). Dù sao Listview cũng chỉ là hiển thị dữ liệu lên thôi chứ có edit dữ liệu như Grid đâu mà lo. Tốc độ có thể chậm 1 tý (vì phải chuyển từ Unicode2TCVN3 trước khi additem) nhưng có mấy khi anh sài đến 10,000,000 records đâu đúng ko. Mà có sài đến ngần đó dữ liệu thì những Listview chuẩn ko chạy nổi.

Theo em, làm cái gì giải quyết được vấn đề cho hiệu quả hơn là cứ đâm mãi vào 1 cái tốn thời gian. Anyways, nếu anh tiếp tục khoái Unicode ListView thì cứ Google theo cách của em nhé.

Good working day!
 
Upvote 0
hai2hai đã viết:
Nhưng có 1 cách rất đơn giản mà em đã bảo Tuân áp dụng trong A-Excel là khi add item lên cái Listview đó thì chuyển sang TCVN3 - sử dụng 1 font nào đó tỷ như VK Sans Serif (khi cài đặt chương trình thì thêm cái font VK Sans Serif vào bộ cài đặt).
Vâng, đây là cách đơn giản nhất.
Theo em thì khi nhập liệu thì là Unicode, khi add vào ListView thì convert sang VNI (Miền Nam mà), khi lưu vào dữ liệu thì ta lại convert sang Unicode để lưu lại.
Vì các dữ liệu dưới dạng chữ cũng không nhiều (Tính về số lượng Ojb) nên cũng nhanh thôi.

Các bạn có thể tham khảo mấy Function convert font rất hữu hiệu của Over-AC tại đây.
http://www.giaiphapexcel.com/forum/showthread.php?t=117

Cảm ơn bác nhiều!!

Thân!
 
Upvote 0
Nếu muốn sử dụng Unicode dạng bảng trên form Excel thì anh có thể add thêm control là MS Hieriarchical Flexgrid control (menu Tools \ Additional Controls). Cái này biểu diễn dưới dạng bảng, hỗ trợ Unicode, có hỗ trợ người dùng có thể kéo dãn kích thước các cột và dòng, nhưng ko cho phép người dùng edit từng ô hay hiển thị hình ảnh như trong Listview.
Vào ra với file unicode thì thêm đối tượng của VB như sau:
Tools \ Reference, chọn Microsoft Scripting Runtime
Để vào ra với file:
Mã:
Dim FSObj As New FileSystemObject
Dim ts As TextStream
Dim s as String
      Set ts = FSObj.OpenTextFile(1, 2, 3, 4)
Tham số 1: kiểu String, là đường dẫn đến file.
Tham số 2: hằng số của hàm, ForReading là mở file để đọc, ForWriting là mở file để ghi từ đầu, ForAppending là mở file để ghi tiếp vào cuối.
Tham số 3: boolean, có tạo file mới nếu file chưa có hay ko. True là có tạo.
Tham số 4: hằng số, bảng mã đọc ghi. TristateUseDefault là nó tự dò. TristateTrue là kiểu Unicode, TristateFalse là kiểu ASCII (ANSI). Lưu ý mở đọc 1 file ASCII bằng kiểu Unicode sẽ ko hiển thị đúng.
Để đọc ghi:
Mã:
s=ts.Read(3) 'Đọc 3 ký tự
s=ts.ReadAll 'Đọc tất cả nội dung vào biến s
s=ts.ReadLine 'Đọc 1 dòng
ts.Write s 'Ghi biến s vào file
ts.WriteLine s 'Ghi s và xuống dòng
ts.WriteBlankLines(3) 'xuống dòng 3 lần
Để kiểm tra cuối file dùng
Mã:
ts.AtEndOfFile 'trả về kiểu boolean, kiểu file.EOF trong VB
Cuối cùng đóng file để lưu lại thay đổi
Mã:
ts.close
Thông tin cụ thể thì anh thử tìm xem trong máy anh có file này ko:
Mã:
C:\Program Files\Common Files\Microsoft Shared\VBA\VBA6\1033\VBLR6.CHM
 
Lần chỉnh sửa cuối:
Upvote 0
Web KT

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

Back
Top Bottom