[Hỏi] Vấn đề xuất .xls sang txt

  • Thread starter Thread starter mrfido
  • Ngày gửi Ngày gửi
Liên hệ QC

mrfido

Thành viên mới
Tham gia
5/10/09
Bài viết
3
Được thích
0
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!
 

File đính kèm

  • 1.JPG
    1.JPG
    32 KB · Đọc: 31
  • 2.JPG
    2.JPG
    18.9 KB · Đọc: 36
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!

Đương nhiên được! Chẳng hạn code này:
PHP:
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
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 Excel
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
 
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?
Đã 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
 
Đã 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
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.
 
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
 
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

Chỉ 1 file mà Save As thì chẳng nói làm gì, thao tác với 100 file cùng lúc thì phải suy nghĩ lại nha!
Với lại cũng chưa chắc gì người ta muốn lưu toàn bộ, chỉ lưu phần nào đó trên bảng tính thôi cũng được vậy
 
Đú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 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ỉ.

Ủa! Lưu file ở đâu là tùy ý bạn chứ
Trong code của tôi cũng có dòng txtFile = ThisWorkbook.Path & "\tmp.txt" ---> Lưu tại thư mục chứa file Excel... Nếu bạn muốn lưu nơi khác, cứ sửa thoải mái
 
Mình cần chuyển được sang file txt có dấu "|" chia theo từng cột rõ ràng như vậy để giao tiếp với phần mềm. Phần mềm nó chỉ hiểu được như vậy mới bực chứ. Có cách nào k các anh chị nhỉ?
 
Đương nhiên được! Chẳng hạn code này:
PHP:
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
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 Excel
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

Thưa thầy, giả sử như giờ em muốn tách mỗi dòng trong file excel thành 1 file text và theo yêu cầu muốn mở rộng thêm nhiều cột để chi tiết thêm dữ liệu thì sửa đoạn code thêm thế nào ạ ? Em xin cảm ơn!
 
Web KT

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

Back
Top Bottom