Khi tạo tệp CSV bằng các menu để xuất trang tính, Arkadiusz lưu ý rằng anh ta có thể chỉ định rằng anh ta muốn sử dụng dấu chấm phẩy (;)

làm dấu phân cách trường. Tuy nhiên, nếu anh ta lưu tệp CSV bằng macro (FileFormat: = xlCSV hoặc xlCSVWindows), thì anh ta không thể chỉ định dấu chấm phẩy làm dấu phân cách.

Điều này hoạt động theo cách này bởi thiết kế trong VBA. Việc triển khai Excel các quy trình xuất cho VBA luôn sử dụng bất kỳ cài đặt khu vực nào của Windows để xác định cách các mục trong CSV nên được phân tách.

Cụ thể, quy trình này sẽ xem xét trường Dấu phân tách danh sách cho dấu phân cách. Điều này có nghĩa là bạn có thể, nếu muốn, thay đổi dấu phân cách thành dấu chấm phẩy bằng cách thay đổi cài đặt Dấu phân cách danh sách trong cấu hình cài đặt khu vực của bạn.

Nếu bạn không muốn thay đổi cài đặt khu vực, thay vào đó bạn có thể viết macro của riêng mình để xuất tệp theo bất kỳ cách nào bạn muốn.

Hãy xem xét, trong giây lát, macro sau, sẽ xuất ra tệp:

Sub CreateFile()

FName = ActiveWorkbook.Name     If Right(FName, 4) = ".xls" Then         FName = Mid(FName, 1, Len(FName) - 4)

End If

Columns(1).Insert Shift:=xlToRight

For i = 1 To Range("B65000").End(xlUp).Row         TempString = ""

For j = 2 To Range("HA1").End(xlToLeft).Column             If j <> Range("HA1").End(xlToLeft).Column Then                 TempString = TempString & _                   Cells(i, j).Value & ";"

Else                 TempString = TempString & _                   Cells(i, j).Value             End If         Next         Cells(i, 1).Value = TempString     Next

Columns(1).Select     Selection.Copy     Workbooks.Add     Range("A1").Select     ActiveSheet.Paste     Application.CutCopyMode = False

ActiveWorkbook.SaveAs Filename:=FName & ".txt", _       FileFormat:=xlPrinter End Sub

Macro này có một cách tiếp cận duy nhất để tạo tệp đầu ra. Những gì nó làm là chèn một cột ở bên trái trang tính của bạn, sau đó nối tất cả dữ liệu ở bên phải của cột đó vào cột mới được chèn A. Nó thêm một dấu chấm phẩy giữa mỗi trường. Sau khi hoàn thành, nó lấy thông tin đưa vào cột A và ghi vào sổ làm việc mới. Sau đó sổ làm việc này được lưu vào đĩa bằng định dạng tệp xlPrinter, có nghĩa là nó được đặt ở trạng thái “nguyên trạng” mà không có bất kỳ sửa đổi nào.

Nếu bạn thích cách tiếp cận trực tiếp hơn, ghi thông tin trực tiếp vào tệp mà không thực hiện thay đổi đối với trang tính của mình, hãy xem macro tại bài đăng trên blog này:

https://web.archive.org/web/20060302021412/http:/www.dicks-blog.com:80/archives/2004/11/09/roll-your-own-csv/

Macro sử dụng dấu phẩy giữa mỗi trường, nhưng nó có thể dễ dàng sửa đổi để thay thế nó sử dụng dấu chấm phẩy.

_Lưu ý: _

Nếu bạn muốn biết cách sử dụng các macro được mô tả trên trang này (hoặc trên bất kỳ trang nào khác trên trang ExcelTips), tôi đã chuẩn bị một trang đặc biệt bao gồm thông tin hữu ích.

ExcelTips là nguồn của bạn để đào tạo Microsoft Excel hiệu quả về chi phí.

Mẹo này (3232) áp dụng cho Microsoft Excel 97, 2000, 2002 và 2003. Bạn có thể tìm thấy phiên bản của mẹo này cho giao diện ribbon của Excel (Excel 2007 trở lên) tại đây: