Giúp em sửa code lấy giá trị đến dòng cuối

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

nhnn1986

Thành viên hoạt động
Tham gia
30/10/17
Bài viết
108
Được thích
19
Giới tính
Nam
Chào Anh/Chị ạ
Em có đoạn code sau mục đích lấy giá trị từ nhiều file (cùng sheet name "data", format và kết cấu giống nhau)
Vùng lấy giá trị là cột B:I bắt đầu từ dòng 10 và dòng cuối là 24.
Bài toán phát sinh của em bây giờ là dòng cuối các file thay đổi từ 15 đến 50 chứ không cố định dòng 24 nữa ạ
Sau dòng cuối tại cột A sẽ có chữ "HELP", tức là file1 dòng cuối là 15 thì Range(A16) = "Help", file2 dòng cuối là 20 thì Range(A21) = "Help" v.v.v

Anh/Chị giúp em sửa code sau để lấy đến dòng cuối các file cần tổng hợp thay vì dòng cuối cố định với ạ.
Mã:
For i = 1 To .SelectedItems.Count
            cn.Open ("provider=Microsoft.ACE.OLEDB.12.0;data source=" & .SelectedItems(i) & ";mode=Read;extended properties=""Excel 12.0;hdr=no"";")
        Set rs = cn.Execute("select '" & fso.GetBaseName(.SelectedItems(i)) & "',f1,f2,f3,f4,f5,f6,f7,f8 from [data$B10:I24] ")
        lr = Sheets("sum").Range("A" & Rows.Count).End(3).Row
        If Not rs.EOF Then Sheets("sum").Range("A" & lr + 1).CopyFromRecordset rs
            rs.Close
            cn.Close
        Next
 
Chào Anh/Chị ạ
Em có đoạn code sau mục đích lấy giá trị từ nhiều file (cùng sheet name "data", format và kết cấu giống nhau)
Vùng lấy giá trị là cột B:I bắt đầu từ dòng 10 và dòng cuối là 24.
Bài toán phát sinh của em bây giờ là dòng cuối các file thay đổi từ 15 đến 50 chứ không cố định dòng 24 nữa ạ
Sau dòng cuối tại cột A sẽ có chữ "HELP", tức là file1 dòng cuối là 15 thì Range(A16) = "Help", file2 dòng cuối là 20 thì Range(A21) = "Help" v.v.v

Anh/Chị giúp em sửa code sau để lấy đến dòng cuối các file cần tổng hợp thay vì dòng cuối cố định với ạ.
Mã:
For i = 1 To .SelectedItems.Count
            cn.Open ("provider=Microsoft.ACE.OLEDB.12.0;data source=" & .SelectedItems(i) & ";mode=Read;extended properties=""Excel 12.0;hdr=no"";")
        Set rs = cn.Execute("select '" & fso.GetBaseName(.SelectedItems(i)) & "',f1,f2,f3,f4,f5,f6,f7,f8 from [data$B10:I24] ")
        lr = Sheets("sum").Range("A" & Rows.Count).End(3).Row
        If Not rs.EOF Then Sheets("sum").Range("A" & lr + 1).CopyFromRecordset rs
            rs.Close
            cn.Close
        Next
Bạn gửi file cho mọi người xem nhé.
 
Upvote 0
1. Đọc cái recordset cho đến khi gặp dữ liệu cần dừng. Đếm số dòng.
Lúc copyfromrecordset, dùng MaxRows:=[số dòng]

2. Dùng GetRows để lấy các dòng từ recordset sang 1 mảng. Đến khi gặp chỗ muốn dừng.
copy từ mảng xuống range
 
Upvote 0

File đính kèm

Upvote 0
Chào Anh/Chị ạ
Em có đoạn code sau mục đích lấy giá trị từ nhiều file (cùng sheet name "data", format và kết cấu giống nhau)
Vùng lấy giá trị là cột B:I bắt đầu từ dòng 10 và dòng cuối là 24.
Bài toán phát sinh của em bây giờ là dòng cuối các file thay đổi từ 15 đến 50 chứ không cố định dòng 24 nữa ạ
Sau dòng cuối tại cột A sẽ có chữ "HELP", tức là file1 dòng cuối là 15 thì Range(A16) = "Help", file2 dòng cuối là 20 thì Range(A21) = "Help" v.v.v

Anh/Chị giúp em sửa code sau để lấy đến dòng cuối các file cần tổng hợp thay vì dòng cuối cố định với ạ.
Mã:
For i = 1 To .SelectedItems.Count
            cn.Open ("provider=Microsoft.ACE.OLEDB.12.0;data source=" & .SelectedItems(i) & ";mode=Read;extended properties=""Excel 12.0;hdr=no"";")
        Set rs = cn.Execute("select '" & fso.GetBaseName(.SelectedItems(i)) & "',f1,f2,f3,f4,f5,f6,f7,f8 from [data$B10:I24] ")
        lr = Sheets("sum").Range("A" & Rows.Count).End(3).Row
        If Not rs.EOF Then Sheets("sum").Range("A" & lr + 1).CopyFromRecordset rs
            rs.Close
            cn.Close
        Next
Bạn thay
data$B10:I24
thành
data$B10:I
 
Upvote 0
Web KT

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

Back
Top Bottom