Convert Font - Add-in của OverAC

Liên hệ QC

handung107

Thành viên gắn bó
Thành viên danh dự
Tham gia
30/5/06
Bài viết
1,630
Được thích
17,436
Nghề nghiệp
Bác sĩ
Sau một thời gian thai nghén ấp ủ thì nay phiên bản 3.0 của convertfont đã thực sự hoàn thành. Sự ngưng trệ việc nâng cấp lên phiên bản này là vì các lý do sau:
Em đã không tìm được cách sửa lỗi cho phiên bản 2.0.
Hết ý tưởng!!!
Nhờ sự động viên của các bác gồm WhoamI và bác Tuanktcdcn nay em xin phép cho ra mắt bản phiên bản 3.0 này với các điểm mới sau:
Sửa chữa lỗi của phiên bản 2.0
- Sửa lỗi khi bạn chọn toàn bảng tính (Ctrl + A) với phiên bản 2.0 nếu bạn chọn toàn bảng tính sẽ làm cho chương trình bị ngưng trệ do chương trình phải đọc toàn bảng tính và nhất là khi số dòng và vượt quá phạm vi của chương trình

- Sữa lỗi khi vùng chọn vượt qua cột Z

- Sửa lỗi khi chuyển từ font chữ hoa của font VNI và Unicode sang font TCVN
Thêm một số hàm và tính năng mới
- Thêm một số hàm:

o UPPERUni(): chuyển một chuổi của font Unicode sang dạng chữ hoa (nếu dùng hàm UPPER() bình thường của Excel thì sẽ có một số ký tự không chuyển được)

o lowerUni(): chuyển một chuổi của font Unicode sang dạng chữ thường

o ProperUni(): chuyển một chuổi của font Unicode sang dạng Proper

o ProperVNI(): chuyển một chuổi của font VNI sang dạng Proper. Hàm Proper của Excel không thể chuyển được được hoàn toàn font chữ VNI sang dạng Proper đối vơi các ký tự chữ cái được cấu tạo (Ă, Â, Ô) bởi 2 ký tự, và các nguyên âm có dấu (á, ắ…) (ngoại trừ các chữ i, í, ì, ỉ, ĩ, ị, ỵ)

- Với các hàm trên thì Userform của phiên bản 2.0 cũng thay đổi. Thêm các chức năng chuyển đổi từ chuyển đổi sang các dạng chữ in hoa, thường, proper.

Với những thay đổi này tôi hy vọng phiên bản này đúng được gọi là phiên bản 3.0 thực sự. Nghĩa là nó giúp ích hơn cho các công việc của bạn. Tạo sự thuận tiện trong khi làm việc với các font chữ.

Về cách sử dụng thì không khác gì phiên bản 2.0 nghĩa là để có thể hiện ra được bảng chuyển font bạn phải tô vùng chọn. (nếu bạn muốn chọn toàn bảng tính thì cứ việc nhấn Ctrl + A) nhấn tổ hợp phím Ctrl + q để bắt đầu. Sau khi bảng chuyển font hiện ra rồi thì tôi cho là kô còn gì thắc mắc nữa. Cứ tuân theo bảng ấy mà hành sự thì tất nhiên là thành công

Rất mong nhận được những lởi góp ý của các bác để add-in này ngày càng được hoàn thiện hơn.


 

File đính kèm

  • convertfont3.1.zip
    40.8 KB · Đọc: 10,474
Chỉnh sửa lần cuối bởi điều hành viên:
WhoamI Post :

Không biết các bạn thấy thế nào, nhưng tôi thấy thật là tuyệt vời!
Thật tuyệt vời từ khi có convertfonts 2.0! WhoamI tôi đã không còn phải hì hục chuyển Fonts từ TCVN3 sang Unicode kiểu Ctrl + C và Ctrl + V từng cell = unikey nữa!
Còn tại sao phải chuyển fonts ư!? Tôi chẳng biết nhu cầu quốc tế hóa, quốc tế hiếc gì cả! Nhưng tôi xuất phát từ một nhu cầu rất thực tế của đa số kế toán sử dụng Excel là muốn các dải danh sách đổ xuống của Excel như validation, autofilter …..hiển thị tiếng Việt cho dễ chọn đó mà!
Còn các bạn có biết khi chưa có convertfonts 2.0 chuyển đổi fonts chữ, để hiển thị tiếng Việt trong dải chữ đổ xuống, tôi làm kiểu gì không ! Cài cả ABC lẫn Vietkey! Hi...hi...híc..híc…chuối không bà Kon ơi!!!
Hì, thời ấy xưa rồi! Còn bây giờ ! A lê hấp! Ctrl + A và Ctrl + Q xem nào! Tất cả fonts chữ đều được chuyển đổi theo ý bạn! từ Vni sang unicode, từ TCVN3 sang unicode…..và ngược lại thật nhẹ nhàng và dễ dàng với một số phím tắt hoặc vài click chuột!!! mọi định dạng đều được giữ nguyên! Tuyệt vời chưa!
 
WhoamI Post :

Đúng là Unikey có thể chuyển mã toàn bộ sheet nhưng không phải là không mất tí format nào như bác nói đâu nhé!
Đứng ở góc độ người dùng cái nhá! Em vẫn có mấy cái ý kiến như thế này này:

1: Convertfont của OverAC tiện dụng hơn rất nhiều so với các công cụ chuyển mã khác.
- Rất tiện dụng khi thao tác trên riêng Excel.
- Chỉ cần Ctrl + A và Ctrl + Q thế là xong! Mà Unikey phải mất ít nhất là 3 thao tác.
- Đối với những Cell bị merge cell thì nếu chuyển mã = unikey sẽ chuyển hết về chế độ không merge cell , nhưng Convertfont thì vẫn làm được!

2: Còn sau đây là một số bới lông …..tìm vết mừ :
- Nếu sheet nào có conditinonal formatting thì hình như không chuyển mã = Ctrl + Q được!
- Còn nữa, không biết đây có phải là một thắc mắc không? nếu trong cùng 1 cell có hai định dạng khác nhau thì chỉ chuyển về một định dạng được mà thôi . ( VD: trong một cell có cả chữ đỏ và chữ đen, thì khi chuyển mã chỉ chuyển tất cả về chữ đen hoặc chữ đỏ mà thôi!)

Còn đứng ở góc độ người đi trước, các ông anh nên khen một câu chí ít thì cũng như bác erpvn.
Mọi sáng tạo đều đáng được trân trọng! Nhất là các sáng tạo được chia sẻ cho tất cả mọi người như thế này! Chúc OverAC luôn có hứng thú và say mê với việc lập trình nhé! Có thể ngày hôm nay bạn đang phải đi xe đạp!
 
OverAC Post

Cám ơn WhoamI đã đứng ra biện hộ cho sản phẩm của OverAC. Tất nhiên sản phẩm của OverAC có nhiều cái chưa được và bằng chứng là có một số lỗi như WhoamI đã nêu và một số lổi khác nửa mà WhoamI sẽ tìm ra. Mong rằng WhoamI cứ phát huy tinh thần phê bình trung thực. Về những đều WhoamI đã nêu tôi cho rằng tôi có thể khắc phục được. Quả thật là cũng chưa lường trước được người dùng lại khó tính đến thế :)-P hì hì)

To bác Stony: Cám ơn bác đã nói những điều như thế (Và đây đúng là giọng điệu của người dùng)

Về phía em thì em cũng xin thưa với các bác. Lần đầu (khi phiên bản 1.0 của em ra đời) thì em chưa hề biết gì về Unikey có thể convert mã trong Excel. Cho đến khi làm xong thì em mới biết thế nhưng em cũng chưa đích thân sài nó bao giờ. Chỉ toàn là nghe nói thế thôi. Nhưng kệ nó! Em vẩn quyết tâm làm với suy nghĩ là làm để học hỏi. Cái khó nhất mà em đã làm được là các hàm chuyển đổi qua lại giữa các font ở phiên bản1.0. Chuyện tiếp theo em muốn làm ở phiên bản 2.0 là tạo thêm một cái userform để thao tác cho tiện. Và từ lúc đó có phiên bản 2.0.

Và từ đó em lại bị bí về ý tưởng và một số giải thuật nhưng không trọng yếu. Đến nay em tạo ra được cái 3.0 này cũng với hy vọng rằng có thể tăng tính năng của nó lên một chút. Và các bác có nhận thấy nó có cài gì mới không! Có đó! Những cái hàm mới về change case của em thì sao nhỉ! Chưa có ai cho ý kiến về những cái hàm này!
 
TranVanHung Post

To OverAC !

Em check lại bộ chuyển mã này nhé. Anh đã thử convert từ Unicode qua TCVN và kết quả thì chạy được nhưng cũng với phần đã convert đó anh chuyển lại Unicode thì lại bị lỗi.

Với bộ chuyển mã này thì việc convert font đúng là sẽ đơn giản hơn là dùng unikey nhưng có lẽ em phải cần hoàn thiện hơn nữa mới được. Nghĩ cho cùng thì đây cũng là điều bình thường vì có qua sử dụng thực tế thì mới có thể phát hiện ra lỗi.

Ráng phát huy tinh thần này nhé. Hy vọng sẽ có các phiên bản sau nữa.
 
OverAC Post

To Tranvanhung: em vẩn sài được mà anh Hùng ơi! khi sài anh cẩn thận phân biệt các code source nhé! Bác cứ sài và cho biết các lổi nhé. Em sẽ tiếp tục sửa lổi. và phát hành các phiên bản sửa lỗi 3.01, 3.02 chẳng hạn vậy!

To bác Levanduyet: Em đã do dự không biết có nên tạo một topic riêng hay không hay là tiếp các chủ đề cũ. Tạo ra một chủ đề mới có thể gọi là hơi bị phô trương! Mà em biết là bác thì ko ủng hộ em lắm đối với sản phẩm này cũng như một số mem theo quan điểm của bác. Nhưng kệ em cứ đưa ra bày ra cho mọi người cùng biết vì em cũng muốn nói với các mem EFC chưa biết nhiều về VBA rằng VBA có thể làm được những điều như thế này. Còn source code thì em không che! ai muốn coi thì cứ việc tham khảo và đánh giá

To bác Stony: Cám ơn bác đã cho lời khuyên về source code của Unikey! vì em có nó khi em làm phiên bản 2.0 chứ không phải đến bây giờ em mới biết.

Gởi tất cả những ai biết và quan tâm đến convertfont3.0: em sẽ nghiên cứu kỹ hơn nữa cái Unikey. Tất nhiên Unikey có nhiều ưu điểm của nó và nhất là ưu điểm quen sài đối với những ai đã sài! Nhưng em sẽ cố gắng hoàn thiện convertfont này hơn nửa để nó là một sản phẩm có ưu điểm vượt trội so với Unikey nếu dùng trong môi trường Excel.
 
WhoamI Post :

Nếu bạn nào đang làm kế toán trên Excel thì phải vào đây cảm ơn OverAC cái đê! (hi...hi...trong đó có mình nè)

Vì một số lý do sau:
1: Đây là công cụ chuyển mã trên Excel rất hay và gần gũi với người dùng Excel vì là sản phẩm được sản xuất theo yêu cầu. Các bạn thấy có chỗ nào không hoàn thiện cứ đưa ra yêu cầu đê! Tác giả sẽ lại mất ăn, mất ngủ hoàn thiện cho chúng ta một công cụ chuyển mã tuyệt hơn, đáp ứng được nhiều nhu cầu hơn! Các bạn không thấy đây là 1 cơ hội để các bạn có một công cụ thực sự là của mình sao?

2: Bạn nào thường xuyên phải gõ danh sách tên trong Excel Các bạn phải sử dụng hàm Upper, proper, lower để chuyển đổi case của từng cell ( hay kéo chuột cho nhiều cell) sau đó lại phải cop/paste lại, thì bây giờ các bạn chỉ cần phải đánh dấu vùng dữ liệu cần chuyển và Ctrl+Q! Không tuyệt hơn sao?

Còn bây giờ mới có ý kiến về mấy cái Case mà OVerAC cần đây!
- Nếu chuyển mã từ Unicode ---> TCVN3 thì Case bị ẩn đi. Mình thắc mắc là tại sao OverAC đã là được cho Unicode mà lại không làm vụ chuyển case cho TCVN luôn. Vì thế khi chuyển CHỮ HOA Unicode sang CHỮ HOA TCVN thì CHữ hOA TCVN vẫn bị lỗi kiểu CHữ hOA do bản thân hàm Upper của Excel bị lỗi đối với mọi fonts!

- Ver 3.0 vẫn chưa khắc phục được vụ loạn fonst chữ trên sheet (Có nghĩa nếu sheet có hơn 2 loại fonts chữ) khi chuyển mã = Ctrl + Q ---> fonts chữ bị loạn ở vùng cell mà code của nó khác với code nguồn.

- Không undo được
 
WhoamI Post :

Hì! mà WhoamI đã kiểm tra lại rồi! không phải là do sheet có conditinonal formatting mà do dữ liệu ở dòng 257 trở đi Convertfont 3.0 chuyển mã = ctrl+Q không thực hiện được? nhưng có thể khắc phục được bằng cách dùng hàm. OverAC xem lại nhé!
 
OverAC Post

To WhoamI: Uh đó là một lổi do trước đó Bình có một ý tưởng nhưng lại bỏ dở ý tưởng đó mà quên Delete dòng đó đi!.

WhoamI làm điều này sẽ khắc phục được lổi một cách dể dàng:
- Cho nó chạy có lổi (chọn vùng chọn ở dòng 300 chẳng hạn vậy)
- Khi báo lổi nhấn chọn Debug sẽ đưa và cửa sổ VB Editor
- Xoá luôn cái dòng đang đánh dấu vàng và bấm F5 để chạy tiếp nếu muốn. hoặc dừng: nút lệnh dừng. (menu Run --> Reset)
- Nhớ nhấn vào nút lệnh save trên thanh công cụ của VB Editor nhé! (để lần sau khỏi bị lại lần nửa ấy mà!
 
OverAC Post

WhoamI đã viết:
- Nếu chuyển mã từ Unicode ---> TCVN3 thì Case bị ẩn đi. Mình thắc mắc là tại sao OverAC đã là được cho Unicode mà lại không làm vụ chuyển case cho TCVN luôn. Vì thế khi chuyển CHỮ HOA Unicode sang CHỮ HOA TCVN thì CHữ hOA TCVN vẫn bị lỗi kiểu CHữ hOA do bản thân hàm Upper của Excel bị lỗi đối với mọi fonts!

- Ver 3.0 vẫn chưa khắc phục được vụ loạn fonst chữ trên sheet (Có nghĩa nếu sheet có hơn 2 loại fonts chữ) khi chuyển mã = Ctrl + Q ---> fonts chữ bị loạn ở vùng cell mà code của nó khác với code nguồn.

- Không undo được
1. WhoamI ơi! Fonts TCVN làm gì có chữ Hoa! chẳng qua chỉ là đổi thành một font khác có chữ hoa tương ứng thôi (ví dụ .vntime thì tương ứng có .VNTIMEH). Vì thế nếu dùng TCVN thì chịu khó chỉnh tay vậy
2. Cái vụ này thua! Phải tách bạch rõ rành chứ! Nếu không thì thua
3. Cái vụ này thì bó tay! Vì chuyện undo đối với VBA Excel là một vấn đề lớn mà mình chưa dám nghiên cứu. Hy vọng sẽ sớm hiểu được nó. Và nó sẽ là một topic riêng.
4. Hiện tại convertfont3.0 cũng như Unikey đều convert trên giá trị của ô làm cho các ô có công thức bị mất tích! Với điều này thì có thể khắc phục được. Tuy nhiên hiện giờ đưa ra bản khắc phục thì có thể nói là hơi sớm. WhoamI cố gắng tìm ra thêm lỗi hoặc thêm đề xuất gì đi nhé. Cám ơn nhiều
5. Chuyện nhiều dạng format trong cũng một ô thì xin thưa là không thể khắc phục được. Nếu cố làm thì code rất dài dòng phức tạp chán lắm. không biết có ai có cách hay thì chỉ giúp.
 
Tuanktcdcn Post :

Bản Convertfont 3.0 của bạn thật sự hữu ích cho nhiều người trong đó có T, với v3.0 đã có thêm chuyển đổi các loại chữ nó đã làm tăng lên "giá trị" của Convertfont 3.0.
Tuy nhiên để tốt hơn theo T cần sửa và thêm như sau:
1) Dim I as Integer
Bình thường thì không sao cả nhưng với ô (cell) có nhiều văn bản trong đó (Người ta có thể cho cả 1 trang word vào 1 cell) thì số ký tự không phải là 32,767 (kiểu Integer) ký tự đâu mà còn hơn thế, lúc đó máy báo lỗi "Overfload..."
Bạn nên khai báo thành: Dim I as Long
Kieu Long cho giá tri từ -2,147,483,648 to 2,147,483,647
2) Trong vung I chọn để convert có cell có giá trị và cell có công thức, công thức mảng, cell có hyperlink. Sau khi convert thì chỉ còn lại giá trị còn công thức và hyperlink mất tiêu-rất nguy hiểm.
Lỗi trên là do bạn dùng "Range()". Nếu chỉ dùng "Range()" VBA tự hiểu là "Range().Value". Khi nhận giá trị cho nó thì Formula và FormulaArray không nhận.
Bạn nên dùng lệnh kiểm tra xem ô đó có Formula,FormulaArray, Hyperlink không? Nếu có phải hoàn trả bằng lệnh "Range().Formula","Range().FormulaArray", "Range().Hyperlink".
....
3) Không có thông báo trong quá trình Convert
Khi chọn nhiều ô có thể phải chờ khá lâu (I không biết phải chờ bao lâu nữa?). Vậy bạn cho dòng thông báo về % hoàn thành
VD:
For I=1 to CellCount
Me.Caption=I\CellCount*100 & "%"
Next I
Như vậy người dùng kiểm soát được tình hình convert
4) Nếu có thể được thì chương trình tự nhận dạng font nguồn. Nếu làm được việc này thì Convertfont 3.0 thật tuyệt vời.
À mà bạn nghiên cứu để nó convert nhanh hơn nữa nhé.
Bạn đã có kế hoạch Add-In trên Word,Powerpnt,Access chưa? Nếu là T, T sẽ làm một bộ đóng gói luôn vì ta chỉ cần thay đổi chút ít mà.
Chúc bạn thành công!
 
OverAC Post

1) Vâng! Em xin tiếp thu vấn đề này! chuyện nhỏ mà
2) Vấn đề này em đã có nghĩ tới và đã khắc phục nhưng phải chờ sắp tới còn gì nửa thì đưa ra luôn phiên bản 3.1 chứ không thì lắc nhắc quá tốn tài nguyên.
3) Cái này thì em chưa nghĩ tới! Về giải thuật thì em chưa thử! Em sẽ tiếp thu ý kiến này
4) Có thể cũng nhận diện được nhưng như vậy thì làm cho nó chạy chậm hơn nửa
5)
À mà bạn nghiên cứu để nó convert nhanh hơn nữa nhé.
Đây là vấn đề lớn đây. Nhưng em sẽ nghiên cứu thêm!
6)
Bạn đã có kế hoạch Add-In trên Word,Powerpnt,Access chưa? Nếu là T, T sẽ làm một bộ đóng gói luôn vì ta chỉ cần thay đổi chút ít mà.
Em chưa thành thạo việc đưa nó vào Word, Access, hay Powerpoint. Em cũng sẽ ráng nghiên cứu tiếp

Chân thành cám ơn bác Tuanktcdcn về những góp ý quý báu trên! và rỏ ràng rằng những điều trên chứng tỏ bác hoàn toàn có thể làm được những gì bác góp ý nhưng chăng qua là bác không có thời gian đầu tư vào cái này hay là vì lý do nào đó khác...
Em sẽ cố gắng hoàn thành những gì có thể làm được và sớm đưa lên diển đàn
 
Hai2Hai Post :

Tuanktcdcn đã viết:
To OVerAC
1) Dim I as Integer
Bình thường thì không sao cả nhưng với ô (cell) có nhiều văn bản trong đó (Người ta có thể cho cả 1 trang word vào 1 cell) thì số ký tự không phải là 32,767 (kiểu Integer) ký tự đâu mà còn hơn thế, lúc đó máy báo lỗi "Overfload..."
Bạn nên khai báo thành: Dim I as Long
Kieu Long cho giá tri từ -2,147,483,648 to 2,147,483,647

Trong lập trình windows, ít khi người ta dùng số Interger mặc dù nó tiết kiệm hơn thật nhưng khi trình biên dịch dịch ra mã máy thì đằng nào nó cũng sẽ convert thành 2 bytes. Vì thế default là dùng Long. Đấy là chưa kể khi lập trình thì nên nghĩ "vét cạn" tất cả các trường hợp như Tuân đã chỉ ra.

Tuanktcdcn đã viết:
2) Trong vung I chọn để convert có cell có giá trị và cell có công thức, công thức mảng, cell có hyperlink. Sau khi convert thì chỉ còn lại giá trị còn công thức và hyperlink mất tiêu-rất nguy hiểm.
Lỗi trên là do bạn dùng "Range()". Nếu chỉ dùng "Range()" VBA tự hiểu là "Range().Value". Khi nhận giá trị cho nó thì Formula và FormulaArray không nhận.
Bạn nên dùng lệnh kiểm tra xem ô đó có Formula,FormulaArray, Hyperlink không? Nếu có phải hoàn trả bằng lệnh "Range().Formula","Range().FormulaArray", "Range().Hyperlink".
....

Cái này nếu lập trình object oriented quen trong windows thì các bạn sẽ thấy đây người ta gọi là Object's Default Property.

Ví dụ: Có 1 Label control (1 object) có tên là Label1. Nếu ta viết Label1 = "Hello" thì nghĩa là Label1.Caption = "Hello". Trong trường hợp này property Caption được gọi là Default Property của object Label (Label1 được gọi là 1 instant của object). Còn ở trường hợp Tuân nói thì Value chính là Default Property của object Range.

Tuanktcdcn đã viết:
3) Không có thông báo trong quá trình Convert
Khi chọn nhiều ô có thể phải chờ khá lâu (I không biết phải chờ bao lâu nữa?). Vậy bạn cho dòng thông báo về % hoàn thành
VD:
For I=1 to CellCount
Me.Caption=I\CellCount*100 & "%"
Next I
Như vậy người dùng kiểm soát được tình hình convert
4) Nếu có thể được thì chương trình tự nhận dạng font nguồn. Nếu làm được việc này thì Convertfont 3.0 thật tuyệt vời.
À mà bạn nghiên cứu để nó convert nhanh hơn nữa nhé.
Bạn đã có kế hoạch Add-In trên Word,Powerpnt,Access chưa? Nếu là T, T sẽ làm một bộ đóng gói luôn vì ta chỉ cần thay đổi chút ít mà.
Chúc bạn thành công!

Đây là 2 trong rất nhiều vấn đề rất cơ bản mà người lập trình phải nghĩ đến khi làm chương trình.

Cheers & Happy Coding!
 
OverAC Post

StonyHeartedMan đã viết:
Trong lập trình windows, ít khi người ta dùng số Interger mặc dù nó tiết kiệm hơn thật nhưng khi trình biên dịch dịch ra mã máy thì đằng nào nó cũng sẽ convert thành 2 bytes. Vì thế default là dùng Long. Đấy là chưa kể khi lập trình thì nên nghĩ "vét cạn" tất cả các trường hợp như Tuân đã chỉ ra.

Đây là 2 trong rất nhiều vấn đề rất cơ bản mà người lập trình phải nghĩ đến khi làm chương trình.

Cheers & Happy Coding!
Vâng cám ơn bác đã cho biết! Chân thành thông báo với bác rằng em chưa hề học qua bất kỳ lớp đào tạo nào về programming. Tất tần tật mọi thứ em biết được qua đọc sách và tự mày mò trong thế giới lập trình. (có chăng là mấy chữ pascal học từ hồi 96-99)

StonyHeartedMan đã viết:
Cái này nếu lập trình object oriented quen trong windows thì các bạn sẽ thấy đây người ta gọi là Object's Default Property.

Ví dụ: Có 1 Label control (1 object) có tên là Label1. Nếu ta viết Label1 = "Hello" thì nghĩa là Label1.Caption = "Hello". Trong trường hợp này property Caption được gọi là Default Property của object Label (Label1 được gọi là 1 instant của object). Còn ở trường hợp Tuân nói thì Value chính là Default Property của object Range.
Cái này em tự nhiên áp dụng chứ không biết! Theo em thì hình như ông Unikey cũng làm như vậy phải không? Phiên bản tiếp theo của em sẽ thay đổi điều này.

Và cuối cùng: Cám ơn bác stonyheartedman về đoạn code mà bác đã gởi cho em. Nó rất hay và đúng là em chỉ là dân amateur về lập trình thật. Cho vào mảng thì em cũng đã có nghĩ tới nhưng sợ mình quản hỏng nổi mấy con số đó nên thôi. Dù sao đi nữa cũng cám ơn bác và em xin phép bác được đưa nó vào cái đoạn code của em nếu em thấy ứng dụng được gì đấy.
 
Chào các bạn, tôi là thành viên mới đăng ký diễn đàn này mấy hôm thôi. Tôi rất quan tâm đến các vấn đề về xử lý tiếng Việt trong môi trường Office nói chung và Excel nói riêng, trước đây tôi có xây dựng một số hàm xử lý tiếng Việt mã VNI dùng trong Excel (Proper, Sort, Cắt tên,...) nhưng chưa thể xử lý được mã UNICODE. Từ lấy tìm thấy các hàm của bạn handung107 tôi như bắt được vàng vì trước đây tôi không thể biết được code của các ký tự trong bản mã UNICODE, dựa vào các ý tưởng của bạn handung107 tôi có xây dựng thêm hàm dùng để tạo ra mã sắp xếp cho tiếng Việt UNICODE, tôi muốn đưa lên cho các bạn tham khảo, dùng thử và góp ý giúp nhưng chưa biết các đưa lên diễn đàn này.
Cảm ơn bạn handung107 rất nhiều, các hàm của bạn rất hay và tiện dụng.
 
bác có thể đưa trực tiếp nó lên bằng cách đính kèm file hoặc gởi cho tôi ở địa chỉ overac@giaiphapexcel.com tôi sẽ giúp bác.
 
Lần chỉnh sửa cuối:
hic, em down bản add-in này về dùng thử, mấy ngày đầu dùng bình thường. Bây giờ ctrl+q chẳng thấy ra bảng chuyển gì cả. Em đã cài lại add-in nhưng vẫn không dùng được. Em phải làm sao đây các bác??????
 
handung107 đã viết:
Những cái hàm mới về change case của em thì sao nhỉ! Chưa có ai cho ý kiến về những cái hàm này!
Góp ý hàm đầu tiên: VNItoUNICODE
Dùng bảng mã VNI, dễ gặp trường hợp nguyên âm hoa có dấu như Ấ, Ẫ, Ố, ... có dấu không ngay trên đỉnh mà lệch xuống bên phải. Đó là do nguyên âm thì chữ hoa, nhưng dấu mũ và dấu thanh lại là chữ thường. Đây có lẽ là lỗi do bộ gõ tiếng Việt.
Có lẻ handung107 không để ý đến 58 trường hợp này nên bỏ lọt lưới.
Để hoàn thiện hơn, đoạn Select Case c để chuyển các nguyên âm hoa có dấu sang Unicode, handung107 nên thêm luôn các trường hợp này.
chữ đỏ là phần thêm vào
Select Case c
Case "aù": c = ChrW$(225)
Case "aø": c = ChrW$(224)
Case "aû": c = ChrW$(7843)
....
....
Case "yû": c = ChrW$(7927)
Case "yõ": c = ChrW$(7929)

Case "AÙ": c = ChrW$(193)
Case "Aù": c = ChrW$(193)
Case "AØ": c = ChrW$(192)
Case "Aø": c = ChrW$(192)
...
...
Case "YÛ": c = ChrW$(7926)
Case "Yû": c = ChrW$(7926)
Case "YÕ": c = ChrW$(7928)
Case "Yõ": c = ChrW$(7928)
End Select
Gởi kèm tập tin lỗi Err VNIUNI để tham khảo
 

File đính kèm

  • Err VNIUNI.xls
    47.5 KB · Đọc: 110
phamduylong đã viết:
Góp ý hàm đầu tiên: VNItoUNICODE
Dùng bảng mã VNI, dễ gặp trường hợp nguyên âm hoa có dấu như Ấ, Ẫ, Ố, ... có dấu không ngay trên đỉnh mà lệch xuống bên phải. Đó là do nguyên âm thì chữ hoa, nhưng dấu mũ và dấu thanh lại là chữ thường. Đây có lẽ là lỗi do bộ gõ tiếng Việt.
Có lẻ handung107 không để ý đến 58 trường hợp này nên bỏ lọt lưới.
Để hoàn thiện hơn, đoạn Select Case c để chuyển các nguyên âm hoa có dấu sang Unicode, handung107 nên thêm luôn các trường hợp này.
chữ đỏ là phần thêm vào

Gởi kèm tập tin lỗi Err VNIUNI để tham khảo

Anh Long gõ như thế nào để được chữ như trong file anh gưỉ? Em đã thử đặt kiêủ gõ là VNI thì không bị vâỵ. Em nghĩ nếu áp kiểu gõ chuẩn thì ra chữ chuẩn và việc convert cũng chuẩn. Em dùng bộ gõ Unikey để convert đoạn văn bản của anh thì nó không thực hiện với những chữ có dấu.
 
TuanVNUNI đã viết:
Anh Long gõ như thế nào để được chữ như trong file anh gưỉ? Em đã thử đặt kiêủ gõ là VNI thì không bị vâỵ. Em nghĩ nếu áp kiểu gõ chuẩn thì ra chữ chuẩn và việc convert cũng chuẩn. Em dùng bộ gõ Unikey để convert đoạn văn bản của anh thì nó không thực hiện với những chữ có dấu.
Bộ gõ Unikey, Vietkey đều có tình trạng này (các bộ gõ khác anh chưa sử dụng). Gởi kèm word VNI bị lỗi này anh mới nhập bằng Vietkey. Nó xuất hiện khi nhập ký tự đầu tiên của từ là nguyên âm hoa có dấu, nhấn Shilf để đánh nguyên âm, buông Shilf bỏ dấu. Lúc nhập nó vẫn hiện dấu đúng, nhưng khi nhập khoảng trắng tách từ thì nó chuyển thành dấu chữ thường. Anh đã theo đuổi cái vụ chuyển mã này, lúc đầu cũng bị rối chỗ này, sau này mới hiểu được nguyên nhân và khắc phục được nó. Cách anh viết cũng phải liệt kê hết các trường hợp này, tuy nhiên trong TVEXCEL anh dùng thuật toán khác.
 

File đính kèm

  • VNI.doc
    19 KB · Đọc: 123
Web KT
Back
Top Bottom