File chuyển số sang viết bằng chữ

  • Thread starter HyperVN
  • Ngày gửi
W

workman

Guest
22/7/05
372
2
0
52
Ho Chi Minh
hvtgroup nói:
- Các bạn copy file XLA này về máy sau đó vào menu Tools/Add-ins... chọn nút lệnh Browse... để add file sau đó dùng Function: SO2CHU(n)
- Nếu muốn sửa đọn code chọn menu Tools/Macro/Visual Basic Editor
Cám ơn bạn hvtgroup đã có một add-in rất hay. Tôi có xem qua code của bạn thấy hình như bạn chỉ giải quyết cho 1 loại font là TCVN thôi.

Tôi xin giới thiệu các bạn nên vào thư viện download Name Manager về sử dụng. Đây là 1 giải pháp hoàn thiện về chuyển đổi từ số sang chữ cho mọi loại font, kể cả Unicode.

Name Manager có điểm mạnh là áp dụng được cho cả 3 miền: Miền bắc: font TCNV, miền nam: VNI, và những người không phân biệt nam bắc: Unicode.
 
Khóa học Quản trị dòng tiền
H

hieuhavo

Guest
2/11/05
7
0
0
49
Tp.HCM
Bạn tải file NameManager.Zip về, gỡ Zip, lôi file NameManager.xla ra ngoài, khởi động Excel, vào Tool, chọn Add-in, chọn Browse, tìm file NameManager.xla , chọn rồi OK, thế là xong, bạn đã có thể thoải mái sử dụng hàm này, tuyệt vời luôn, hi hi, chào nhé.
 
H

hvtgroup

Ông lái đò...
15/3/04
377
0
16
HaiPhong
binbin nói:
Muốn đọc được file này phải có hỗ trợ gì không? tớ không sao đọc được, giúp tớ với
Do font chữ mình sử dụng là TCVN, nếu bạn dùng kiểu khác thì chỉ việc vào code để sửa lại là được thôi!
 
H

hieuhavo

Guest
2/11/05
7
0
0
49
Tp.HCM
Bạn tìm thư của anh Workman - có tải file namemanager và hướng dẫn sữ dụng đấy. Hàm này rất tiện vì có thể dùng cho các font: Vni, Unicode...
 
adam_tran

adam_tran

Guitar inspiration
17/5/05
1,374
36
48
46
Goooogle
NameManage

Đó không phải là một hàm mà là một bộ công cụ hỗ trợ cho kế toán của Maika viết thôi. Trong file đó có các hàm User Defined Function hay dùng như đổi số thành chữ (cho cả 3 bảng mã Unicode, VNI và TCVN3), hàm xử lý với họ tên, hàm kiểm tra MST và một công cụ quản lý name. Bạn có thể dùng một phần trong đó, bỏ đi phần nào đó nếu thấy không cần thiết.
Các hàm trên nằm trong Category User Defined Function trong hộp hội thoại Insert - Function
 
H

hieuhavo

Guest
2/11/05
7
0
0
49
Tp.HCM
Các anh chị và các bạn có biết chương trình nào đổi font chữ unicode, VNIQR... sang VNI dùng trong văn bản không? nếu có thì cho mình dùng "ké"với. Cảm ơn nhiều.
 
W

workman

Guest
22/7/05
372
2
0
52
Ho Chi Minh
hieuhavo nói:
Các anh chị và các bạn có biết chương trình nào đổi font chữ unicode, VNIQR... sang VNI dùng trong văn bản không? nếu có thì cho mình dùng "ké"với. Cảm ơn nhiều.
Bạn download unikey mà sử dụng. Nó vừa là bộ gõ gọn nhẹ (gọn hơn Vietkey) và rất nhiều chức năng. Trong đó có chức năng convert mã tiếng Việt đấy.

Xin đính chính một chút, Unicode, VNQR, VNI, TCVN là các bảng mã, không phải là font.
 
H

hieuhavo

Guest
2/11/05
7
0
0
49
Tp.HCM
Anh Worman ơi, Unikey không chuyển mã được các file word (.doc).
Em có một file dữ liệu dài hơi từ word, gõ bằng font VNtimes new roman, font này thuộc bảng mã VIQR hả anh? em muốn bổ sung dữ liệu nhưng gõ không được, ra toàn mã, mà máy tính đã có font này, em không biết làm sao nữa. nếu bây giờ em muốn chuyển nguyên tài liệu sang bảng mã VNI Windows thì làm cách nào? anh chỉ giúp cho em với nhé.
Thanks ...
 
W

workman

Guest
22/7/05
372
2
0
52
Ho Chi Minh
hieuhavo nói:
Anh Worman ơi, Unikey không chuyển mã được các file word (.doc).
Em có một file dữ liệu dài hơi từ word, gõ bằng font VNtimes new roman, font này thuộc bảng mã VIQR hả anh? em muốn bổ sung dữ liệu nhưng gõ không được, ra toàn mã, mà máy tính đã có font này, em không biết làm sao nữa. nếu bây giờ em muốn chuyển nguyên tài liệu sang bảng mã VNI Windows thì làm cách nào? anh chỉ giúp cho em với nhé.
Thanks ...
Tôi assume là bạn đã install Unikey rồi. Nếu muốn chuyển mã trong Word, bạn làm như sau:

1. Highlight tất cả văn bản WOrd
2. Nhấn tổ hợp Ctrl+Shitf+F6.
3. Bạn chọn Mã tương ứng để chuyển
4. Click vào "chuyển mã clip board"
5. Khi nào thấy báo là chuyển xong, bạn vào trong WOrd, chọn Paste.

Nói dài dòng thế chữ dễ ợt à. Làm thử đi sẽ biết ngay mà.
 
T

thanhvo31

Guest
17/7/05
36
0
0
49
Haiphong
Bạn nghe lời ông này có ngày tiêu luôn file nguồn đó :lol:
Theo tôi, nên Save file doc của bạn sang dạng RTF, convert file RTF này chắc ăn hơn
Xin lỗi bác workman vì em tính gây sự vói bác một tý:banana:
 
D

duyennt

Trung cấp
14/7/05
94
0
6
Bình Dương
Tôi thì không biết về VB, nghe giới thiệu hàm đọc số này hay thật, đọc được nhiều lọai tiền tệ. Bạn có ghi là thêm tham số thứ 2 là đơn vị tiền tệ như "VND", "USD",... là thêm như thế nào? xin chỉ giáo.
Xin cảm ơn!
 
B

Bình_OverAC

Over Abnormal / Crazy
14/5/04
846
10
18
42
Nha Trang
Cách làm ở trên khá hay nhưng chỉ đọc được số 1 triệu tỷ -1 chứ kô đến được con số 1triệu tỷ (hay 1 tỷ tỷ như đã nói)

To duyennt: Cấu trúc hàm ở đọc số ở trên là

= SayMoney(số tiền, loạitiền)
- Loại tiền là tùy ý (nếu không có thì mặc định là đồng)
- Các loại tiền mà hàm này đọc được (thực ra là dịch ra tiếng Việt đơn vị tiền tệ nước ngòai) : USD, EUR, FRF, GBP, JPY, CNY.

Ví dụ : = saymoney(1000000, "FRF")

Lưu ý: hàm đổi số thành chữ ở trên sử dụng font chữ abc (TCVN3), nếu bác nào ở miền nam thì nhớ kiểm tra xem máy của mình có font ".vntime" hay kô nhé. Nếu muốn đổi thành font VNI thì bạn nên vào thư viện load về convertfont3.0 để kết hợp chuyển mã font thành font VNI. Công thức kết hợp như sau : = VNIfromTCVN3(SayMoney(sốtiền, [loạitiền]))
 
D

daovietcuong

Guest
Hàm "convert của Over" như thế nào bạn nhỉ?

ForestC nói:
:
Theo em thì có rất nhiều cách để có thể đọc số thành chữ font Unicode trong VBA. Ngày trước, lần đầu tiên thì em dùng cách kết hợp hàm đọc số thành chữ thông thường (cái hàm mà ai cũng biết là cái gì ấy - vnd), dùng kết hợp với hàm convert font của bạn Over InterMilan . Sau đó em lại chuyển qua dùng trực tiếp mã ASCCII để hiện thị những câu từ tiếng Việt cần thiết. Tóm lại cả 2 cách này đều liên quan đến bảng mã ASCCII cả. Gửi anh và mọi người code theo cái cách thứ 2 mà hiện nay em đang dùng:
P/S: Theo cách này thì số ký tự trong đoạn mã sẽ nhiều hơn cách kết hợp với hàm convert của Over 1 chút, nhưng có thể tốc độ sẽ nhanh hơn 1 chút vì nó là cách trực tiếp. Còn cái cách 1 kia em nói thế chắc là mọi người ai cũng làm được phải không nào, vì nó dễ hiểu quá mà.

Trước nay tôi toàn sài đồ đóng gói, nay muốn đưa nó vào ứng dụng của mình. Bạn có source code thì post lên cho mọi người được không? Đôi khi dùng chữ có dấu cũng thật phiền phức: miền Bắc = TCVN3 , miền Nam lại = VNI... đôi khi mang sang máy khác lại không có font, muốn đọc được menu và title bar hoặc messagebox lại phải chỉnh apperance của windows... nhiều ứng dụng còn đá nhau trên cùng một máy vì chanh nhau font chữ... mệt quá.
Giải quyết vấn đề đó, ứng dụng phải cho phép chuyển đổi text ngay trên giao diện mà người dùng soạn thảo.
Tôi đang tham hàm chuyển text TCVN3 thành text không dấu, nhưng xem ra không được văn minh lịch sự cho lắm!!!
Giúp tôi với nhé!
---------------------------------
Always careful - Always successful
 
paulsteigel

paulsteigel

Trung cấp
13/11/05
103
0
16
48
Hoà Bình
www.sfdp.net
Một ví dụ nhỏ chuyển đổi từ tcvn sang unicode cho các bạn (từ tcvn sang unicode)
Function ToUnicode(txtString As String, Optional isReversed As Boolean = False) As String
' This function will do the conversion of text string into unicode
Dim iStr As String, repTxt As String, mText As String
Dim i As Long, j As Long
Dim iUnicode As Variant ' array to keep unicode char set
Dim iTCVN As Variant ' array to keep TCVN char set
Dim iProcList() As String ' array to keep what to convert

'parse the parameter into this local variable
iStr = txtString
mText = txtString

iUnicode = Array(225, 224, 7843, 227, 7841, 259, 7855, 7857, 7859, 7861, 7863, 226, _
7845, 7847, 7849, 7851, 7853, 233, 232, 7867, 7869, 7865, 234, 7871, 7873, 7875, _
7877, 7879, 237, 236, 7881, 297, 7883, 243, 242, 7887, 245, 7885, 244, 7889, 7891, _
7893, 7895, 7897, 417, 7899, 7901, 7903, 7905, 7907, 250, 249, 7911, 361, 7909, _
432, 7913, 7915, 7917, 7919, 7921, 253, 7923, 7927, 7929, 7925, 273, 193, 192, 195, _
258, 194, 212, 416, 431, 272)

iTCVN = Array(184, 181, 182, 183, 185, 168, 190, 187, 188, 189, 198, 169, 202, 199, 200, _
201, 203, 208, 204, 206, 207, 209, 170, 213, 210, 211, 212, 214, 221, 215, 216, 220, _
222, 227, 223, 225, 226, 228, 171, 232, 229, 230, 231, 233, 172, 237, 234, 235, 236, _
238, 243, 239, 241, 242, 244, 173, 248, 245, 246, 247, 249, 253, 250, 251, 252, 254, _
174, 193, 192, 195, 161, 162, 164, 165, 166, 167)

' Reenlarge the array
ReDim iProcList(1, 133)
' process the vowel only and covert to asc code
For i = 1 To Len(mText)
repTxt = Mid(mText, i, 1)
If AscW(repTxt) > 122 Then
iStr = Replace(iStr, repTxt, "[" & AscW(repTxt) & "]")
mText = Replace(mText, repTxt, " ")
' write the processed list
iProcList(1, j) = "[" & AscW(repTxt) & "]"
If isReversed Then
iProcList(0, j) = GetElementNo(AscW(repTxt), iUnicode)
Else
iProcList(0, j) = GetElementNo(AscW(repTxt), iTCVN)
End If
j = j + 1
End If
Next
If j = 0 Then
ToUnicode = txtString
Exit Function
End If
ReDim Preserve iProcList(1, j - 1)
' now convert to unicode
For i = 0 To UBound(iProcList, 2)
If isReversed Then
iStr = Replace(iStr, iProcList(1, i), ChrW(iTCVN(Val(iProcList(0, i)))))
Else
iStr = Replace(iStr, iProcList(1, i), ChrW(iUnicode(Val(iProcList(0, i)))))
End If
Next
fExit:
ToUnicode = iStr
End Function

Private Function GetElementNo(iTxt As Long, iObj As Variant) As String
Dim i As Long
For i = 0 To UBound(iObj)
If iTxt = iObj(i) Then
GetElementNo = CStr(i)
Exit For
End If
Next
End Function
 
N

ngốc

Guest
Khi dùng NameManager để đọc số từ ngàn tỷ trở lên thì hàm VNID và VNUD không cho kết quả giống nhau. Cụ thể là VNID không đọc được, còn VNUD thì lặp lại hai lần từ "tỷ". Có bạn nào biết cách sửa lỗi này không?
 
V

vankien

Guest
17/1/05
33
0
0
Hà Nội
Cái "đọc số thành chữ" này hay thật đấy, nhưng mình copy về và thử dùng thì không được, các bác nói là có file đính kèm khác hay upload lên mình tại sao không thấy ở đầu nhỉ, bác nào có đoạn code hoàn chình gửi cho em với, em đang rất cần, Cảm ơn các bác nhiều.
 
B

Bình_OverAC

Over Abnormal / Crazy
14/5/04
846
10
18
42
Nha Trang
vankien nói:
Cái "đọc số thành chữ" này hay thật đấy, nhưng mình copy về và thử dùng thì không được, các bác nói là có file đính kèm khác hay upload lên mình tại sao không thấy ở đầu nhỉ, bác nào có đoạn code hoàn chình gửi cho em với, em đang rất cần, Cảm ơn các bác nhiều.
Trên thư viện có một số Add-ins, Bạn vào đó mà xem nhé.

To ngốc: Hiện chưa có ai có nhu cầu đọc số lớn hơn hoặc bằng 1000 tỷ. Hôm nào rảnh rổi tôi sẽ thử làm xem sao. Thế nhé.
 

Xem nhiều

Webketoan Zalo OA