2012-11-21 39 views
8

Gần đây tôi cần sao chép một số dữ liệu vào một bảng tính, sử dụng VBA để định dạng nó, sau đó lưu trang tính đó vào tệp CSV. Tôi sử dụng mã sau:Làm thế nào để lưu tập tin csv bán kết tràng bằng cách sử dụng vba?

ws.SaveAs Filename:=filestr, Fileformat:=xlCSV 

ws là trang tính tôi đã lưu.

Điều này sẽ cung cấp cho tôi tệp CSV được phân cách bằng dấu phẩy.

Tuy nhiên, tôi muốn lưu trang tính đó vào tệp phân cách bằng dấu chấm phẩy. Tôi đã làm một số Googling và tìm thấy các giải pháp sau đây:

  1. Vào Start> Settings> Regional and Language Options
  2. Bấm vào nút Customize
  3. Next để Liệt kê dạng tách trong một dấu chấm phẩy (;)

tôi đã theo các thủ tục nêu trên và thay đổi mã của tôi để:

ws.SaveAs Filename:=filestr, Fileformat:=xlCSV, Local:=True 

Nhưng tôi stil l có tệp CSV được phân cách bằng dấu phẩy làm đầu ra.

Các phiên bản của excel tôi sử dụng là Excel 2003 và hệ điều hành của tôi là Windows XP

bất cứ ai có thể đề nghị làm thế nào để tiết kiệm một dấu chấm phẩy tập tin được phân định bằng VBA?

+3

Đây là cách để thực hiện thủ công; http://stackoverflow.com/a/7079703/246342 thay thế dấu phân cách bằng dấu ";" và phạm vi với ActiveSheet.UsedRange –

+0

Cảm ơn rất nhiều cho đề xuất của bạn. Nhưng tôi đã gặp phải một vấn đề khi tôi cố chạy mã của bạn. Tôi có một số giá trị như '1.0000000' trong bảng tính của tôi và khi nó được chuyển thành chuỗi bằng' CStr (c.Value) ', nó được tự động làm tròn thành' 1'. Bạn có thể đề nghị làm thế nào để đối phó với nó? Cảm ơn :) – user1758952

+1

Để giữ định dạng thay thế 'CStr (c.Value)' bằng 'c.text' –

Trả lời

0

Chỉ cần sử dụng mã này: ActiveWorkbook.SaveAs "file.csv của tôi", xlCSV, địa phương: = True

(không sử dụng: Tên file: =)

+1

Sử dụng" Tên tệp: = "hoặc không thay đổi bất cứ điều gì –

10

tôi đã kiểm tra chỉ này bởi vì có cùng một vấn đề. Tên tệp không có chức năng trong trường hợp này.

Đây là những gì làm việc cho tôi:

With ActiveWorkbook 
    .SaveAs Filename:="My File.csv", FileFormat:=xlCSV, Local:=True 
    .Close False 
End With 

Trong thiết lập khu vực ->; < - làm dấu phân tách danh sách. Điều quan trọng là không lưu các thay đổi khi đóng -> bằng Đóng, bạn phải sử dụng False.

+1

hoạt động giống như một sự quyến rũ ... nhưng nó là cần thiết để có ".Đóng False" thiết lập! thx –

+0

Tôi đang sử dụng Excel 2007 và chỉ sau khi gọi ".Đóng False", CSV của tôi đã được lưu bằng cách sử dụng ";" làm dấu phân tách danh sách. Cảm ơn! – cantoni

0

Để sử dụng tập lệnh vbs sau khi xây dựng thành công:

.SaveAs Tên file, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1

nơi lập luận là:

Object Filename, 
Object FileFormat, 
Object Password, 
Object WriteResPassword, 
Object ReadOnlyRecommended, 
Object CreateBackup, 
XlSaveAsAccessMode AccessMode, 
Object ConflictResolution, 
Object AddToMru, 
Object TextCodepage, 
Object TextVisualLayout, 
Object Local 

SourceLink: https://msdn.microsoft.com/ru-ru/library/microsoft.office.tools.excel.workbook.saveas.aspx

cuối "1" trong "SaveAs" chức năng tương đương với địa phương = True

Ngoài ra, các dấu chấm phẩy phải được định nghĩa là tách danh sách trong khu vực thiết lập hệ điều hành (xem câu trả lời ở trên)

1

Không cần phải khai báo tất cả var này iables, chỉ cần thêm địa phương: = true vào cuối phương thức SaveAs của bạn, như vậy:

ActiveWorkbook.SaveAs Filename:="C:/Path/TryMe.csv", FileFormat:=xlCSV, Local:=True 
Các vấn đề liên quan