Từ dấu phẩy bị chuyển thành dấu chấm khi lưu file

Liên hệ QC

xuanlinh91

Thành viên mới
Tham gia
5/4/10
Bài viết
23
Được thích
0
Em dùng hàm sau để lưu một sheet file excel thành 1 file csdl .csv




Mã:
Sub SaveToCSV(path2 As String)
    myDir = path2
    ActiveWorkbook.SaveAs FileName:=myDir, FileFormat:=xlUnicodeText
End Sub

với tham số path2 được truyền vào là : "C:/.....DM.csv"




Sheet Dm của e như sau
sieuthiNHANH2011121634950yje4zgexmm9700.jpeg



Tuy nhiên thì khi lưu thành file csv thì lại bị chuyển toàn bộ dấu phẩy thành dấu chấm, làm lẫn lộn dữ liệu
sieuthiNHANH2011121634950yjk5ztgwmd9541.jpeg



Vậy mọi người cho em hỏi lý do và cách giải quyết trường hợp này ạ


Em xin cảm ơn
 
File CSV mặc định dấu phân cách hàng thập phân là dấu "." nên save dạng đó thì dấu thập phân từ "," (như của bạn) sẽ thành dấu "."

Vì thế khi mở lại file CSV đó, bạn phải chuyển định dạng dấu thập phân trở lại dấu "." ở trong Control Panel nhé
 
Upvote 0
File CSV mặc định dấu phân cách hàng thập phân là dấu "." nên save dạng đó thì dấu thập phân từ "," (như của bạn) sẽ thành dấu "."

Vì thế khi mở lại file CSV đó, bạn phải chuyển định dạng dấu thập phân trở lại dấu "." ở trong Control Panel nhé


Nhưng nếu em save bằng tay thì lại ko như thế

sieuthiNHANH2011121634950n2uzmwezy226886.jpeg



Vẫn có dấu phẩy phân cách thập phân như bình thường


sieuthiNHANH2011121634950mjrjotkynd8139.jpeg
 
Upvote 0
Em dùng hàm sau để lưu một sheet file excel thành 1 file csdl .csv




Mã:
Sub SaveToCSV(path2 As String)
    myDir = path2
    ActiveWorkbook.SaveAs FileName:=myDir, FileFormat:=xlUnicodeText
End Sub

với tham số path2 được truyền vào là : "C:/.....DM.csv"




Sheet Dm của e như sau



Tuy nhiên thì khi lưu thành file csv thì lại bị chuyển toàn bộ dấu phẩy thành dấu chấm, làm lẫn lộn dữ liệu



Vậy mọi người cho em hỏi lý do và cách giải quyết trường hợp này ạ


Em xin cảm ơn
Bạn đưa file mẫu của bạn lên xem thử (file Excel ấy)
 
Upvote 0
Lỗi này thường do nguyên nhân cài đặt Region, VN chơi 1 mình 1 kiểu dạng số nên nhiều chương trình bị trục trặc.
 
Upvote 0
Bạn thử như thế này xem:
PHP:
Sub SaveToCSV()
    Application.DecimalSeparator = "."
    Application.ThousandsSeparator = ","
    Application.UseSystemSeparators = False
    myDir = "d:\DM.csv"
    ActiveWorkbook.SaveAs Filename:=myDir, FileFormat:=xlUnicodeText
    Application.UseSystemSeparators = True
End Sub
 
Upvote 0
Bạn thử như thế này xem:
PHP:
Sub SaveToCSV()
    Application.DecimalSeparator = "."
    Application.ThousandsSeparator = ","
    Application.UseSystemSeparators = False
    myDir = "d:\DM.csv"
    ActiveWorkbook.SaveAs Filename:=myDir, FileFormat:=xlUnicodeText
    Application.UseSystemSeparators = True
End Sub
Test trên máy của tôi: Vẫn không có tác dụng gì, tức file csv vẫn định dạng dấu chấm là dấu thập phân
Có lẽ phải chỉnh Control Panel mới có tác dụng
 
Upvote 0
Bạn thử như thế này xem:
PHP:
Sub SaveToCSV()
    Application.DecimalSeparator = "."
    Application.ThousandsSeparator = ","
    Application.UseSystemSeparators = False
    myDir = "d:\DM.csv"
    ActiveWorkbook.SaveAs Filename:=myDir, FileFormat:=xlUnicodeText
    Application.UseSystemSeparators = True
End Sub

vẫn bị tình trạng như trên ạ :(
 
Upvote 0
Bạn thử như thế này xem:
PHP:
Sub SaveToCSV()
    Application.DecimalSeparator = "."
    Application.ThousandsSeparator = ","
    Application.UseSystemSeparators = False
    myDir = "d:\DM.csv"
    ActiveWorkbook.SaveAs Filename:=myDir, FileFormat:=xlUnicodeText
    Application.UseSystemSeparators = True
End Sub

Em đã thử rồi nhưng kết quả vẫn như cũ :(
 
Upvote 0
Có ai có cách nào giúp em code vba lưu file thành csv mà k bị chuyển dấu chấm thành phẩy như trên ko ạ, em đang rất cần cho công việc :(
 
Upvote 0
Có ai có cách nào giúp em code vba lưu file thành csv mà k bị chuyển dấu chấm thành phẩy như trên ko ạ, em đang rất cần cho công việc :(
Tôi nghĩ bạn đừng suy nghĩ tìm phương pháp chi cho mất công, chỉ có 1 cách: Chỉnh trong Control Panel mà thôi
 
Upvote 0
Ndu nói chỉnh Control Panel cũng không được? Thực ra yêu cầu của bạn là vô phương. Dạng file *.csv vẫn giữ nguyên cấu trúc và định dạng bảng tính và khi mở lại nó lại vẫn tự động hiển thị theo setting trong Control Panel. Chỉ còn cách là:
1/Dùng hàm Format chuyển dữ liệu thành Text trước khi lưu.
2/Lưu file dưới dạng file *.Txt
 
Upvote 0
Ndu nói chỉnh Control Panel cũng không được? Thực ra yêu cầu của bạn là vô phương. Dạng file *.csv vẫn giữ nguyên cấu trúc và định dạng bảng tính và khi mở lại nó lại vẫn tự động hiển thị theo setting trong Control Panel. Chỉ còn cách là:
1/Dùng hàm Format chuyển dữ liệu thành Text trước khi lưu.
2/Lưu file dưới dạng file *.Txt
Ý em là chỉnh Control Panel theo đúng chuẩn English (US), khi ấy thì dấu thập phân sẽ là dấu chấm còn dấu phân cách ngàn sẽ là dấu phẩy ---> Như thế, khi ta mở file Excel gốc ta sẽ nhìn thấy dấu chấm, đồng thời khi lưu thành csv cũng vẫn là dấu chấm ---> Vậy là đồng nhất rồi
 
Upvote 0
Ý em là chỉnh Control Panel theo đúng chuẩn English (US), khi ấy thì dấu thập phân sẽ là dấu chấm còn dấu phân cách ngàn sẽ là dấu phẩy ---> Như thế, khi ta mở file Excel gốc ta sẽ nhìn thấy dấu chấm, đồng thời khi lưu thành csv cũng vẫn là dấu chấm ---> Vậy là đồng nhất rồi

Cả công ty em dùng dữ liệu theo định dạng phần thập phân là dấu phẩy, phần hàng nghìn là dấu chấm. Vậy làm sao bắt cả công ty theo em được ạ :(
:(

Khi em thực hiện thao tác lưu ra file csv bằng tay thì phần thập phân vẫn đc giữ là dấu phẩy, không hề bị thay đổi ?? thậm chí em đã record lại quá trình lưu đó thành macro, sau đó chạy lại macro đó thì lại bị chuyển dấu phẩy thành dấu chấm

sieuthiNHANH2011121634950n2uzmwezy226886.jpeg


sieuthiNHANH2011121634950mjrjotkynd8139.jpeg
 
Upvote 0
Bạn đưa cái file ấy lên đây xem sao?
 
Upvote 0
Web KT

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

Back
Top Bottom