2011-08-16 34 views
6

Tôi có tệp XLS tạo tệp CSV có macro trên Excel 2003, tôi có 40 cột trở lên và 3 cột cuối cùng là tùy chọn, do đó có rất nhiều giá trị trống trên XLS , khi tôi chạy chương trình con xuất khẩu, nó sẽ không đặt dấu phẩy ở trên tất cả các hàng, tại sao? Bởi vì: http://support.microsoft.com/kb/77295 -.-Lỗi dấu phẩy đuôi của Excel trong tệp csv

Trong Microsoft Office Excel, nếu bạn lưu một tập tin trong văn bản hoặc trong CSV (dấu phẩy giá trị tách ra) định dạng, Excel đặt tab hoặc dấu phẩy giữa mỗi cột của bảng tính. Tuy nhiên, một số tệp văn bản nhất định có thể được lưu với số lượng tab hoặc dấu phẩy khác nhau trong khối 16 hàng.

đây là công việc đề nghị của họ xung quanh:

Để chắc chắn rằng Excel tiết kiệm tab hoặc dấu phẩy phân cách cho tất cả các cột rỗng, xác minh rằng cột cuối cùng trong tập tin có chứa một số dữ liệu trong ít nhất mỗi 16 hàng trong suốt tệp. Nếu các khối của hàng không chứa dữ liệu, hãy thêm dấu cách hoặc các ký tự khác trong mỗi 16 hàng vào các ô trong cột cuối cùng hoặc sắp xếp lại các cột trong trang tính sao cho cột cuối cùng trên trang tính luôn chứa thông tin.

-.- cách để đi microsoft! Ok-

Ok vì vậy vấn đề chính của tôi là tệp được tạo sẽ được phân tích cú pháp bởi một chương trình khác nằm ngoài phạm vi của tôi cần định dạng cụ thể vì bây giờ tôi sẽ thêm hàng trống 16 hàng nếu trường là trống rỗng, điều này dường như làm nhưng Bộ xử lý dữ liệu đang phàn nàn về khoảng trắng đó ... bạn có tin được không !?

Dù sao tôi cũng đã cố gắng để thêm một lá cờ và loại bỏ nó với chức năng tìm kiếm, nhưng OFC khi bạn lưu tập tin nó sẽ lấy đi delimiters một lần nữa ...

nhờ để đọc lịch sử của tôi; p

Mọi đề xuất?

Chỉnh sửa: Thật không may khi sử dụng Excel, dữ liệu được nhập thủ công thông qua bảng excel bởi người dùng khác nhau, mã vba thực hiện giống như tạo mẫu v.v ... đây là vấn đề duy nhất tôi gặp phải không thể thay đổi toàn bộ quá trình.

+0

thủ vòng các tế bào và sử dụng VBA để ra một CSV? –

+0

Đó là những gì tôi hiện đang làm .. – isJustMe

+1

Nếu bạn sử dụng vba để tự động lặp lại các ô và tạo một tệp CSV trong bộ đệm rồi ghi nó vào đĩa thì bài viết KB đó không áp dụng vì nó liên quan đến việc tạo CSV dựng sẵn ? –

Trả lời

5

Ví dụ thủ công;

Dim r As Range: Set r = Range("A1:C10") '// or ActiveSheet.UsedRange for everything 
Dim buffer As String, delimiter As String, c As Range 
Dim i As Long 

For Each c In r 
    If (i Mod r.Columns.Count) = 0 Then 
     If (Len(buffer)) Then delimiter = vbCrLf 
    Else 
     delimiter = "," 
    End If 
    buffer = buffer & delimiter & """" & CStr(c.Value) & """" '//or c.text to preserve formatting 
    i = (i + 1) 
Next 

Open "c:\xxx.csv" For Output As #1 
    Print #1, buffer 
Close #1 
+0

Hoàn hảo! Chính xác những gì tôi cần! – isJustMe

+0

hey Alex, tôi hy vọng bạn có thể giúp tôi về điều này: http://stackoverflow.com/questions/8605804/this-custom-validation-is-not-working-buti-dont-know-whats-happenning Cảm ơn! – isJustMe

0

Đề xuất 1) Ngừng sử dụng Excel để tạo tệp CSV.

Nguồn dữ liệu của bạn là gì? Excel lấy dữ liệu từ đâu? Có lẽ bạn có thể làm điều gì đó với nguồn dữ liệu gốc để tạo CSV thay vì sử dụng Excel làm người trung gian. Nếu bạn thích búa thực sự lớn, Biztalk là công cụ MS cuối cùng cho thao tác đầu vào/đầu ra dữ liệu. Rất ít người có thể kéo cái đó ra khỏi hộp công cụ của họ, nhưng việc ném cùng một chương trình C# tùy chỉnh để tạo một tệp CSV có thể được thực hiện trong vài giờ.

Tóm lại: Nếu có thể, hãy sử dụng công cụ tốt hơn!

0

Nếu bạn không có dấu phẩy trong dữ liệu của mình, sẽ rất dễ dàng để viết trình đọc văn bản đi qua và đếm số cột trong một dòng và chỉ thêm dấu phẩy vào cuối nếu không đủ . Nó không phải là lý tưởng, nhưng nó có thể dễ dàng hơn bằng cách viết một Excel tùy chỉnh để chuyển đổi CSV.

+0

Cảm ơn bạn đã đề xuất! Tôi có rất nhiều dấu phẩy mặc dù, một số lĩnh vực là lĩnh vực mô tả, những người khác là chi phí bán lẻ .. vv ,, – isJustMe

0

Cách đơn giản nhất:

ActiveWorkbook.SaveAs "MyFileNameAndDir.csv", xlCSV, Local:=True 
Các vấn đề liên quan