bạn ơi cho mình hỏi nếu mình muốn đọc số ra chữ số tiền đô la mỹ bằng tiếng việt ví dụ 93,000 USD đọc là chín mươi ba nghìn đô la mỹ
thì dùng công thức nào
Trong bộ cài add-in AccHelper có một file "AccHelper API.txt". File này mô tả cách khai báo hàm API, hàm trong tư viện add-in Xll được triệu gọi để sử dụng.
Trong Access, bạn tạo module và copy->paste đoạn code.
Mình đã paste đoạn code trong file "AccHelper API.txt" vào module trong Access như bạn hướng dẫn. Nhưng vẫn chưa chạy được![]()
Cho mình hỏi cách SỬ DỤNG & CHỨC NĂNG hàm trong Access có khác j trong excel không ?
ví dụ: Excel: USD (ROUND(5000.123,2)) ---> Access: USDW (ROUND(5000.123,2))
Excel: VND (5000.12,,"ĐÔ LA MỸ")---> Access: VNDW (5000.12,,"ĐÔ LA MỸ")
![]()
Dưới đây là file ví dụ ^^ Many thanks !
Có thể dùng trong bấy kỳ môi trường nào mà cho phép chạy code: VB6, VBA: Excel, Access, Word,...Delphi, ....
Bạn hãy copy khai náo API và đưa vào module là dùng được các hàm. Hãy copy file acchelper.xll vào thư mục hệ thống C:\Windows\System32
Sau khi copy file acchelper.xll vào thư mục hệ thống C:\Windows\System32 thì mình đã chạy được
=USDW(1234567.89)
=USDW(1234567.89,"ĐỒNG")
=VNDW(12334567.89)
đều ok
Nhưng còn hàm =VNDW(1234567.89,"ĐÔ LA MỸ") or =VNDW(1234567.89,,"ĐÔ LA MỸ")
thì không được. bạn xem giúp mình thử công thức hàm VNDW lỗi ở chỗ nào với ! Many thanks !
![]()
& Cho mình hỏi là tùy chọn AcchelperOptions có chỉnh được cho Access như bên excel không ?
View attachment 59636
Declare Function VNDW Lib "AccHelper.xll" Alias "VND" (ByVal Amount As Double, _
Optional ByVal OutputType As Integer = 3, _
Optional ByVal Unit1 As Variant = vbNullString, _
Optional ByVal Unit2 As Variant = vbNullString, _
Optional ByVal MUnit2 As Long = 1, _
Optional ByVal HasGroupingSymbol As Boolean = False) As Variant
'OutputType = 1 => TCVN3(ABC)
'OutputType = 2 => VNI
'OutputType = 3 => UNICODE (Ngam dinh)
Declare Function USDW Lib "AccHelper.xll" Alias "USD" (ByVal Amount As Double, _
Optional ByVal Unit1 As Variant = vbNullString, _
Optional ByVal Unit2 As Variant = vbNullString, _
Optional ByVal MUnit2 As Long = 1, _
Optional ByVal HasGroupingSymbol As Boolean = False) As Variant
Đối số thứ 2 của hàm VNDW là kiểu dữ liệu
'OutputType = 1 => TCVN3(ABC)
'OutputType = 2 => VNI
'OutputType = 3 => UNICODE (Ngam dinh)
Đối số thứ 3 là tên đơn vị đo số chắn. Đối số thứ 4 là tên đơn vị đo số lẻ.
Vậy bạn phải viết công thức như sau sẽ đúng.
=VNDW(1234567.89, 3, "ĐÔ LA MỸ", "CENTS")
Cấu trúc hàm mình đã viết: =VNDW(1234567.89,, "ĐÔ LA MỸ") -> k chạy
cấu trúc đúng : =VNDW(1234567.89,3, "ĐÔ LA MỸ") -> chạy
Lỗi ở đối số thứ 2 của hàm là kiểu dữ liệu. Mình thắc mắc là Access không tự động ngầm định ",," được giống như bên excel hả bạn
bt bên excel mình toàn
",,"
Mình đang sử dụng 1 file đọc số thành chữ khác (Module 3 trong file đính kèm) but đọc -> english lại thiếu "and" nối giữa các phần triệu ngàn trăm .... -> không được hay như cái của bạn.
![]()
Nhưng có ưu điểm là nó là 1 đoạn code full paste vào module trong Access lun nên tiện khi copy file Access đó sang các máy khác thì vẫn sử dụng được nó. (vì là file làm việc chung của cả cty nên Khi đó sẽ không lệ thuộc vào việc máy người sử dụng file đó có cài tiện ích hay không mà đã mặc định tích hợp sẵn trong file)
Bạn có thể giúp mình đoạn code full riêng biệt để paste vào module của Access luôn mà vẫn đảm bảo tính hợp lý như Add-In v2.0.4 với các chi tiết tùy chọn như file AcchelperOptions được không bạn? Many thanks !
Hj yêu cầu nghe có vẻ tham lam nhưng nếu được đáp ứng thì cảm ơn bạn nhiều nhiều
![]()
Nếu bạn muốn có code cho đọc số thì dùng code trên diễn đàn này nhiều lắm. Còn cái AccHelper.xll là một add-in đặc biệt - mã máy nên tốc độ chạy rất nhanh và không bị pm diệt virus quét. Code lập trình trên Delphi nên không thể paste vào VBA được bạn à.
Chả biết cái code Amount này có OK, bạn test thử.Hj tại nhiều nên mình không biết lấy cái nào là ok hếtmình k biết về code nên không biết cái nào đáp ứng được yêu cầu có "and" như add-in này. Nếu có thể Bạn cho giúp mình 1 cái link có liên kết đến chỗ chứa đoạn code mà mình muốn tìm với. Many thanks!
Function CS_proNtoC(ByVal Pso, ByVal pKieu As Integer, ByVal pType) As String
'-----pKieu=1 ®æi qua kiÓu VND
'On Error GoTo NtoCErr
On Error Resume Next
Dim StrSo As String, StrChu As String, Tchu As String, Tstr As String
Dim l As Integer, i As Integer, j As Integer, n As Integer
Static Chu3hang(4) As String
Chu3hang(0) = ""
Chu3hang(1) = IIf(pKieu = 1, "ngµn ", "thousand ")
Chu3hang(2) = IIf(pKieu = 1, "triÖu ", "million ")
Chu3hang(3) = IIf(pKieu = 1, "tû ", "billion ")
Chu3hang(4) = IIf(pKieu = 1, "ngµn ", "thousand ")
If Pso = 0 Then
CS_proNtoC = IIf(pKieu = 1, " Zero dong", " Zero dollar")
Exit Function
End If
If Pso < 1 Then
Tstr = Format$(Pso)
Tstr = Right(Tstr, 2)
CS_proNtoC = "Zero dollars and " & CS_DoiPhanLe(Tstr) & "cents"
Exit Function
End If
StrSo = Format$(Pso)
l = Len(StrSo)
If pKieu <> 1 Then
If l > 18 Then GoTo NtoCErr
i = InStr(1, StrSo, ".")
If i > 1 Then
Tstr = Left(Right(StrSo, l - i), 2)
StrSo = Left(StrSo, i - 1)
l = Len(StrSo)
Else
Tstr = ""
End If
End If
StrChu = ""
If l > 14 Then GoTo NtoCErr
i = Fix(l / 3)
j = l Mod 3
If i >= 1 And j = 0 Then
n = i - 1
Else
n = i
End If
i = 0
j = IIf(j = 0, 3, j)
Do Until n < 0
Tchu = Format$(Right(Left(StrSo, i * 3 + j), IIf(i = 0, j, 3)), "@@@")
If pKieu <> 1 Then
If i = 0 Then
pKieu = 4
ElseIf n = 0 Then
pKieu = 3
End If
End If
StrChu = StrChu & CS_proDoi3So(Tchu, pKieu) & IIf(Tchu <> "000" Or n = 3, Chu3hang(n), "")
n = n - 1
i = i + 1
Loop
l = Len(StrChu)
If Len(Tstr) = 1 Then
Tstr = Tstr & "0"
End If
CS_proNtoC = UCase(Left(StrChu, 1)) & Right(StrChu, l - 1) & IIf((pKieu = 2 Or pType = 2), "®ång", IIf(Tstr = "", "US dollars", "US dollars and " & CS_DoiPhanLe(Tstr) & " cents"))
Exit Function
NtoCErr:
MsgBox "Invalid Data, please reenter...", 48, "VAT Invoice System"
CS_proNtoC = ""
Exit Function
End Function
Làm 1 if nữa vậy, replaceMình muốn hoàn chỉnh (không phải sửa mới 100%) đoạn code đang sử dụng dưới đây để có thêm "AND" giữa hàng triệu ngàn ... như hình minh họa (vẫn giữ lại cấu trúc hàm như cũ).
=CS_proNtoC(1234567.89,2,1)
=CS_proNtoC(1234567.89,1,2)
Rất mong các bạn hoàn chỉnh giúp mình ! Many thanks!
View attachment 59696
* Chú thích: Dòng đích mà mình muốn đạt được là : "One million two hundred and thirty four thousand five hundred and sixty seven US Dollars and eighty nine cents" (được thực hiện = ad-in)
CS_proNtoC = UCase(Left(StrChu, 1)) & Right(StrChu, l - 1) & IIf((pKieu = 2 Or pType = 2), "®ång", IIf(Tstr = "", "US dollars", "US dollars and " & CS_DoiPhanLe(Tstr) & " cents"))
CS_proNtoC = Replace(CS_proNtoC, "hundred ", "hundred and ")
CS_proNtoC = Replace(CS_proNtoC, "and US ", "US ")
Exit Function
xin cảm ơn. Tôi đã add vào và chạy được rồi. Nhưng vô tình tôi thay đổi đường dẫn chứa file AccHelper.xll giờ mỗi lần mở lên là excel báo lỗi
xin chỉ giúp cách tháo gỡ file mình đã addin vào excel
cho hỏi tại sao khi tôi sử dụng mail merge dữ liệu qua word nó lại không đọc được tiếng việt
ví dụ : một thành m?t
tôi tìm ra được nguyên nhân rồi nhưng không biết cách khắc phục, xin chỉ giúp
do tôi muốn khi mail merge thì các con số hiển thị trong word có dấu phân cách ngàn (ví dụ : 1.000.000)
khi merge tôi dùng chế độ MS Excel Worksheets via DDE (*.xls)
nên kết quả là tất cả dữ liệu tiếng việt đều không đọc được
xin chỉ giúp tôi cách giải quyết
Sao mình cài AccHelper.xll và AccHelperEx.xla mà khi sử dụng với công thức sothanhchu(10,3) => mu?i d?ng ch?n
Vậy là sao? Bạn nào có thể giúp mình với. Xin cảm ơn!
Công cụ này mình đã down về dùng thử nhưng xin hỏi thêm là làm thế nào để có dấu phẩy "," ngăn cách giữa các chữ: tỉ, triệu, ngàn ?
Bạn ơi khi mình gõ =vnd(123056,3) tức là mình sẽ được font unicode đúng không
nhưng của mình hiện ra vẫn bị lỗi font như thế này: "M?t tram hai muoi ba ngan không tram nam muoi sáu đ?ng ch?n."
Bạn xem hộ mình sửa cách nào với
thanks
Đệ đã cài được AccHelper.xll, nhưng khi muốn thay đổi cách đọc đệ không tìm thấy file Acchelper.ini trong window32
Xin chỉ cho đệ vào đâu để chạy được file Accounting Helper Options
Hãy dùng hàm ROUND để làm tròn số trước khi đọc.Không chỉ dùng bằng công thức =vnd(số,1 or 2 or 3) mà ta có thể dùng công thức đơn giản hơn đó là = VND(Ô chứa số)
Nhưng khi dùng công thức =VND(Ô chứ số)
Tôi thấy có một vấn đề là: Hầu hết trên tất cả các bảng tính đều tính toán số làm làm tròn và mặc định là như vậy trên Excel, nhưng với cách dùng này lại thể hiện rõ cả số lẻ sau dấy phảy nữa, như vậy là số đọc ra lại không đúng với số làm tròn.
Vậy tôi có một ý là có cách nào để cả phần đọc số cũng chỉ là đọc đến trước dấy phảy thôi không
VD: 1.236,12
Chỉ đọc là: Một nghìn hai trăm ba mươi sáu nghìn đồng chẵn
Giúp mình nhé
Thanks!
minh dùng office 2010 ko sử dụng đươc bạn ơi
giờ là em muốn hỏi xem có các nào kéo được add - in ra tool bar không? và thêm nữa là em muốn thêm dấu ngoặc đơn ở phần chữ vào thì làm thế nào vì em làm quyết định của UBND mà yêu cầu là fải có ngoặc đơn trước phần chữ
Anh Duy Tuân nói rất đúng mình cũng đang nghiên cứu dùng Delphi để làm một chương trình dự toán riêng phục vụ công tác đấu thầu vì mỗi chủ đầu tư có các bản phân tích chi tiết giá khác nhau rất lộn xộn nên muốn làm một cái có thể tạo ra một báo cáo( bảng đơn giá chi tiết linh động) cho mọi tình huống như bản A-Tool của anh thì chỉ áp dụng cho kế toán và cũng chưa linh động trong báo cáo(mình đã thử dùng cái này để làm bảng kiểm tra cao độ và kích thước hình học cho việc nghiệm thu đường rồi cũng rất hiệu quả cám ơn tác giả nhé). Mình đang sử dụng cái add-in Expess 2007(cái này mà dùng để tạo hàm thì tuyệt) đã tự chế để dùng trong DelphiXe rồi dùng kết hợp với cái Flexcell của TMS nhưng do bận kiếm tiền quá nên chưa thực hiện được. Anh Tuân có mã nguồn nào đó thì có thể chia sẻ cho em tham khảo được không Email: kien.vui@gmail.comCó bao giờ chúng ta bảo tôi muốn dùng hàm VLookup nhưng muốn đổi tên là "Timkiem" không?
Tất cả các AddIns khi đã biên dịch thành DLL,XLL thì miễn bàn đến vì nó đã là ngôn ngữ máy rồi, còn dạng XLA thì chỉ khi tác giả cho Pass VBA thì mới sửa được tên hàm.
Trong file Excel của các bạn hàm đọc số thành chữ dùng không nhiều (nó chỉ trong các chứng từ, sổ, báo cáo là chính) nên việc chọn hàm này hay hàm khác có thể không đáng quan tâm. Nhưng nếu bạn dùng các hàm để tính toán nhiều, dùng nhiều thì nên chọn AddIns dạng XLL để đảm bảo tốc độ của ứng dụng.
(Thuật toán như nhau, tốc độ các hàm trong AddIns XLL nhanh hơn trong VBA rất nhiều ~+60%)
Mục đích tôi đưa file Ketoan.XLL để các bạn biết là các chuyên gia MS Excel phải làm như vậy để tạo ra các hàm Excel cho người dùng. Các AddIns của Microsoft gần như đều phải làm như vậy Solver, ODBC,...
Học để làm AddIns XLL, nếu bạn nào biết ngôn ngữ C/C++/Delphi có thể thể trao đổi cùng tôi.
hay quá mà sao mặt định không phải là font unicode vậy anh.
Chào chủ topic! tôi theo dõi chủ đề này cũng lâu lâu rồi đấy, chỉ là chờ thêm 1 tính năng trong tiện ích của bạn. Bạn nghiên cứu giúp và bổ sung thêm các dấu phảy "," ngắt câu trong phần chữ nhé. VD: "Sáu tỉ, tám trăm ba mươi triệu, hai trăm lẻ năm nghìn đồng." . Có thể hình dung là thêm các dấu phảy "," sau các chữ "tỉ"; " triệu"; ... và dấu chấm "." sau chữ "đồng", như vậy thì câu văn đọc ra sẽ rõ ràng hơn và mình có thể xem dễ dàng hơn từng khoảng giá trị.
Bạn nghiên cứu giúp nhé, email của mình: lehai.cd@gmail.com, nhờ bạn liên hệ khi có tin mới. Cảm ơn bạn!
Em đọc trong file "Help.xls" nhưng vẫn không thấy chỉ dãn rõ là làm thế nào thể hiện ngăn cách là dấu "," giữa các nhóm mặc dù ví dụ nhưng em không biết cách làm. Anh chỉ cho em.
Sao em add-in file accHelperEx.xla xong khởi động lại excel là hiện ra khung này
View attachment 75566
Xin các pro giúp em với . Thank
Học để làm AddIns XLL, nếu bạn nào biết ngôn ngữ C/C++/Delphi có thể thể trao đổi cùng tôi.
Chào bạn.
Bạn có thể hướng dẫn tôi làm XLL không? Tôi đã thử làm trong Delphi một PictureViewer như đã có ở trên diễn đàn này (tác giả dùng VB6). Tôi mở New --> ActiveX Library --> OK --> New --> Automation Object --> OK. Thế rồi tôi viết code và kiểm tra.
Còn cái XLL này thì làm như thế nào? New --> ??? --> OK --> New --> ??? --> OK. Những chỗ ??? là gì? Và cần những gì để sau khi compile là có được DLL? Và sau khi có được DLL thì chuyển sang XLL bằng cách nào? Đơn giản chỉ là đổi tên gi_do.dll thành gi_do.xll hay phải mệt hơn nữa? Về thuật toán, cách code thì tôi sẽ tự mầy mò, xin bạn chỉ giúp là tôi phải mở project loại gì - những "???" như ở trên. Và cần chú ý tới những gì nữa. vd. như hàm trả về chuỗi thì tôi cho trả về WideString được không hay "đồ chơi loại này" (COM) đòi hỏi phải trả về Variant?
Cám ơn bạn
Giới thiệu với các thành viên phiên bản mới Đọc số thành chữ Accounting Helper 2.1.0 (New) 20-11-2011
Thông tin sửa đổi và nâng cấp:
+ Sửa tương thích với Excel 2000
+ Quản lý bộ nhớ tốt hơn
+ Thêm phiên bản chạy trên Microsoft Excel 64-bit (Windows + Microsoft Office 64-bit)
Để sử dụng phiên bản 64 bit, các bạn hãy chọn file theo đường dẫn "x64\AccHelper.xll"
Từ phiên bản Accounting Helper 2.1.0 hỗ trợ Excel 64-bit (Windows + Microsoft Office 64-bit)
DOWNLOAD Accounting Helper 2.1.0 (32 & 64-bit)
Tôi thử công cụ của bạn thì thấy có lỗi như thế này:
http://i788.photobucket.com/albums/yy164/khachquaduong_2009/AccHelper.jpg
Nhân tiện (do đã lập công ở trên?) xin hỏi bạn một chút. AccHelper bạn viết trong Delphi. Vậy bạn làm thế nào để có những dòng miêu tả hàm trong cửa sổ "Insert Function" của Excel?
Tôi thấy trong cửa sổ Type Library Editor của Delphi 5 có "Help string", "Help Context", v...v. Tôi có thể đưa các giá trị thử nghiệm vào nhưng theo tôi hiểu thì mình lại phải soạn một tập tin help rồi đưa đường dẫn vào nữa. Nhưng như thế "phiền toái" quá. Hay là nó còn có ô "Description" mà tôi tìm hoài không thấy?
Bạn làm như thế nào?
Cám ơn bạn đã trả lời. Tôi làm server automation (cũng thêm được vào chỉ có điều không có miêu tả hàm) vì lúc đó tôi chưa biết làm XLL. Mấy hôm rồi tôi tìm tòi nên cũng đã làm được XLL. Hóa ra chỉ cần làm DLL bình thường rồi đổi tên thành XLL như tôi đã nghĩ. Và chỉ cần code xlAutoOpen (bắt buộc) rồi đăng ký các hàm của ta. Các hàm đã hoạt động tốt và có miêu tả. Tôi cũng đã tự tìm đọc Excel 2010 SDK nên biết cách dùng vd. pxTypetext. Nếu cần hơn thì code thêm xlAddInManagerInfo và xlAuto***. Chỉ có điều là hiện tôi dùng XLOPER nên chỉ có ShortString, không có miêu tả unicode.File Add-in Excel XLL bản chất là một file thư viện DLL loại "Dynamic-link library" (không phải là ActiveX DLL). Có thể dùng Visual C hoặc Delphi để tạo loại thư viện này. Nếu bạn biết chút về C/C++ thì nên dùng nó để tạo vì Microsoft có sẵn tài liệu và các ví dụ để tạo nó. Để tạo được XLL bạn phải khai báo kiểu cấu trúc dữ liệu của Excel xll và lập trình các hàm quy định của loại add-in này. Bạn xem tại đây:
Welcome to the Microsoft Excel 2010 XLL Software Development Kit
Nếu làm trên Delphi thì thực sự khó khăn bởi toàn bộ kiểu dữ liệu bên C/C++ mà Microsoft đã khai báo ta phải quy đổi về Delphi. Nói chung phải rất có kinh nghiệm mới làm được trên Delphi. Bài hướng dẫn làm trên Delphi 7 từ lâu lắm tại đây:
http://www.google.com.vn/url?sa=t&r...sg=AFQjCNF_4Qy8NKN48Rcoiaj32TQDwRT9OA&cad=rja
Theo tôi bạn nên dùng VC để tạo add-in xll, vì để tạo bằng Delphi bạn vẫn phải biết cơ bản về C/C++ để đọc tài liệu hướng dẫn của Microsoft và hiểu rõ cách viết dll trong Delphi.
"Help Strin", "Help Context" chỉ là diễn giải cho cả add-in (file) thôi chứ không thể diễn giải cho các đối sối trong hàm được.
Đọc kỹ tài liệu của Microsoft mà tôi gửi trên bạn sẽ có thể làm được như thế này:
/*
** XL 12 Basic Datatypes
**/
typedef INT32 BOOL; /* Boolean */
typedef WCHAR XCHAR; /* Wide Character */
typedef INT32 RW; /* XL 12 Row */
typedef INT32 COL; /* XL 12 Column */
/*
** XLOPER structure
**
** Excel's fundamental data type: can hold data
** of any type. Use "R" as the argument type in the
** REGISTER function.
**/
typedef struct xloper
{
union
{
double num; /* xltypeNum */
LPSTR str; /* xltypeStr */
#ifdef __cplusplus
WORD xbool; /* xltypeBool */
#else
WORD bool; /* xltypeBool */
#endif
WORD err; /* xltypeErr */
short int w; /* xltypeInt */
struct
{
WORD count; /* always = 1 */
XLREF ref;
} sref; /* xltypeSRef */
struct
{
XLMREF *lpmref;
DWORD idSheet;
} mref; /* xltypeRef */
struct
{
struct xloper *lparray;
WORD rows;
WORD columns;
} array; /* xltypeMulti */
struct
{
union
{
short int level; /* xlflowRestart */
short int tbctrl; /* xlflowPause */
DWORD idSheet; /* xlflowGoto */
} valflow;
WORD rw; /* xlflowGoto */
BYTE col; /* xlflowGoto */
BYTE xlflow;
} flow; /* xltypeFlow */
struct
{
union
{
BYTE *lpbData; /* data passed to XL */
HANDLE hdata; /* data returned from XL */
} h;
long cbData;
} bigdata; /* xltypeBigData */
} val;
WORD xltype;
} XLOPER, *LPXLOPER;
/*
** XLOPER12 structure
**
** Excel 12's fundamental data type: can hold data
** of any type. Use "U" as the argument type in the
** REGISTER function.
**/
typedef struct xloper12
{
union
{
double num; /* xltypeNum */
XCHAR *str; /* xltypeStr */
BOOL xbool; /* xltypeBool */
int err; /* xltypeErr */
int w;
struct
{
WORD count; /* always = 1 */
XLREF12 ref;
} sref; /* xltypeSRef */
struct
{
XLMREF12 *lpmref;
DWORD idSheet;
} mref; /* xltypeRef */
struct
{
struct xloper12 *lparray;
RW rows;
COL columns;
} array; /* xltypeMulti */
struct
{
union
{
int level; /* xlflowRestart */
int tbctrl; /* xlflowPause */
DWORD idSheet; /* xlflowGoto */
} valflow;
RW rw; /* xlflowGoto */
COL col; /* xlflowGoto */
BYTE xlflow;
} flow; /* xltypeFlow */
struct
{
union
{
BYTE *lpbData; /* data passed to XL */
HANDLE hdata; /* data returned from XL */
} h;
long cbData;
} bigdata; /* xltypeBigData */
} val;
DWORD xltype;
} XLOPER12, *LPXLOPER12;
/*
** XLOPER and XLOPER12 data types
**
** Used for xltype field of XLOPER and XLOPER12 structures
*/
Tôi xoá 3 bài cuối vì 2 bên không hiểu nhau, cụ thể là:
Siwtom đặt câu hỏi ở 1 mức độ A, NguyenDuyTuan trả lời theo cách hiểu câu hỏi của mình (cho rằng câu hỏi ở mức độ B (trình độ B của người hỏi))
Siwtom cho rằng câu trả lời không thoả đáng, và cho rằng (đại khái là) người trả lời dấu nghề
Tôi cho rằng:
- Siw tom đặt câu hỏi chưa chính xác đối với điều mình muốn (muốn abc32 thì hỏi xin thẳng abc32, đừng hỏi vòng vo)
- NguyenDuyTuan thì căn cứ vào câu hỏi (chưa rõ ràng) để trả lời, đã vậy lại theo 1 phong cách gợi ý chứ không xin cho
Do đó, các bài viết có nguy cơ biến từ thảo luận thành tranh luận và khích bác lẫn nhau (nhất là của siwtom). vậy tôi xoá 3 bài.
Đề nghị siwtom hỏi, xin, đúng vào điều mình muốn. Anh NguyenDuyTuan sẽ trả lời chính xác vào điều bạn muốn hay không, còn tuỳ lòng của anh ấy, nhưng ít nhất, bạn đã đặt đúng câu hỏi.
Có bác nào giúp dùm em cái add in đổi số ra chữ với. Các bản thường dùng chạy hay thiếu chữ không trăm bị kho bạc nhà nước bắt sữa hoài( kho bạc kỹ quá cỡ)
Ví dụ: 1.055.000 >> nếu dùng add in thì đọc là " Một triệu năm mươi lăm nghìn đồng" trong khi yêu cầu đọc đúng là " một triệu không trăm năm mươi lăm nghìn đồng"
Bác nào giúp với nhé, cảm ơn nhiều !![]()
bạn cài cài này nè .AccHelper_v2.0.4.zip. tớ cũng dùng win 7 cài được mà!hay lắm.himình đang dùng wind 2007 nên muốn dùng phần mềm đổi số thành chữ thì dùng cái nào , nhờ mọi người giúp mình với nha. Mình cảm ơn nhiều.
Hi Bác Tuân,Excel XLL Add-In Accounting Helper (AccHelper.xll)
![]()
- Download file về
- Giải nén
- Mở Excel, vào menu Tools\Add-Ins chọn nút "Browse" và chọn tới các file *.Xll, *.xla (vừa được giải nén).
Cách dùng (đơn giản) trong Sheet:
=VND(Số tiền)
Ví dụ:
=VND(1000000)
=VND(1000000) kết quả là chuỗi TCVN3 (Nếu Excel 2003 trở về trước)
=VND(1000000) kết quả là chuỗi Unicode (Nếu từ Excel 2007 trở lên)
=VND(1000000,2) kết quả là chuỗi VNI
=VND(1000000,3) kết quả là chuỗi Unicode
=ToUNC(VND(1000000,1),1) kết quả là chuỗi Unicode
=ToUNC(VND(1000000,2),2) kết quả là chuỗi Unicode
=USD(1000000) kết quả là chuỗi đọc số tiếng Anh
=Num2Str(1000000) kết quả là chuỗi Unicode (tiếng Anh)
=Num2Str(1000000,1) kết quả là chuỗi đọc số tiếng Việt
Để biết được nó tối ưu như thế nào, bạn vào công thức tại ô A1
=VND(1000000) copy cho tất cả các dòng trong một cột (65536 dòng)
Bạn cũng làm vậy với hàm đổi số thành chữ của các AddIns khác bạn sẽ thấy sự khác nhau về tốc độ!
Để cài đặt "Accounting Helper", bạn hãy cài đặt lần lượt 2 file Add-In là:
1- AccHelper.xll (file này có 4 hàm: SoThanhChu, VND, USD, Num2Str)
2- AccHelperEx.xla (file này để hỗ trợ các hàm chuyển Unicode: ToUNC, Num2StrW, VNDW, USDW)
(*) Nếu bạn đang dùng Excel2007 thì không cần cài Add-In "AccHelperEx.xla", vì với Excel2007 "AccHelper.xll" đã hỗ trợ Unicode và các hàm ToUNC, NumStr.
(*) Để thay đổi các cách đọc, bạn hãy chạy chương trinh "Accounting Helper Options" (AcchelperOptions.exe)
![]()
Các bạn đọc thêm hướng dẫn tại file Help.xls hoặc tại đường link dưới đây:
http://www.bluesofts.net/Products/AddIns/Accounting Helper/Index.htm
File "Cach_doc_ khac.zip" là các ví dụ về các cách đọc số thành chữ bằng hai thứ tiếng Anh và Việt. Nếu trong thực tế phát sinh cách đọc khác, các bạn có thể đề đạt tại topic này, tôi sẽ cố gắng thực hiện trong khả năng có thể.
Download Accounting Helper v2.1.0 (phiên bản mới nhất, ngày 20/11/11)
Từ phiên bản Accounting Helper 2.1.0 hỗ trợ Excel 64-bit (Windows + Microsoft Office 64-bit)
Hi Bác Tuân,
Có thể cho nó đọc USD nhưng mà bằng tiếng Việt được không ạ ? Làm cách nào ?
Ví dụ : 1,234 usd đổi lại thành: Một ngàn hai trăm ba mươi bốn đô la Mỹ .
Anh Tuân ơi, xem lại giúp, ví dụ 125 đồng nó đọc là: một trăm hai mươi lăm đồng chẵn. Cái chữ chẵn là không ổn rồi. Thực ra chữ chẵn trong mọi trường hợp đều có thể bỏ. VD: 1.000 đồng, nếu bằng chữ là một nghìn đồng, sau chữ đồng chẳng ai sửa được gì nữa mà lo. Vấn đề là đến hàng đơn vị rồi nhưng add in của anh vẫn đọc là chẵn.
Nếu các bạn gặp số 11111111111 hoặc 222222222222 ... các dãy số lặp này mà lớn hơn 1 tỷ là hàm VND ( hoặc VNDW) sẽ báo lỗi. Mình thử trên O2003 và win7. Còn nữa, chỉ cần bạn đang dùng hàm VND() mà typing lại là VNDW() để ra UNICODE, cũng bị lỗi dữ liệu luôn
Dear Chuotdong,
----------------
Góp ý của bạn rất xác đáng, tuy nhiên chủ đề này chúng ta bàn về:
AddIns Đổi số thành chữ - Tốc độ nhanh tối đa, nhanh hơn 80% các Addins khác
chứ không phải là vấn đề ứng dụng của hàm. Nói cách khác tác giả muốn so sánh về mặt công nghệ hơn là nói về giải thuật và phát triển ứng dụng. Lẽ ra kèm theo tập tin Ketoan.xll, anh TuanVNUNI nên cung cấp mã nguồn để các bạn so sánh trên VBA thì mới chính xác được, chứ nếu so với các Add-Ins khác (là Add-Ins nào!?) chúng ta cần bàn đến vấn đề giải thuật nữa.
Tuy nhiên, theo em hiểu thì chúng ta không thể "nhúng" trực tiếp mã nguồn của chương trình này vào VBA Project được vì có sự khác biệt về ngôn ngữ phát triển(?).
Được rồi, bạn muốn bàn về vấn đề đó thì ta bàn nhé?
Các Addins khác là addins nào vậy? Các sản phẩm của đồng nghiệp cùng cty? Các addins của các sư phụ trên GPE? Hay các addins từng tồn tại trên đời? Và cân đo đong đếm thế nào để được 80 % mà không phải là 90 % hay 70 %, 10%?
Mà nếu đã là Tốc độ nhanh tối đa tức không thể nhanh hơn thì có lẽ phải là nhanh hơn 99 % các Addins khác chứ?
Bạn viết:
Bạn Chuotdong viết:
Vấn đề là ở chỗ ngoài tốc độ mà tác giả đã quảng cáo thì mục đích cũng để giấu nghề. Và khi người khác không xem được thì cũng có nghĩa là cũng không phát hiện được những chỗ sai nếu có.
Như những cô "nóng" đến mức chóng mặt ấy. Nếu tô son chát phấn, che đậy thì bạn không biết cô ta có khiếm khuyết không, có dùng "đồ" giả không. Còn nếu "trần trụi" thì thấy hết. Tôi cho bạn vd. Trong addns này bạn không đọc được code thì bạn không chỉ ra được lỗi nếu có. Nhưng trong Unicode Menu thì do bạn có code nên bạn nhìn thấy hết. Tôi nhìn code tôi phát hiện ra 2 lỗi lớn (không tính các lỗi nhỏ). Tôi ngạc nhiên là Unicode Menu có đã hơn 3 năm mà không thấy ai phát hiện ra lỗi. Mà tác giả ra phiên bản mới cũng không sửa tức cũng không nhìn thấy lỗi.
Sẵn bạn nói đến những bài viết khác của tôi thì tôi cũng nói thêm:
Giải pháp Tặng các bạn Unicode Menu trong Userform - UMU (SourceCode) tôi cung cấp opensource để cộng đồng cùng phát triển. Thời điểm tôi đưa ra bộ mã nguồn này hình như chưa có giải pháp nào về unicode menu trên userform kể cả nước ngoài, không chỉ là vấn đề unicode mà còn hỗ trợ cả đồ hoạ cho bắt mắt. Trình độ của bạn thế nào tôi chưa biết nhưng với tôi thời điểm đó là "tuyệt đỉnh công phu" với chính tôi. Tôi sẵn sàng chia sẻ những thứ đó. Vấn đề này tôi không giấu nghề đúng không?
Tôi nói ra để mọi người biết và nếu ai quan tâm thì tự tìm tự và sửa thôi. Bản thân bạn viết phần mềm thì chắc bạn luôn muốn hoàn thiện chúng, ai lập trình cũng thế thôi, nhất là sống bằng bán sản phẩm. Tôi chỉ thông báo vấn đề như thế, nếu được hỏi thì thưa thốt thêm chứ nếu chẳng ai quan tâm thì chả bới bèo ra bọ làm gì.
Nếu bạn tìm được các lỗi cũng như các giải pháp cho những vấn đề đó thì tốt. Như bài trước của bạn đã nói tìm được lỗi gì đó trong unicode menu? Vậy bạn có thể chỉ ra và giải pháp của bạn trong topic đó nhé.
Mục đích tôi đưa giải pháp mã nguồn mở để mọi người cùng xây dựng mà thôi. Nhưng tiếc là từ khi tôi đăng lên thì chưa ai làm thêm được cái gì để hoàn thiện hơn.
Tặng các bạn Unicode Menu trong Userform - UMU (SourceCode)
Đúng là tôi tìm ra. Tôi đã nói rồi, nếu có ai hỏi thì tôi thưa thốt còn nếu không ai quan tâm thì thôi. Tôi đâu phải loại người cứ cố tình chen vào việc của người khác. Mình góp ý rồi nếu thấy quan tâm thì tham gia tiếp còn không thì thôi.
2uan điểm của bạn hơi xa lạ với cộng đồng này!
Theo tôi nếu tìm ra khiếm khuyết của công việc người khác thì đã tốt; nhưng cái kiểu dấm dứ của bạn thật khó ưa!
anh ơi e đã đọc rất kỹ các hướng dẫn của anh rồi, nhưng khi áp dụng vào máy của em vẫn bị lỗi giống bạn thanhan1234 gặp phải. Khi dùng VND(123) --> ra đúng, nhưng phải chuyển sang font .vntime mới đọc đc.
VND(123;1) --> ko đọc đc tiếng việt (Tùy chọn 2có là 2,hoặc 3 cũng vẫn ko đọc được.)
Mình có viêt thêm hàm doi_font() ở VBA thì cũng chỉ đọc được trường hợp 1 (không cần chuyền = tay sang font .vntime).
Khi e dùng hàm vndw() thi máy báo lỗi #name? Nhu vậy là sao ạ? anh giúp em với ạ! thanks anh nhiều ạh!
Mới chạy thử có hai vấn đề hỏi tác giả:
Thứ nhất về hàm chuyển đổi đọc sang tiếng Việt có dấu phảy lại bị lỗi font chữ.
Thứ hai về hàm quy đổi đơn vị sang giờ và phút thì tôi không hiểu phần Phút (sau dấu phẩy) máy đọc kiểu gì?
Tôi đang dùng office 2010.
![]()
Mới chạy thử có hai vấn đề hỏi tác giả:
Thứ nhất về hàm chuyển đổi đọc sang tiếng Việt có dấu phảy lại bị lỗi font chữ.
Thứ hai về hàm quy đổi đơn vị sang giờ và phút thì tôi không hiểu phần Phút (sau dấu phẩy) máy đọc kiểu gì?
Tôi đang dùng office 2010.
![]()
Excel XLL Add-In Accounting Helper (AccHelper.xll)
![]()
- Download file về
- Giải nén
- Mở Excel, vào menu Tools\Add-Ins chọn nút "Browse" và chọn tới các file *.Xll, *.xla (vừa được giải nén).
Cách dùng (đơn giản) trong Sheet:
=VND(Số tiền)
Ví dụ:
=VND(1000000)
=VND(1000000) kết quả là chuỗi TCVN3 (Nếu Excel 2003 trở về trước)
=VND(1000000) kết quả là chuỗi Unicode (Nếu từ Excel 2007 trở lên)
=VND(1000000,2) kết quả là chuỗi VNI
=VND(1000000,3) kết quả là chuỗi Unicode
=ToUNC(VND(1000000,1),1) kết quả là chuỗi Unicode
=ToUNC(VND(1000000,2),2) kết quả là chuỗi Unicode
=USD(1000000) kết quả là chuỗi đọc số tiếng Anh
=Num2Str(1000000) kết quả là chuỗi Unicode (tiếng Anh)
=Num2Str(1000000,1) kết quả là chuỗi đọc số tiếng Việt
Để biết được nó tối ưu như thế nào, bạn vào công thức tại ô A1
=VND(1000000) copy cho tất cả các dòng trong một cột (65536 dòng)
Bạn cũng làm vậy với hàm đổi số thành chữ của các AddIns khác bạn sẽ thấy sự khác nhau về tốc độ!
Để cài đặt "Accounting Helper", bạn hãy cài đặt lần lượt 2 file Add-In là:
1- AccHelper.xll (file này có 4 hàm: SoThanhChu, VND, USD, Num2Str)
2- AccHelperEx.xla (file này để hỗ trợ các hàm chuyển Unicode: ToUNC, Num2StrW, VNDW, USDW)
(*) Nếu bạn đang dùng Excel2007 thì không cần cài Add-In "AccHelperEx.xla", vì với Excel2007 "AccHelper.xll" đã hỗ trợ Unicode và các hàm ToUNC, NumStr.
(*) Để thay đổi các cách đọc, bạn hãy chạy chương trinh "Accounting Helper Options" (AcchelperOptions.exe)
![]()
Các bạn đọc thêm hướng dẫn tại file Help.xls hoặc tại đường link dưới đây:
http://www.bluesofts.net/Products/AddIns/Accounting Helper/Index.htm
File "Cach_doc_ khac.zip" là các ví dụ về các cách đọc số thành chữ bằng hai thứ tiếng Anh và Việt. Nếu trong thực tế phát sinh cách đọc khác, các bạn có thể đề đạt tại topic này, tôi sẽ cố gắng thực hiện trong khả năng có thể.
Download Accounting Helper v2.1.0 (phiên bản mới nhất, ngày 20/11/11)
Từ phiên bản Accounting Helper 2.1.0 hỗ trợ Excel 64-bit (Windows + Microsoft Office 64-bit)
nhanh thì có nhanh thật. nhưng nếu muốn thêm dấu phân cách hàng nghìn thì làm sao?
vd: Một triệu, hai trăm, năm mươi nghìn đồng.
Bác chủ topic cho mình hỏi là nếu muốn đọc số "12.5" là " Mười hai đồng năm hào" thì làm thế nào bác nhỉ. Em làm kế toán lg nhà nước nên bắt lẻ đến tiền hào, mà lại không chấp nhận "xu" nên khó quá. Mong sớm nhận được sự giúp đỡ của bác.
À bài viết của bác rất hay và bổ ích, cảm ơn bác rất nhiều
Bạn mở file "AcchelperOptions.exe" trong thư mục AccHelper sẽ có màn hình dưới đây:
![]()
Bạn đổi "xu" thành "hào" sau đó mở lại Excel là được.
Vấn đề là nó sẽ ra thành "năm mươi hào" nhưng tôi cần nó đọc thành "năm hào" thì làm thế nào bác nhỉ
Vấn đề là nó sẽ ra thành "năm mươi hào" nhưng tôi cần nó đọc thành "năm hào" thì làm thế nào bác nhỉ
[B]VND[/B](Amount, OutputType, Unit1, Unit2, MUnit2, HasGroupingSymbol)
Amount: là số tiền cần chuyển đổi thành văn bản.
OutputType: là một số, nếu giá trị là 1 hàm trả về kiểu chuỗi TCVN3, 2 kiểu chuỗi là VNI, 3 kiểu chuỗi là Unicode - ngầm định (Chỉ dùng từ Excel 2007 trở lên)
Unit1: là giá trị kiểu chuỗi, chỉ ra loại đơn vị tiền tệ, ngầm định là "đồng"
[COLOR="#FF0000"]Unit2[/COLOR]: là giá trị kiểu chuỗi, chỉ ra loại đơn vị tiền tệ cho số lẻ, ngầm định là "xu"
[COLOR="#FF0000"]MUnit2[/COLOR]: là con số được nhân với số lẻ của Amount, quy đổi số lẻ từ đơn vị Unit1 sang Unit2, ngầm định giá trị là 1
HasGroupingSymbol là giá trị kiểu logic(boolean), nếu là TRUE thì chuỗi kết quả sẽ có dấu phảy (, ) ngăn cách câu, FALSE là giá trị ngầm định không có dấu (, ) ngăn cách.
Tớ cài trên MS Off 2010 x64 không chạy được. Có cách nào chỉ giúp với! Cảm ơn nhiều!