thang_nguyen1
Thành viên hoạt động
- Tham gia
- 6/10/16
- Bài viết
- 136
- Được thích
- 8
Dạ sao vậy ạ. Mình chưa hiểu lắmCảm ơn @Chủ bài đăng, vì nhờ bạn mà mình được biết:
Chiếc kính phóng đại của mình đã không thể phù hợp với mình nữa;Xin cảm ơn tất cả mọi người đã đọc & chúc vui vẻ!
Bạn copy đoạn code của bạn rồi paste lên luôn có phải dễ xem hơn không, mọi người nhìn chữ trong ảnh bé xíu bạn ơi.Dạ sao vậy ạ. Mình chưa hiểu lắm
Sub MergeFilesExcel()
Bác SQ xin lỗi nhiều ạ. Code đây ạ. Mong bác giúp đỡ. Mình test máy khác ko sao. Mỗi máy mình bịSub MergeFilesExcel()
Dim path As String, ThisWB As String, lngFilecounter As Long
Dim wbDest As Workbook, shtDest As Worksheet, ws As Worksheet
Dim Filename As String, Wkb As Workbook
Dim CopyRng As Range, Dest As Range
Dim RowofCopySheet As Integer
RowofCopySheet = 2
ThisWB = ActiveWorkbook.Name
path = UserForm1.TextBox1.Text
Application.EnableEvents = False
Application.ScreenUpdating = False
Set shtDest = ActiveWorkbook.Sheets(1)
Filename = Dir(path & "\*.csv", vbNormal)
If Len(Filename) = 0 Then Exit Sub
Do Until Filename = vbNullString
If Not Filename = ThisWB Then
Set Wkb = Workbooks.Open(Filename:=path & "\" & Filename)
Set CopyRng = Wkb.Sheets(1).Range(Cells(RowofCopySheet, 1), Cells(ActiveSheet.UsedRange.Rows.Count, ActiveSheet.UsedRange.Columns.Count))
Set Dest = shtDest.Range("A" & shtDest.UsedRange.SpecialCells(xlCellTypeLastCell).Row + 1)
CopyRng.Copy Dest
Wkb.Close False
End If
Filename = Dir()
Loop
Range("A1").Select
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
Mạnh dạn đoán các files bạn để trong folder/đường dẫn có dấu/ký tự đặc biệt/không phải chữ la tinh. Hàm Dir() kỵ mấy thứ đó lắm.Sub MergeFilesExcel()
Dim path As String, ThisWB As String, lngFilecounter As Long
Dim wbDest As Workbook, shtDest As Worksheet, ws As Worksheet
Dim Filename As String, Wkb As Workbook
Dim CopyRng As Range, Dest As Range
Dim RowofCopySheet As Integer
RowofCopySheet = 2
ThisWB = ActiveWorkbook.Name
path = UserForm1.TextBox1.Text
Application.EnableEvents = False
Application.ScreenUpdating = False
Set shtDest = ActiveWorkbook.Sheets(1)
Filename = Dir(path & "\*.csv", vbNormal)
If Len(Filename) = 0 Then Exit Sub
Do Until Filename = vbNullString
If Not Filename = ThisWB Then
Set Wkb = Workbooks.Open(Filename:=path & "\" & Filename)
Set CopyRng = Wkb.Sheets(1).Range(Cells(RowofCopySheet, 1), Cells(ActiveSheet.UsedRange.Rows.Count, ActiveSheet.UsedRange.Columns.Count))
Set Dest = shtDest.Range("A" & shtDest.UsedRange.SpecialCells(xlCellTypeLastCell).Row + 1)
CopyRng.Copy Dest
Wkb.Close False
End If
Filename = Dir()
Loop
Range("A1").Select
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
Bài đã được tự động gộp:
Bác SQ xin lỗi nhiều ạ. Code đây ạ. Mong bác giúp đỡ. Mình test máy khác ko sao. Mỗi máy mình bị
Mạnh dạng đoán các tệp bạn để trong thư mục/đường dẫn có dấu/ký tự đặc biệt/không phải chữ la tinh. Hàm Dir() kỵ mấy thứ đó lắm.
Check tra cứu
C mình hỏi là mình chỉ muốn copy dòng đầu của file cần copy thì sửa code ra sao bạnMạnh dạng đoán các tệp bạn để trong thư mục/đường dẫn có dấu/ký tự đặc biệt/không phải chữ la tinh. Hàm Dir() kỵ mấy thứ đó lắm.
Kiểm tra trước khi xem.
Code này bạn lấy ở đâu? và trước khi bị lỗi bạn đã chạy thành công lần nào chưa?Nhờ mọi người giúp gỡ lỗi code và nguyên nhân nó là gì ạ. Mình xin cảm ơnView attachment 292375
Lỗi này mình sửa được rồi. Cảm ơn bạn. Mình muốn hỏi thêm là giờ mình muốn chỉ lấy dòng đầu tiên của các sheet cần gộp phải sửa code như thế nào. Mong bạn giúp đỡCode này bạn lấy ở đâu? và trước khi bị lỗi bạn đã chạy thành công lần nào chưa?
(1) Như vậy bạn cũng có những trang (sheet) không cần gộp, phải không; & quan trọng là sẽ phân biệt giữa chúng như thế nào?. . . . . . Mình muốn hỏi thêm là giờ mình muốn (2) chỉ lấy dòng đầu tiên của (1) các sheet cần gộp phải sửa code như thế nào. . . . . .
Nó là dòng đầu tiên chứa tiêu đề. Có nghĩa là chạy xong code như ở trên xong cần chạy code để lấy tiêu đề ở file Log csv. Nếu bạn có thể gộp được hai dòng lệnh này mình cảm ơn. Dữ liệu khi gộp xong như ở "Gộp file"(1) Như vậy bạn cũng có những trang (sheet) không cần gộp, phải không; & quan trọng là sẽ phân biệt giữa chúng như thế nào?
(2) Dòng đầu tiên của bạn là như thế nào sau đây:
→ Dòng đầu tiên của trang tính
→ Dòng đầu tiên có dữ liệu (Có thể đó là dòng chứa tiêu đề hay không chứa chúng)
→ Dòng đầu tiên chỉ toàn là dữ liệu
→ . . . .
Bác @SA_DQ giúp mình vấn đề này vớiNó là dòng đầu tiên chứa tiêu đề. Có nghĩa là chạy xong mã như ở trên xong cần chạy mã để lấy tiêu đề trong tệp Nhật ký csv. Nếu bạn có thể nối được hai dòng lệnh này, mình cảm ơn. Dữ liệu khi chưa hoàn thành như ở "Gộp tệp"