Chào admin, admin cho mình hỏi, mình có thực hành gộp 3 bảng chấm công của các bộ phận vào 1 file chấm công chuẩn của Công ty.
Tuy nhiên, sau khi chạy code VBA như hướng dẫn trong bài, màn hình báo lỗi số 9 như hình bên dưới. Mình có gửi kèm đoạn code, admin xem giúp mình nhé ạ.
Đoạn code:
Sub Copydulieu()
'Tao thu muc mo file
With Application.FileDialog(msoFileDialogFilePicker)
.AllowMultiSelect = True 'Chon nhieu file cung luc
.Show 'Hien cua so chon file
'Xac dinh file nao duoc chon
Dim i As Long
For i = 1 To .SelectedItems.Count
'Gan bien cho cac workbook
Dim wb_ketqua As Workbook
Dim wb_select As Workbook
Set wb_ketqua = ThisWorkbook
Set wb_select = Workbooks.Open(.SelectedItems(i))
'Dua du lieu tu cac workbook khac
'Xac dinh dong cuoi cua wbselect
Dim DongCuoi_wbselect As Long
DongCuoi_wbselect = wb_select.Sheets("Sheet1").Range("B" & Rows.Count).End(xlUp).Row
'Xac dinh khoang cach so dong du lieu
'Khoang cach = dongcuoi_wbselect - dongdau_wbselect
Dim Dongdau_wbselect As Long
Dongdau_wbselect = 11
Dim Khoangcach_wbselect As Long
Khoangcach_wbselect = DongCuoi_wbselect - Dongdau_wbselect + 1
'Noi nhan
'Tim dong cuoi cua noi nhan => la diem bat dau
'Pham vi cua vung nhan = khoang cach
Dim Dongcuoi_wbketqua As Long
Dongcuoi_wbketqua = wb_ketqua.Sheets("Sheet1").Range("B" & Rows.Count).End(xlUp).Row
'Dua du lieu vao
Workbooks("wb_ketqua").Sheets("Sheet1").Range("B" & Dongcuoi_wbketqua + 1 & ":AG" & Dongcuoi_wbketqua + Khoangcach_wbselect).Value = _
Workbooks("wb_select").Sheets("Sheet1").Range("B" & Dongdau_wbselect & ":AG" & DongCuoi_wbselect).Value
'Dong wb lai
wb_select.Close savechanges:=False
Next i
End With
End Sub
Lỗi..........................
Mình cần lấy dữ liệu từ cột B11=Họ và tên chỗ Trần Văn Cường, cho đến ngày cuối cùng: 30 là AG11. Mình dùng câu lệnh bên trên để lấy vùng trong wb kết quả: B11->Dòng cuối và AG->Dòng cuối + Khoảng cách, tương tự wb select thì "B" & Dongdau_wbselect & ":AG" & DongCuoi_wbselect.
Nhưng vẫn bị báo lỗi bên trên admin ạ.
Link đây nha admin
Mình sửa được lỗi bên trên rồi, admin cho mình hỏi thêm, trong bài học dòng đầu của wb select cố định là 2, tức là sẽ copy từ dòng thứ 2 (trừ title trở xuống). Tuy nhiên, khi trong file của mình copy dữ liệu từ các bảng chấm công khác sang bảng tổng hợp, lại bị lỗi nhảy dữ liệu? Có phần merge bên trên dòng 11. Vậy làm như nào để khắc phục lỗi nhảy cột này ạ? Các file khác cũng bị tương tự ạ.
vị trí dòng đầu tùy theo bảng tính bạn nhé. Thường vị trí dòng đầu cố định, nhưng đôi khi có sự thay đổi do việc thêm dòng / xóa dòng ở trước vị trí dòng tiêu đề của bảng => khi đó phải điều chỉnh lại code.
để tránh lỗi merge ở dòng tiêu đề, bạn nên tạo 1 dòng tiêu đề phụ không merge. Sau đó lấy dòng này làm tiêu chuẩn => chỉ lấy dữ liệu từ dưới dòng này trở đi. Vị trí dòng tiêu đề phụ trong các bảng cũng nên là 1 dòng cố định (ví dụ dòng 11 thì tất cả đều thống nhất ở vị trí này, các bảng cùng cấu trúc chỉ khác tháng)
Cho mình hỏi thêm, nếu mình muốn copy dữ liệu từ nhiều file (định dạng dòng) sang 1 master file (cột) thì có làm được theo cách này ko nhỉ?
Chào bạn được bạn nhé.
Chào Phương! tôi có file muốn hỏi thầy nhưng chưa biết cách đưa lên google sheet. Bạn chỉ tôi cách làm nhé. Tôi cảm on.
Chào bạn bạn đọc bài sau nhé