XLL Add-In Đổi số thành chữ - Tốc độ nhanh tối đa, nhanh hơn 80% các Addins khác (3 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.
 
Web KT

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

Back
Top Bottom