Lỗi hàm đọc chữ sang số khi chia sẻ file

  • Thread starter Thread starter uronmapu
  • Ngày gửi Ngày gửi
Liên hệ QC

uronmapu

Thành viên thường trực
Tham gia
9/6/10
Bài viết
361
Được thích
15
Chào các bác và các Thầy
Em có 2 máy tính có cài Office 2007 (gọi là máy 1 và máy 2)
Tại máy 1 em có tạo 1 folder A và share folder này, em copy 1 file excel trong này
Máy em đã add hàm đọc số như file đính kèm cho (tại 1 đường dẫn - ổ C cho cả 2 máy)
Em gặp phải lỗi như sau:

Nếu file excel mở ở máy 2 (bình thường) sau đó đóng lại
Mở trên máy 1 thì ko hiển thị được đổi số thành chữ

Nếu làm trên máy 1 (tạo ra 1file excel), đổi số thành chữ bình thường, sang máy 2 mở file đó, vẫn đổi số sang chữ bình thường, đóng file và về máy 1 mở thì lại ko hiển thị được (# NAME)

Em không hiểu làm thế nào giờ, mong các bác giúp

Cảm ơn
 

File đính kèm

Chào các bác và các Thầy
Em có 2 máy tính có cài Office 2007 (gọi là máy 1 và máy 2)
Tại máy 1 em có tạo 1 folder A và share folder này, em copy 1 file excel trong này
Máy em đã add hàm đọc số như file đính kèm cho (tại 1 đường dẫn - ổ C cho cả 2 máy)
Em gặp phải lỗi như sau:

Nếu file excel mở ở máy 2 (bình thường) sau đó đóng lại
Mở trên máy 1 thì ko hiển thị được đổi số thành chữ

Nếu làm trên máy 1 (tạo ra 1file excel), đổi số thành chữ bình thường, sang máy 2 mở file đó, vẫn đổi số sang chữ bình thường, đóng file và về máy 1 mở thì lại ko hiển thị được (# NAME)

Em không hiểu làm thế nào giờ, mong các bác giúp

Cảm ơn

Thử copy mỗi 1 máy chạy riêng 1 addins xem.
 
Em có làm thế ạ, máy 1 em copy file đặt vào ổ C, máy 2 em cùng làm tương tự

Nhưng nếu chạy từng máy ko sao, nếu máy 2 mở file đó và đóng lại (không thay đổi gì) và mở ở máy 1 thì bị lỗi (không hiển thị kết quả nữa # NAME)
 
Cùng ổ đĩa chưa đủ, vì đường dẫn công thức trong 1 file đang share không chỉ C:\abc.xla mà còn tên máy phía trước.
Do đó file share cần phải ghi hẳn code vào file.
 
Ghi hẳn code vào file nghĩa là gì ạ, bác có thể nói rõ hơn giúp em

Cảm ơn
 
Em vừa làm theo bác và vào xem thì cái file em đính kèm đó người ta đặt password rồi :(
 
Em tìm được 1 bài: http://www.giaiphapexcel.com/forum/showthread.php?69786-Xin-file-chuyển-số-thành-chữ

Em tải file về và nhấn Alt+F11 để xem code nhưng ko thấy ạ

Bác nào có code chuẩn cho em xin được ko?

Bạn xem bài Add-in: Đổi số sang chữ trong Excel sử dụng font Unicode có code ở diễn đàn nhiều, không cần tải file cũng được, copy nó về dán vào module trong cửa sổ VBE, bạn biết cách dán chứ?
 
Cảm ơn bác, em copy file đấy vào thư mục C:\Documents and Settings\UserName\Application Data\Microsoft\AddIns
 
Cảm ơn bác, em copy file đấy vào thư mục C:\Documents and Settings\UserName\Application Data\Microsoft\AddIns

Ý mình là chép code vào module như file đính kèm ấy. Bạn nhấn Alt+F11 để vào cửa sổ VBE rồi xem trong module tôi chép code vào đó.
 

File đính kèm

Em hiểu rồi ah, export module này và import vào file excel của em đúng ko ạ (hoặc copy - paste)

Để em thử có gì em báo kết quả các bác nhé
 
Em hiểu rồi ah, export module này và import vào file excel của em đúng ko ạ (hoặc copy - paste)

Để em thử có gì em báo kết quả các bác nhé

Chính xác là như thế, làm thế sẽ không bị lỗi đường dẫn khi đưa file đó sang máy khác.
 
Em làm theo nhưng ko lưu được file dưới dạng xlsx (MS2007) mà phải lưu dưới dạng xlsm (bắt buộc phải lưu định dạng này mới lưu được Macro ạ). file này có như excel bình thường ko ạ? có làm được MailMerger như file excel ko các bác
 
Thêm nữa là nếu làm với các file excel khác thì lại phải làm lại động tác copy-paste hoặc import ạ?
 
Ý mình là chép code vào module như file đính kèm ấy. Bạn nhấn Alt+F11 để vào cửa sổ VBE rồi xem trong module tôi chép code vào đó.

Em xin hỏi thêm viết hoa số đầu tiên trong cách đọc chữ này thế nào ạ

12345678 -> mười hai triệu ba trăm năm mươi bốn nghìn sáu trăm tám mươi bảy

Em muốn chữ Mười viết hoa chữ M ạ
 
Em xin hỏi thêm viết hoa số đầu tiên trong cách đọc chữ này thế nào ạ

12345678 -> mười hai triệu ba trăm năm mươi bốn nghìn sáu trăm tám mươi bảy

Em muốn chữ Mười viết hoa chữ M ạ

Bạn dùng hàm sau:

Mã:
Public Function DocSoUni(conso) As String
s09 = Array("", " m" & ChrW(7897) & "t", " hai", " ba", " b" & ChrW(7889) & "n", " n" & _
ChrW(259) & "m", " s" & ChrW(225) & "u", " b" & ChrW(7843) & "y", " t" & ChrW(225) & "m", " ch" & ChrW(237) & "n")
lop3 = Array("", " tri" & ChrW(7879) & "u", " ngh" & ChrW(236) & "n", " t" & ChrW(7927))
If Trim(conso) = "" Then
DocSoUni = ""
ElseIf IsNumeric(conso) = True Then
If conso < 0 Then dau = ChrW(226) & "m " Else dau = ""
conso = Application.WorksheetFunction.Round(Abs(conso), 0)
conso = " " & conso
conso = Replace(conso, ",", "", 1)
vt = InStr(1, conso, "E")
If vt > 0 Then
sonhan = Val(Mid(conso, vt + 1))
conso = Trim(Mid(conso, 2, vt - 2))
conso = conso & String(sonhan - Len(conso) + 1, "0")
End If
conso = Trim(conso)
sochuso = Len(conso) Mod 9
If sochuso > 0 Then conso = String(9 - (sochuso Mod 12), "0") & conso
docso = ""
i = 1
lop = 1
Do
n1 = Mid(conso, i, 1)
n2 = Mid(conso, i + 1, 1)
n3 = Mid(conso, i + 2, 1)
baso = Mid(conso, i, 3)
i = i + 3
If n1 & n2 & n3 = "000" Then
If docso <> "" And lop = 3 And Len(conso) - i > 2 Then s123 = " t" & ChrW(7927) Else s123 = ""
Else
If n1 = 0 Then
If docso = "" Then s1 = "" Else s1 = " kh" & ChrW(244) & "ng tr" & ChrW(259) & "m"
Else
s1 = s09(n1) & " tr" & ChrW(259) & "m"
End If
If n2 = 0 Then
If s1 = "" Or n3 = 0 Then
s2 = ""
Else
s2 = " linh"
End If
Else
If n2 = 1 Then s2 = " m" & ChrW(432) & ChrW(7901) & "i" Else s2 = s09(n2) & " m" & ChrW(432) & ChrW(417) & "i"
End If
If n3 = 1 Then
If n2 = 1 Or n2 = 0 Then s3 = " m" & ChrW(7897) & "t" Else s3 = " m" & ChrW(7889) & "t"
ElseIf n3 = 5 And n2 <> 0 Then
s3 = " l" & ChrW(259) & "m"
Else
s3 = s09(n3)
End If
If i > Len(conso) Then
s123 = s1 & s2 & s3
Else
s123 = s1 & s2 & s3 & lop3(lop)
End If
End If
lop = lop + 1
If lop > 3 Then lop = 1
docso = docso & s123
If i > Len(conso) Then Exit Do
Loop
If docso = "" Then
     DocSoUni = "kh" & ChrW(244) & "ng"
Else: docso = Trim(docso): DocSoUni = dau & UCase(Left(docso, 1)) + Right(docso, Len(docso) - 1)
End If
Else
DocSoUni = conso
End If
End Function
 
Em copy code của bác rồi nhấn Alt+F11, sau đấy insert 1 module rồi paste đoạn code vào, sau đấy save, kết quả là không save file dưới dạng xlsx (MS2007) mà phải lưu dưới dạng xlsm (bắt buộc phải lưu định dạng này mới lưu được Macro ạ).

Nếu lưu dưới dạng xlsm thì không vấn đề, có 1 cái bất tiện là nếu em làm sang 1 file excel khác (tạo mới) thì lại phải copy lại đoạn code như trên

Thế này mất công quá

@: với 1 file em bị lỗi em làm theo kiểu này thì ok rồi (nếu có 100 file thì em phải copy đến ..... híc híc ... :( :(( lần ạ )​
 
Web KT

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

Back
Top Bottom