XLL Add-In Đổi số thành chữ - Tốc độ nhanh tối đa, nhanh hơn 80% các Addins khác (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

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
 
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

Công thức là:

=VND(93000,,"đô la Mỹ")
 
Use Excel Add-In Accounting Helper v2.0.4 trong Access ?

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 !
 

File đính kèm

Lần chỉnh sửa cuối:
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
 
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 ? }}}}}
untitled.JPG
 

File đính kèm

Lần chỉnh sửa cuối:
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

Bạn dùng sai cấu trúc của hàm VNDW. Khai báo API của hàm VNDW và USDW như dưới đây:

Mã:
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")

Khai báo trong "AcchelperOptions" vẫn dùng trong Access. Với điệu kiện file *.ini phải nằm trong cùng thứ mục của file acchelper.xll, tức nămgf trong C:\Windows\System32.
 
Lần chỉnh sửa cuối:
Đố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 @$@!^%

:cc_confused: 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 ;;;;;;;;;;; ",," }}}}}

:cc_confused:
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 -\\/.
 

File đính kèm

Lần chỉnh sửa cuối:
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 @$@!^%

:cc_confused: 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 ;;;;;;;;;;; ",," }}}}}

:cc_confused:
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 à.
 
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 à.

Hj tại nhiều nên mình không biết lấy cái nào là ok hết **~** mì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!
 
Hj tại nhiều nên mình không biết lấy cái nào là ok hết **~** mì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!
Chả biết cái code Amount này có OK, bạn test thử.
 

File đính kèm

nhờ giúp hoàn chỉnh code đọc số -> english!

Mì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 giúp mình ! Many thanks!
untitled.JPG
* 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)

Mã:
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
 

File đính kèm

Lần chỉnh sửa cuối:
Mì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)
Làm 1 if nữa vậy, replace
PHP:
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
 
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

Bạn cài lại AccHelper.xll theo đường dẫn mới là được.
 
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
 
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

Điều này là do kết nối file bên Excel sang Word nó không hiểu chuỗi unicode. Muốn hiện chữ có dấu bạn có hai cách:
+ Dùng Excel 2007 trở lên, nếu font là unicode
+ Dùng hàm VND với đối số tứ 2 đặt kiểu chuỗi trả về là VNI hoặc TCVN3/ABC , bên Word định dạng về font tương ứng là đc.
 
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
 
Có ai cài đạt Add-in (đổi số thành chữ) thành công chưa, sao mình cài hoài mà sử dụng ko được. Ai biết giúp mình với....
Nhớ cho mình một vài ví dụ nữa nha!
Kám ơn nhiều nhiều!!
 
Lần chỉnh sửa cuối:
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

Dùng file Excel 2007, 2010 là được.
 
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
 
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

Bạn đọc kỹ file hướng dẫn nhé.
 
Các Pro ơi giúp mình với: Mình sử dụng Office 2003, trước đây sử dụng addins đọc số thành chữ bình thường, nhưng từ khi cai phần mềm diệt Virus Kaspersky thì không đọc được nữa. Ai có cách nào chỉ mình với.

Many Thanks
 
Cho tôi hỏi là Hàm này có nhúng vào file luôn hay không? Nghĩa là máy của tôi có AddIn này rồi nên khi sử dụng hàm sẽ đổi số ra chữ, nhưng khi đem sang một máy khác (để làm tiếp hoặc in ra chẳng hạn) thì ô đó vẫn hiện ra chữ đó hay là không hiện được (vì máy đó chưa cài AddIn này ?
 
Mình muổn hỏi một chút như sau : mình có cái Add-ins đổi chữ hoa thành chữ thường và ngược lại trong đó có hàm USD và VND rồi nếu mình cài thêm add in này thì có sao k ?
 
Đệ đã 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
 
Đệ đã 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

Trong file nén, bạn giải nén ra sẽ thấy.
 
Đệ đã giải nén ra và đã thấy, nhưng khi đệ thay đỗi chữ số ngàn sang nghìn ấn ok thì không được, không biết là tại sao
 
Acchelper

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!
 
Lần chỉnh sửa cuối:
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!
Hãy dùng hàm ROUND để làm tròn số trước khi đọc.

=VND(ROUND(A1,0))
 
minh dùng office 2010 ko sử dụng đươc bạn ơi
 
cho hỏi máy tôi đã cài đọc chữ sang số của VND thì được nhưng các đơn vị tiền tệ khác thì ko (tôi đang xài excel 2007). mong trả lời giúp
 
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ữ
 
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ữ

Bạn làm thế này:
="""" & VND(1000) & """"
 
Dấu ngoặc đơn là dấu "(" và ")" Tuân ạ.
 
Có 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.
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.com
 
hay quá mà sao mặt định không phải là font unicode vậy anh.
 
Accounting Helper - Đọc số thành chữ 2.1.0 (32 & 64-bit)

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)
 
Bạn cho mình hỏi sao mình đang dùng Unicod. Để .VNTIME thì đọc được nhưng để Timesnewroman thì không đọc được . Giúp em với ! Thanks
Hiện mình đang dùng mail merge để trộn thư gửi cho Kh mà. Mà bản Word và Exel mình đều dùng Timenewsronman
 
RE về AccHelper

Sao khi mình dùng hàm VND trong Acchelper để đổi số sang chữ (Office 2007).
Cụ thể:
Cell A33: =VND($E$31) thì bị trả kết quả: 3,4851E+308 (Tất nhiên là các cell không bị liên kết chéo).
Phần mềm có lẽ là tốt, nhưng hoạt động chưa ổn định thì phải, vì các sheet mà gọi hàm VND lâu lâu hay bị giống trường hợp trên.
Mình dùng WinXP SP3 & Office 2007 SP2.
 
Lần chỉnh sửa cuối:
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!
 
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!

Tính năng này có ngay từ đầu mà bạn. Bạn xem cấu trúc và hướng dẫn của hàm trong file "Help.xls".
 
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
Untitled.jpg
Xin các pro giúp em với . Thank
 
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.

Bạn copy đoạn nói về cấu trúc hàm VND() và phần giải thích các tham số của hàm lên đây nhé.
 
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
 
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

Thực ra ngay từ đầu tôi đã viết code (Activex Library + Automation Object) và debug kỹ càng. Chỉ có điều tôi không thêm được vào Add-Ins vì có lỗi: 'The file you selected does not contain a new Automation Server, or you do not have sufficient privileges to register the Automation Server'
Bây giờ thì tôi làm được rồi. Chỉ thêm mỗi 1 khóa trong Registry. 1 khóa "Programmable" bé bằng hạt cát mà mất bao công xoay sở!
Của tôi là DLL thôi chứ chưa phải là XLL, nhưng hoạt động tốt, sử dụng được các hàm trong thư việ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?
 
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?

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:

FuncArgs.jpg
 
Lần chỉnh sửa cuối:
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:
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.
Tôi đã và đang hỏi bạn vì một lý do đơn giản là tôi đọc thấy là AccHelper được viết bằng Delphi. Vậy tôi có 1 câu hỏi cuối cùng. Bạn có cấu trúc XLOPER12 trong Delphi không? Nếu có thì tốt quá, còn không thì đành mầy mò thôi. Tôi không lập trình trong C/C++ nhưng các kiểu dữ liệu thì tôi đọc code cũng hiểu được nhiều và chuyển sang Delphi được nhiều. Tất nhiên làm trong C/C++ thì có nhiều ví dụ hơn nhưng trong tất cả các vd. tôi tìm được trên mạng đều không có miêu tả hàm do không dùng pxFunctionHelp nhưng tôi làm tương tự như với vd. pxFunctionText, pxArgumentText.
test_xll.jpg
 
Đoạn khai báo cấu trúc XLOPER, XLOPER12 theo ngôn ngữ C dưới đây nằm trong file "xlcall.h" của Microsoft.
Mã:
/*
** 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
*/

Với Excel 2003 trở về trước kiểu dữ liệu là XLOPER, Còn với Excel 2007 trở đi dùng XLOPER12 với lý do chính:

XLOPER dùng cho chuỗi AnsiString - LPSTR/PCHAR; Số dòng 65536, Cột là 255 nên biến Rows, Cols nhận kiểu WORD
XLOPER12 dùng cho chuỗi Unicode - PWCHAR/Delphi; Số dòng 1048576, Cột là 16384 nên biến Rows, Cols nhận kiểu INT32 (Integer/Delphi).

Với Excel 2003 trở về trước, số ký tự tối đa là 255 và ký tự không phải unicode nên trong Delphi sử dụng kiểu ShortString (vì bản chất ShortString là AnsiString[255])
Với Excel 2007 trở về sau, số ký tự tối đa là 32768 và ký tự là unicode nên trong Delphi sử dụng kiểu WideString, nhưng theo yêu cầu khai báo của Microsoft trong file xlcall.h thì phải dùng kiểu con trỏ PWideChar).

Để viết được xll cho Excel 2007 hoặc cao hơn với chuẩn unicode thì bạn buộc phải chuyển tất cả các kiểu dữ liệu thuộc XLOPER sang XLOPER12. Bạn hãy dựa vào khai báo cũ trong Delphi của bạn, so sánh với khai báo trong xlcall.h rồi đổi sang XLOPER12. Nếu đọc hiểu được khai báo trong C thì bạn làm việc này đơn giản.
 
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.
 
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.


Bạn nói không đúng rồi. Các câu tôi hỏi:
"Bạn có thể hướng dẫn tôi làm XLL không?"
Sợ hiểu lầm là xin code nên tôi ghi rõ:
"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?"
Bạn cho là tôi hỏi không rõ ràng, vòng vo?
Sau khi tự làm được thì tôi báo ngay để không trả lời về những câu hỏi đã đặt ra nữa. Tôi làm như thế để cho rõ ràng rồi còn gì. Về câu hỏi cuối của tôi thì:
"Vậy tôi có 1 câu hỏi cuối cùng. Bạn có cấu trúc XLOPER12 trong Delphi không? Nếu có thì tốt quá, còn không thì đành mầy mò thôi."
Bạn cho là câu hỏi không rõ ràng, vòng vo? Tôi nói rõ là tôi có 1 câu hỏi cuối cùng, và nó là: "Bạn có cấu trúc XLOPER12 trong Delphi không?"
Tôi không hỏi khai báo trong C như thế nào, không hỏi sự khác biệt giữa XLOPER và XLOPER12 hay ShortString, WideString như thế nào vì nhìn bài của tôi viết thì thấy rõ là tôi không hỏi những vấn đề đó vì tôi đã biết.
Tôi hỏi có XLOPER12 trong Delphi không. Câu trả lời chỉ có thể là Có hoặc Không. Hoặc là tôi có nhưng không chia sẻ được. Hoặc lờ câu hỏi đi như đã lờ 2 người trong chủ đề này. Làm thế cho khỏi mất thời gian của mình và của người khác.
Nếu sau khi kiểm tra lại bạn vẫn cho là tôi hỏi không rõ, vòng vo thì tôi đành chấp nhận và chúng ta dừng tại đây. Thực ra những chuyện không đâu chả đáng để chúng ta mất thời gian.
Chúc bạn một ngày mới tốt lành.
 
cảm ơn bác, e đã down và dùng được cho Office 2010 dùng với W7 64 bit rồi ạh, dùng rất tốt
 
Add in đổi số ra chữ có không trăm ...

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 download addins là TVexcel01.xla có rất nhiều trên diễn đàn khắc phục được lỗi này.
 
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 thân add-in Accounting Helper chạy đúng mà bạn. Bạn đang dùng cái nào vậy.
 
mì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.
 
Excel XLL Add-In Accounting Helper (AccHelper.xll)

FuncArgs.jpg


- 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)

AcchelperOpt.jpg


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.
 
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ỹ .

Công thức là:
=VND(125;;"đô la Mỹ")

Bạn chịu khó đọc hướng dẫn cấu trúc của hàm VND(), USD() trong Add-in này vì nó cho phép nhiều lựa chọn, không chỉ đọc mỗi số tiền.

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.

Bạn dùng công thức =VND(1000) kết quả là "Một ngàn đồng." không có từ chẵn mà bạn. Có thể bạn dùng nhầm hàm BS_VND của Add-in A-Tools hoặc phiên bản cũ của Accounting Helper.
Quan điểm của tôi và nhiều người đang dùng thì việc có từ "chẵn" không vấn đề gì, nhiều nơi họ cần cái từ này bất kể lý luận gì.
 
Lần chỉnh sửa cuối:
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
 
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

Tôi kiểm tra không vấn đề gì bạn à. Hàm VND, VNDW có thể đọc được với chuỗi số có 15 con số.
 
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é?
 
Lần chỉnh sửa cuối:
Đượ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.

Tôi cung cấp Add-in này là cho tất cả mọi người sử dụng miễn phí. Có rất nhiều người đang ứng dụng và tôi thấy vui vì giúp được cho nhiều người. Những ai dùng thấy lỗi ở đâu báo lại tôi sửa. Tôi không có ý định opensource nên không cung cấp mã nguồn. Tên tiêu đề tôi đặt là đúng với kiểm tra của tôi ở thời gian đó, có thể không hoàn toàn chính xác theo cách kiểm tra của mỗi người. Tôi là chủ topic này, tôi có quyền đặt tên theo suy nghĩ của tôi, đúng, sai hay chưa hợp lý và chỉ được rõ thì tôi ghi nhận.

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?

Cả dạng kiến thức này nữa SUMPRODUCT và Công thức mảng - Phép tính có nhiều điều kiện . Thời điểm tôi viết bài này trên GPE là 06/2006. Thời điếm đó hiếm có bài viết nào về kiến thức này. Đến ngày nay thì đã rất nhiều người đã ứng dụng kỹ thuật này để làm báo cáo trên Excel. Vấn đề này tôi không giấu nghề đúng không?

Giải pháp diệt virus macro VirusMacroWarning cộng đồng dùng Excel ở Việt Nam đang ứng dụng rất nhiều. Công cụ này tôi chia sẻ không tính phí.

Những thứ tôi chia sẻ cho 2 đối tượng:
+ Học tập và Ứng dụng: các bài viết, phần mềm và công cụ miễn phí
+ Lập trình: các các bài viết, ví dụ và mã nguồn

Muốn biết về tôi như thế nào, tham gia trên diễn đàn này để quảng cáo hay chia sẻ thì cứ tìm bài viết của "Nguyễn Duy Tuân", "TuanVNUNI".

Bạn mới tham gia trên diễn đàn tôi không biết bạn đã đóng góp được những gì cho cộng đồng GPE này. Mục đích của bạn lên đây để học tập, chia sẻ, có thêm các mối quan hệ tốt? Tôi hy vọng dù mục đích gì thì với kiến thức đã có bạn có thể đóng góp được nhiều cho cộng đồng dùng Excel nói riêng và tin học nói chung. Những thắc mắc tỉ mỉ, những phát hiện gì đó bạn có thể chỉ rõ ra để mọi người cùng hoàn thiện nhé.
 
Lần chỉnh sửa cuố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 chỉ nêu 2 trường hợp cụ thể - 1 trường hợp không có code và 1 trường hợp có. Tôi không "đòi" code mà chỉ khẳng định thực trạng. Tôi cũng không kết luận gì chung cho tất cả các phần mềm khác của bạn. Vậy bạn liệt kê chúng ra để làm gì? Tôi có đề cập tới chúng đâu?
Do có 2 bạn thắc mắc hoặc đề nghị:
Đào Việt Cường: "anh TuanVNUNI nên cung cấp mã nguồn ..."
Chuotdong: "ko xem được bạn viết có đúng chưa"
nên tôi bày tỏ ý kiến cho họ hiểu tại sao trong trường hợp này tác giả cho code còn trong trường hợp ngược lại không cho.
Tôi chỉ giải thích, không có đòi hỏi gì. Và chỉ đề cập tới 2 trường hợp này mà thôi.
 
Lần chỉnh sửa cuối:
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)
 
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)


Tôi chỉ thông báo để ai đó quan tâm thì tự tìm. Còn nếu tìm không ra thì hỏi, lúc đó tôi sẽ "thưa thốt". Chứ đã chắc gì có người quan tâm mà mình độc thoại cho mất công. Vì tôi không tin là có ai đó sử dụng mà bằng ấy thời gian không phát hiện ra những lỗi quá đơn giản.
 
Lần chỉnh sửa cuối:
2uan điểm của bạn hơi xa lạ với cộng đồng này!


Đú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.

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!
 
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!

Tôi đã nói rõ là nếu ai quan tâm thì tôi sẽ "thưa thốt" nhưng thậm chí tác giả cũng có quan tâm đâu. Thế thì tôi phải mất công làm gì? Cái kiểu: bạn có ý kiến ý cỏ gì thì sang "bên kia nhé", cũng chả thèm tò mò là: có thật không, chỗ nào. Thế thì tạm biệt nhé. Chính tác giả và những người định dùng cái đó mới nên quan tâm chứ tôi không định dùng. Gợi ý cho mọi người thôi.
Tôi nói để ai quan tâm thì tự tìm. Chứ tôi đâu có trách nhiệm gì với bạn? Tôi không có một trách nhiệm gì với ai cả.
Thông báo là có lỗi để mọi người biết rồi tìm tòi cũng là một cách đóng góp, đúng không? Vì nếu không có thông báo này thì ai sẽ biết để quyết tìm ra đây?
 
Lần chỉnh sửa cuối:
em chào anh ạ! anh ơi anh giúp em với!

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!
 
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!

Theo như hướng dẫn:
1. Với Excel 2003 trở về trước, muốn đọc được unicode, bạn phải cài 2 thư viện "AccHelper.xll" và "Acchelper.xla" khi đó bạn dùng hàm VNDW().
Nếu không muốn unicodem thì dùng VND(), bạn chỉ phải cài 1 thư viện "AccHelper.xll" thôi, đối số trả về loại nào thì bạn định dạng font loại đó trên Excel.
2. Với Excel 2007 trở về sau, bạn chỉ phải cài 1 thư viện "AccHelper.xll", hàm VND() ngầm định trả về Unicode.

Cách dùng các hàm VND() bạn đọc file "Help.xls".
 
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.
untitled-3.png
 
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.
untitled-3.png

Còn tôi thì không làm được như bác này oánh =VND nó sinh ra mấy hàm nữa chưa biết chọn cái nào, em mới dùng excel lên mong các bác chỉ dẫn cụ thể cho em. em xin cảm ơn.
 
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.
untitled-3.png

Bạn dùng sai đối sốp thứ 2. Đối số thứ 2 là trả về kiểu chuỗi. Với Office 2007 trở đi để trống thì trả về unicode. Tham số quy định có dấu phảy ở vị trí thứ 6.

Bạn cần đặt hàm như sau:
=VND(B2;;;;;TRUE)
 
Đã dùng version mới của anh, chỉ biết nói một câu CẢM ƠN.
 
Cài xong máy mình báo lỗi không sử dụng được
"This workbook has lost its VBA project, ActiveX controls and any other programmability-related features."
 
Cám ơn bạn nhé. Add-in sử dụng rất tốt! mong bạn có nhiều add-in hay hơn cho a e xài hiii
 
bạn oi mình kg bit làm sao để cài đặt hàm dịch số ( mình đang sd W.2003). Các bạn có thể giúp mình kg. nếu dc thì nhăn cho mình wa nick: thuydao7411.
Chan thành cám ơn .
 
hixz!!
Cả nhà ui ai biết giúp tớ với!
tớ đang tìm chương trình đọc cả số sau dấu phẩy
ví dụ: 6.5 đọc là sáu phẩy năm.cả nhà mình có ai biết không gửi cho tớ với
email: ngothihongdao@thaco.com.vn
cám ơn cả nhà nhiều!
 
Excel XLL Add-In Accounting Helper (AccHelper.xll)

FuncArgs.jpg


- 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)

AcchelperOpt.jpg


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)

tôi cài đúng theo hướng dẫn rối tại sao ko đc nhỉ toàn ra "#NAME"
có bác nào gặp lỗi như vậy ko chỉ giúp tôi với
 
- Phần mềm này hay thật.
- Nhưng nếu tôi muốn có dấu phân cách hàng nghìn thì phải làm sao? vào đâu để bổ sung.
vd: một triệu, hai tram, năm mươi ngàn đồng.
 
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.
 
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.

Công thức là
=VND(1250000;;;;;TRUE)

Bạn có thể đổi dối ; thành dấu , nếu máy yêu cầu.

Bạn đọc hướng dẫn ở file "help.xls".
 
Lần chỉnh sửa cuối:
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á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:
AcchelperOpt.jpg


Bạn đổi "xu" thành "hào" sau đó mở lại Excel là được.
 
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!
 
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ỉ

Thế tự bạn bạn không tư duy được à? Bạn ra ngoài xã hội ai nói gì bạn cũng gật?
Nếu 12.5 hàm đọc là "Mười hai đồng năm mươi xu" thì sau khi đổi "xu" thành "hào" thì ắt phải có "Mười hai đồng năm mươi hào". Điều hiển nhiên. Tất nhiên tôi không cài, không test nên chỉ dựa vào tư duy mà thôi. Cũng có thể trong code tác giả kiểm tra nếu là "hào" thì số lượng "xu" sẽ được chia cho 10 để có số lượng hào. Nhưng nếu bạn đã test mà ra kết quả "Mười hai đồng năm mươi hào" thì có lẽ tác giả quên không kiểm tra.
Làm gì có chuyện đơn giản là đổi thiết lập "xu" thành "hào" được nhỉ. "hào" là 10 "xu" cơ mà. Nếu cho phép thiết lập như thế thì code phải kiểm tra để nếu cần thì chia cho 10.
 
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ỉ

Trường hợp của bạn có lẽ không cần can thiệp vào "AcchelperOptions.exe", mà chỉ cần điền vào tham số của hàm là được.

=VND(12,5;;"đồng";"hào";10)

Đọc là "Mười hai đồng và năm hào."

Bạn xem hướng dẫn ở màn hình này.
cachdoc.jpg

Cấu trúc của hàm VND là:
Mã:
[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!

Bạn phải cài add-in ở thư mục AccHelper\x64 cho Office 2010, 2013 64-bit.
 
Lần chỉnh sửa cuối:

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

Back
Top Bottom