Chào các anh(chị)
Em có 1 file cell như hình 1, bây giờ em muốn xuất ra 1 file .txt có dạng như hình 2(có ngăn cách nhau bằng dấu "|" và các cột rõ ràng) được không ạ
Mong các anh(chị) giúp em
Em xin cảm ơn!
Sub Data2txtFile()
Dim txtFile As String, sArray, tmp(), Arr(), lR As Long, lC As Long
sArray = Selection.Value
txtFile = ThisWorkbook.Path & "\tmp.txt"
ReDim tmp(1 To UBound(sArray, 2))
ReDim Arr(1 To UBound(sArray, 1))
With CreateObject("Scripting.FileSystemObject")
With .CreateTextFile(txtFile, True, True)
For lR = 1 To UBound(sArray, 1)
For lC = 1 To UBound(sArray, 2)
tmp(lC) = sArray(lR, lC)
Next
Arr(lR) = Join(tmp, " | ")
Next
.Write Join(Arr, vbCrLf)
.Close
End With
End With
End Sub
Button gì gì đó bạn cứ tự mình vẽ ra đi, đâu có khó khăn gì chứCảm ơn sư phụ, nhưng nếu làm 1 cái button thì những người không chuyên sẽ thấy đỡ bỡ ngỡ hơn.
Anh ơi. Mình k thể tách ra thành từng cột thẳng hàng được sao?Button gì gì đó bạn cứ tự mình vẽ ra đi, đâu có khó khăn gì chứ
Đã là file text thì cùng lắm chỉ có HÀNG chứ ai biết chổ nào là giới hạn của 1 CỘT chứAnh ơi. Mình k thể tách ra thành từng cột thẳng hàng được sao?
Chính xác. Chỉ 1 chiêu của sư phụ, em cũng đã giải được bài toán cho riêng mình. Chả là em cũng muốn chuyển sang file.txt để chạy chương trình cho dễ vì chương trình của em chỉ chấp nhận cái vụ txt này thôi. Thế mà bữa lâu đến giờ em cứ copy từ xls rồi paste vào file.txt mỏi cả tay. Bây giờ ngồi nhìn em nó chạy phà phà sướng hết cả người. Cảm ơn sư phụ nhiều nhiều lắm.Đã là file text thì cùng lắm chỉ có HÀNG chứ ai biết chổ nào là giới hạn của 1 CỘT chứ
Muốn THẲNG HÀNG THẲNG LỐI thì cứ.. để nguyên Excel vậy
Nếu bạn cần dấu | thì áp dụng code trên còn không thì save as chọn định dạng text file là được mình nghĩ bạn copy paste thì nên chọn save as cho khỏe
Đúng rồi Thầy ạ. Từ code của Thầy em đã tuỳ biến kết hợp với code của Thầy Hải (quanghai1969) thêm bớt để phù hợp với pm em đang sử dụng. Cho em hỏi Thầy ndu thêm 1 tẹo nữa là: Em muốn lưu file.txt vào nơi khác có được không thầy? Đơn giản là nó nhảy ra ngoài desktop. Còn phức tạp hơn nữa là nó nhảy vào pm đang chạy của em, để nó autorun luôn (cái này em chỉ mới nghĩ thôi, chưa dám mơ ước chi xa hơn). Hì hì chỉ cần ra txt là quá đủ để dùng rồi, nếu không có cách nào khác thì đưa file.xls ra desktop là file.txt nó cũng theo ra luôn Thầy nhỉ.
Đương nhiên được! Chẳng hạn code này:
Cách dùng: Quét chọn vùng dữ liệu trên bảng tính rồi chạy code trên. File txt sẽ được lưu nằm cùng với thư mục chứa file ExcelPHP:Sub Data2txtFile() Dim txtFile As String, sArray, tmp(), Arr(), lR As Long, lC As Long sArray = Selection.Value txtFile = ThisWorkbook.Path & "\tmp.txt" ReDim tmp(1 To UBound(sArray, 2)) ReDim Arr(1 To UBound(sArray, 1)) With CreateObject("Scripting.FileSystemObject") With .CreateTextFile(txtFile, True, True) For lR = 1 To UBound(sArray, 1) For lC = 1 To UBound(sArray, 2) tmp(lC) = sArray(lR, lC) Next Arr(lR) = Join(tmp, " | ") Next .Write Join(Arr, vbCrLf) .Close End With End With End Sub
Nói trước là dữ liệu trên file txt sẽ không được bố trí đẹp như hình của bạn đâu nha