gởi bạn file nè...Gửi các thầy cô
Em có bài toán muốn nhờ các thầy cô giúp đỡ ạ
Em có nhiều file txt:
Ví dụ file 1.txt , 2.txt
View attachment 243380
Hiện tại em muốn lấy dữ liệu dòng đầu tiên trong file txt để đưa vào trong file excel và trả lần lượt theo số dòng khi chọn nhiều file
Nhờ các thầy cô giúp đỡ.
Em xin cám ơn ạ
Range("B" & i).Value = .ReadText(-2)Bác cho hỏi nếu như lấy toàn bộ dữ liệu thì code sửa lại như thế nào ạ?
Cảm ơn bác rất nhiều ạRange("B" & i).Value = .ReadText(-2)
chuyển thành
Range("B" & i).Value = .ReadText(-1)
bạn xem cái này nè: https://www.w3schools.com/asp/met_stream_readtext.asp
Cám ơn anh rất nhiều ạgởi bạn file nè...
có nhiều cách, một trong đó là dùng " Scripting.FileSystemObject " đó bạn.Cám ơn anh rất nhiều ạ
Cho em hỏi thêm 1 chút. Khi lấy được dữ liệu vậy rồi. Có các nào thay chính tên file mình vừa lấy bằng dữ liệu ở dòng đầu không anh?
Cám ơn anh đã phản hổi. Hihi. Nhìn cái SCripting.... em thấy lạ quá. Có thể phiền anh hỗ trợ thêm được không ạ.có nhiều cách, một trong đó là dùng " Scripting.FileSystemObject " đó bạn.
Em chào anh. Có sử dung code của anh. Mà không biết biến tấu thế nào nữa.gởi bạn file nè...
Sub RenameFiles()
Dim i As Long, n As Long
Dim OldFile As String, NewFile As String, strPath As String
Dim fso As Object, vFile, ar
On Error Resume Next
Set fso = CreateObject("Scripting.FileSystemObject")
iRow = Sheets("Data").Range("A" & Rows.Count).End(xlUp).Row
arr = Sheets("Data").Range("A2:B" & iRow).Value
vFile = Application.GetOpenFilename("Text Files, *.txt", , , , True)
If TypeName(vFile) = "Variant()" Then
strPath = Left$(vFile(1), InStrRev(vFile(1), "\"))
For i = 1 To UBound(vFile)
If Len(arr(i, 1)) Then
If Len(arr(i, 2)) Then
n = n + 1
OldFile = CStr(vFile(i))
NewFile = strPath & arr(i, 2) & ".txt"
fso.MoveFile OldFile, NewFile
End If
End If
Next
MsgBox "Doi ten " & n & " files", , "Xong!"
End If
End Sub
Mình nghĩ bạn chạy bị lỗi là do cái "dòng dữ liệu đầu" có những ký tự làm tên file không chấp nhậnEm chào anh. Có sử dung code của anh. Mà không biết biến tấu thế nào nữa.
Hiện tại em có sử dụng code này
của thầy @ndu96081631Mã:Sub RenameFiles() Dim i As Long, n As Long Dim OldFile As String, NewFile As String, strPath As String Dim fso As Object, vFile, ar On Error Resume Next Set fso = CreateObject("Scripting.FileSystemObject") iRow = Sheets("Data").Range("A" & Rows.Count).End(xlUp).Row arr = Sheets("Data").Range("A2:B" & iRow).Value vFile = Application.GetOpenFilename("Text Files, *.txt", , , , True) If TypeName(vFile) = "Variant()" Then strPath = Left$(vFile(1), InStrRev(vFile(1), "\")) For i = 1 To UBound(vFile) If Len(arr(i, 1)) Then If Len(arr(i, 2)) Then n = n + 1 OldFile = CStr(vFile(i)) NewFile = strPath & arr(i, 2) & ".txt" fso.MoveFile OldFile, NewFile End If End If Next MsgBox "Doi ten " & n & " files", , "Xong!" End If End Sub
Nhưng ngồi test nó không chịu đổi tên file bên trong. Nhờ anh và các thầy cô có thể chỉ giúp cho em nó đang sai chỗ nào không ạ?
Hay là do tên sau khi được đổi nó có gì bất thường. Do em đổi sang dạng abc thì nó vẫn đổi được ạ.
View attachment 243416
Em xin cám ơn nhiều.
Cám ơn anh đã phản hồi.Mình nghĩ bạn chạy bị lỗi là do cái "dòng dữ liệu đầu" có những ký tự làm tên file không chấp nhận
View attachment 243441
Hoặc là do chữ tiếng Trung làm tên file có vấn đề???
Mục đích của bạn là gì? cần list ra danh sách như bài #1 và thêm cái dụ đổi tên file dùng "dòng dữ liệu đầu" làm tên file luôn?
Mình làm được cho bạn rồi.Cám ơn anh đã phản hồi.
Đúng rồi anh ạ. Mục đích cuối cùng là lấy dòng đầu ấy đặt làm tên tệp txt tương ứng luôn ấy ạ.
Ngồi test từ hôm qua tới giờ. nó báo "bad file name or number" mà em chưa biết phải làm thế nào.
Rất mong anh và mọi người giúp đỡ ạ
Bạn tìm hiểu và ứng dụng nó thì hết lạ thôi.Cám ơn anh đã phản hổi. Hihi. Nhìn cái SCripting.... em thấy lạ quá. Có thể phiền anh hỗ trợ thêm được không ạ.
Xin cám ơn anh nhiều