Chia Một File Excel Thành Nhiều File Nhỏ | Giải Pháp Excel
Có thể bạn quan tâm
- Trang chủ Có gì mới Hoạt động gần nhất Tác giả
- Diễn đàn Tìm bài viết mới Tìm theo chuyên mục
- Video
Video về Excel Video về tin học khác Tin tức về tin học chung - Thông tin mới Featured content Tìm bài mới Tài Nguyên Mới Hoạt động gần nhất
- Tài nguyên Đánh giá mới nhất Tìm tài nguyên
- Đóng góp
Tìm kiếm
Mọi nơi Đề tài Diễn đàn này Đề tài này Chỉ tìm trong tiêu đề Note Tìm kiếm Tìm nâng cao…- Tìm bài viết mới
- Tìm theo chuyên mục
Follow along with the video below to see how to install our site as a web app on your home screen.
Note: This feature may not be available in some browsers.
- Khách ơi! GPE thông tin đến bạn ấn phẩm "lập trình VBA trong Excel": - Phần cơ bản - Phần Nâng Cao - VBA trong Excel - Cải thiện và tăng tốc
- Trang chủ
- Diễn đàn
- Lập Trình với Excel
- Thread starter Thread starter katunkatun
- Ngày gửi Ngày gửi 3/8/18
Người dùng đang xem chủ đề này
Đang trực tuyến: 2 (Thành viên: 0, Khách: 2) Kkatunkatun
Thành viên mới 
Tham gia 3/8/18 Bài viết 12 Được thích 4 Giới tính Nam Xin chào anh/chị, Hiện tại mình đang có một vấn đề rất mong các anh/chị cao nhân giúp đỡ. Mình có 1 file lớn xuất từ hệ thống. Sếp mình cần chia nó thành từng file nhỏ và mỗi file phải đó phải có password (lương). Mình vò đầu bức tóc thì chỉ xem ra được một điểm chung là cứ 35 dòng sẽ được tách thành một file nhỏ thôi. Anh/chị nào biết cách chỉ mình với. Cám ơn anh/chị rất nhiều Sắp xếp theo thời gian sắp xếp theo bầu chọn nghiaphuc
Thành viên gạo cội



Thành viên danh dự Tham gia 25/9/09 Bài viết 5,729 Được thích 8,859 Giới tính Nam Nghề nghiệp Giáo viên katunkatun đã viết: Xin chào anh/chị, Hiện tại mình đang có một vấn đề rất mong các anh/chị cao nhân giúp đỡ. Mình có 1 file lớn xuất từ hệ thống. Sếp mình cần chia nó thành từng file nhỏ và mỗi file phải đó phải có password (lương). Mình vò đầu bức tóc thì chỉ xem ra được một điểm chung là cứ 35 dòng sẽ được tách thành một file nhỏ thôi. Anh/chị nào biết cách chỉ mình với. Cám ơn anh/chị rất nhiều Nhấp chuột vào đây để mở rộng...Phải có file cụ thể mới làm việc được bạn ạ. Bạn giả lập 1 file có cấu trúc giống với file thực tế của bạn rồi đưa lên đây, sẽ có câu trả lời sớm thôi. Upvote 0 K
katunkatun
Thành viên mới 
Tham gia 3/8/18 Bài viết 12 Được thích 4 Giới tính Nam Do file dài quá nên mình cắt bớt chỉ để lại vài trường hợp cho dễ nhìn. Sếp mình yêu cầu mỗi phiếu lương của từng nhân viên phải được xuất ra thành một file riêng. Như trong file thì 5 người này trong sheet phiếu lương sẽ xuất ra 5 file excel riêng biệt và phải tên và password tương ứng như trong sheet Password bạn ạ. Bạn xem qua và giúp với. Xin cám ơn File đính kèm
- Payslip.xlsx Payslip.xlsx 13.2 KB · Đọc: 30
befaint
|||||||||||||
Tham gia 6/1/11 Bài viết 14,600 Được thích 19,843katunkatun đã viết: Xin chào anh/chị, Hiện tại mình đang có một vấn đề rất mong các anh/chị cao nhân giúp đỡ. Mình có 1 file lớn xuất từ hệ thống. Sếp mình cần chia nó thành từng file nhỏ và mỗi file phải đó phải có password (lương). Mình vò đầu bức tóc thì chỉ xem ra được một điểm chung là cứ 35 dòng sẽ được tách thành một file nhỏ thôi. Anh/chị nào biết cách chỉ mình với. Cám ơn anh/chị rất nhiều Nhấp chuột vào đây để mở rộng...Bạn kiếm file dữ liệu gốc chứa bảng lương ấy, chứ bảng trên là Form bảng lương rồi (mà không ai lại đi lặp lại một form như vậy). Chia ra các files nhỏ rồi có gửi email cho từng người không bạn? Hay là sếp tự làm tiếp? Nếu mà có gửi email luôn thì nêu yêu cầu luôn nhé. (Bạn có muốn lấy thưởng từ sếp không?) Upvote 0 K
katunkatun
Thành viên mới 
Tham gia 3/8/18 Bài viết 12 Được thích 4 Giới tính Nam befaint File dữ liệu gốc nó cũng như vậy bạn ạ. Chỉ là trong đó chứa lương nên mình không được phép show ra (thành thật xin lỗi) và những thông tin như mã nhân viên, phòng ban, chức vụ. Còn lại thì nó cũng nằm gói gọn trong form đó thôi bạn ạ. (mỗi phiếu lương bao gồm 35 dòng excel) Bạn nói chính xác quá luôn: sau khi chia nhỏ ra sẽ phải gửi mail cho từng người luôn. Do lần đầu mình lên đây nhờ vả nên chưa dám nhờ nhiều ^^ Vì hiện tại bên mình phải in phiếu lương ra giấy, rồi gấp thủ công sau đó phát cho từng bộ phận (mất cả buổi sáng mới làm xong được bạn ạ). Ban đầu mình dùng mailing gửi mẫu cho từng người nhưng bất tiện ở chổ lỡ nhập email nhầm người này sang người khác thì không còn gì là bảo mật nữa, hic. Làm được cái này thì giảm tải được khối lượng công việc thôi chứ chắc gì đã có thưởng bạn ạ, nghiaphuc
Thành viên gạo cội



Thành viên danh dự Tham gia 25/9/09 Bài viết 5,729 Được thích 8,859 Giới tính Nam Nghề nghiệp Giáo viên katunkatun đã viết: Do file dài quá nên mình cắt bớt chỉ để lại vài trường hợp cho dễ nhìn. Sếp mình yêu cầu mỗi phiếu lương của từng nhân viên phải được xuất ra thành một file riêng. Như trong file thì 5 người này trong sheet phiếu lương sẽ xuất ra 5 file excel riêng biệt và phải tên và password tương ứng như trong sheet Password bạn ạ. Bạn xem qua và giúp với. Xin cám ơn Nhấp chuột vào đây để mở rộng...Code như sau nhé, nhớ đưa file này vào 1 thư mục cho dễ quản lý vì sau khi chạy code sẽ có nhiều file con được tạo ra đấy. Mã: Sao chép. Sub TachFile() Dim Cll As Range, Code As String, Pass As String On Error GoTo Err With Application .ScreenUpdating = False: .EnableEvents = False: .DisplayAlerts = False End With Set Cll = Sheet1.[A5] Do While Not IsEmpty(Cll) Code = Mid(Cll.Offset(2), 22, 6) 'Ma NV Pass = Sheet2.[B:B].Find(Code, , xlFormulas, xlWhole).Offset(, 1) 'Password Sheet1.Copy 'Copy sheet Phieu luong qua file moi With ActiveWorkbook Cll.Resize(30, 2).Copy .Sheets(1).[A5] 'Copy du lieu qua file moi .Sheets(1).[36:65000].Delete 'Xoa dong thua .SaveAs ThisWorkbook.Path & "\" & Code & ".xlsx", , Pass 'Luu file con .Close 'Dong file con End With Set Cll = Cll.Offset(35) 'Phieu luong ke tiep Loop MsgBox "Xong!" Err: With Application .ScreenUpdating = True: .EnableEvents = True: .DisplayAlerts = True End With End Sub Bài đã được tự động gộp: 3/8/18
katunkatun đã viết: befaint Bạn nói chính xác quá luôn: sau khi chia nhỏ ra sẽ phải gửi mail cho từng người luôn. Do lần đầu mình lên đây nhờ vả nên chưa dám nhờ nhiều ^^ Vì hiện tại bên mình phải in phiếu lương ra giấy, rồi gấp thủ công sau đó phát cho từng bộ phận (mất cả buổi sáng mới làm xong được bạn ạ). Ban đầu mình dùng mailing gửi mẫu cho từng người nhưng bất tiện ở chổ lỡ nhập email nhầm người này sang người khác thì không còn gì là bảo mật nữa, hic.( Nhấp chuột vào đây để mở rộng...Cái vụ gửi email cho từng người thì bạn tham khảo trên diễn đàn, đã có 1 topic nói rất kỹ về vấn đề này: Gửi email tính lương cho từng người
File đính kèm
- Payslip.xlsm Payslip.xlsm 21.5 KB · Đọc: 13
befaint
|||||||||||||
Tham gia 6/1/11 Bài viết 14,600 Được thích 19,843katunkatun đã viết: befaint File dữ liệu gốc nó cũng như vậy bạn ạ. Chỉ là trong đó chứa lương nên mình không được phép show ra (thành thật xin lỗi) và những thông tin như mã nhân viên, phòng ban, chức vụ. Còn lại thì nó cũng nằm gói gọn trong form đó thôi bạn ạ. (mỗi phiếu lương bao gồm 35 dòng excel) Bạn nói chính xác quá luôn: sau khi chia nhỏ ra sẽ phải gửi mail cho từng người luôn. Do lần đầu mình lên đây nhờ vả nên chưa dám nhờ nhiều ^^ Vì hiện tại bên mình phải in phiếu lương ra giấy, rồi gấp thủ công sau đó phát cho từng bộ phận (mất cả buổi sáng mới làm xong được bạn ạ). Ban đầu mình dùng mailing gửi mẫu cho từng người nhưng bất tiện ở chổ lỡ nhập email nhầm người này sang người khác thì không còn gì là bảo mật nữa, hic. Làm được cái này thì giảm tải được khối lượng công việc thôi chứ chắc gì đã có thưởng bạn ạ,(Mình nói nhờ giúp thôi, chứ nói nhờ vả thì đau nhiều thứ lắm( Nhấp chuột vào đây để mở rộng...
katunkatun
Thành viên mới 
Tham gia 3/8/18 Bài viết 12 Được thích 4 Giới tính Nam nghiaphuc đã viết: Code như sau nhé, nhớ đưa file này vào 1 thư mục cho dễ quản lý vì sau khi chạy code sẽ có nhiều file con được tạo ra đấy. Mã: Sao chép. Sub TachFile() Dim Cll As Range, Code As String, Pass As String On Error GoTo Err With Application .ScreenUpdating = False: .EnableEvents = False: .DisplayAlerts = False End With Set Cll = Sheet1.[A5] Do While Not IsEmpty(Cll) Code = Mid(Cll.Offset(2), 22, 6) 'Ma NV Pass = Sheet2.[B:B].Find(Code, , xlFormulas, xlWhole).Offset(, 1) 'Password Sheet1.Copy 'Copy sheet Phieu luong qua file moi With ActiveWorkbook Cll.Resize(30, 2).Copy .Sheets(1).[A5] 'Copy du lieu qua file moi .Sheets(1).[36:65000].Delete 'Xoa dong thua .SaveAs ThisWorkbook.Path & "\" & Code & ".xlsx", , Pass 'Luu file con .Close 'Dong file con End With Set Cll = Cll.Offset(35) 'Phieu luong ke tiep Loop MsgBox "Xong!" Err: With Application .ScreenUpdating = True: .EnableEvents = True: .DisplayAlerts = True End With End Sub Bài đã được tự động gộp: 3/8/18 Cái vụ gửi email cho từng người thì bạn tham khảo trên diễn đàn, đã có 1 topic nói rất kỹ về vấn đề này: Gửi email tính lương cho từng người Nhấp chuột vào đây để mở rộng...Cám ơn bạn, mình sẽ tham khảo topic bạn cho và cám ơn code của bạn, mình sẽ thử. Bài đã được tự động gộp: 4/8/18
befaint đã viết: (Mình nói nhờ giúp thôi, chứ nói nhờ vả thì đau nhiều thứ lắmHiện tại, nếu gửi email thành công bên mình sẽ không phải gửi giấy in nữa, cho nên mình cũng mong giải quyết được cái này. Bên mình hơn 500 người, chỉ việc chỉnh bản in cho vừa trang + gấp giấy thôi là mất cả buổi sáng và nửa buổi chiều. Mình phải huy động thêm các bé thực tập phụ gấp mới mong làm nổi. Nên mình rất mong cái này giải quyết được, nếu được thì giảm tải công việc nhiều lắm. Để dồn thời gian còn lại chạy deadline báo cáo) Vậy công việc thông báo lương của bạn gồm 2 phần: - Gửi bản cứng (giấy in); - Gửi email (đính kèm file). Hai công việc kia với cỡ 150 người thôi cũng bở hơi tai rồi đó (bình thường nếu một người làm nhanh cũng ngót 2 ngày). Nếu có VBA hỗ trợ thì (sau khi có dữ liệu lương đầy đủ) mọi thứ sẽ xong trong nửa ngày (bao gồm cả gấp giấy và phát xong bản cứng). Dữ liệu ban đầu là bảng dữ liệu trải dài, không phải nằm trong form đó đâu. Bạn thay dữ liệu thật bằng abc gì đó, con số thì ghi 10-20 gì đó, giữ lại tiêu đề các cột. Vậy giải quyết xong vụ bí mật bí đường liền. Nhấp chuột vào đây để mở rộng...
katunkatun
Thành viên mới 
Tham gia 3/8/18 Bài viết 12 Được thích 4 Giới tính Nam katunkatun đã viết: Cám ơn bạn, mình sẽ tham khảo topic bạn cho và cám ơn code của bạn, mình sẽ thử. Bài đã được tự động gộp: 4/8/18 Hiện tại, nếu gửi email thành công bên mình sẽ không phải gửi giấy in nữa, cho nên mình cũng mong giải quyết được cái này. Bên mình hơn 500 người, chỉ việc chỉnh bản in cho vừa trang + gấp giấy thôi là mất cả buổi sáng và nửa buổi chiều. Mình phải huy động thêm các bé thực tập phụ gấp mới mong làm nổi. Nên mình rất mong cái này giải quyết được, nếu được thì giảm tải công việc nhiều lắm. Để dồn thời gian còn lại chạy deadline báo cáoCám ơn bạn nghiaphuc nhiều ạ. Mình đã thử và thành công, tuy nhiên nó còn một vấn đề là khi xuất ra nhiều file con quá, mình có cách nào để khi xuất ra nó nằm sẵn trong một folder không bạn? Upvote 0Mình sẽ thử bảng code của bạn nghiaphuc xem thế nào. Cám ơn bạn nhiều Nhấp chuột vào đây để mở rộng...
befaint
|||||||||||||
Tham gia 6/1/11 Bài viết 14,600 Được thích 19,843katunkatun đã viết: Cám ơn bạn nghiaphuc nhiều ạ. Mình đã thử và thành công, tuy nhiên nó còn một vấn đề là khi xuất ra nhiều file con quá, mình có cách nào để khi xuất ra nó nằm sẵn trong một folder không bạn? Nhấp chuột vào đây để mở rộng...Bạn không nên làm theo phương án này của bạn, làm vậy không khác gì như xưa. Có 500 files rồi, bạn soạn 500 cái thư thì cũng mệt như xưa mà. Mọi thứ bạn cần đã có sẵn hết rồi, chỉ chờ mỗi bảng dữ liệu của bạn thôi. Tức là sẵn tới mức bạn chỉ ấn chuột 01 cái duy nhất là 500 cái thư được gửi đúng, chuẩn, đầy đủ tới 500 người. Bạn để ý kỹ các bài viết trên vào. Lại sắp có chuyện người giúp đi xin người nhờ... Upvote 0 K
katunkatun
Thành viên mới 
Tham gia 3/8/18 Bài viết 12 Được thích 4 Giới tính Nam befaint đã viết: Bạn không nên làm theo phương án này của bạn, làm vậy không khác gì như xưa. Có 500 files rồi, bạn soạn 500 cái thư thì cũng mệt như xưa mà. Mọi thứ bạn cần đã có sẵn hết rồi, chỉ chờ mỗi bảng dữ liệu của bạn thôi. Tức là sẵn tới mức bạn chỉ ấn chuột 01 cái duy nhất là 500 cái thư được gửi đúng, chuẩn, đầy đủ tới 500 người. Bạn để ý kỹ các bài viết trên vào. Lại sắp có chuyện người giúp đi xin người nhờ... Nhấp chuột vào đây để mở rộng...À, cái này thì thật sự đúng là không nên bạn. Vì nếu ngồi gửi 500 cái mail thì mình thà ngồi in và gấp thủ công còn đỡ khổ hơn nữa. Mình sẽ đọc kĩ cái topic kia vào. Cám ơn bạn nhiều Upvote 0
hoamattroicoi
Thành viên gắn bó


Thành viên BQT Moderator Tham gia 19/12/10 Bài viết 2,587 Được thích 5,776 Nghề nghiệp Công nhân vệ sinh số liệu katunkatun đã viết: À, cái này thì thật sự đúng là không nên bạn. Vì nếu ngồi gửi 500 cái mail thì mình thà ngồi in và gấp thủ công còn đỡ khổ hơn nữa. Mình sẽ đọc kĩ cái topic kia vào. Cám ơn bạn nhiều Nhấp chuột vào đây để mở rộng...Bạn phải tiếp tục tìm giải pháp làm cách nào để ngồi uống cafe bấm 1 phát phải gửi được 500 cái mail chứ. Tự nhiên ngồi gõ bụp bụp từng cái gửi thì mình nghĩ cũng " có mà điên" thật, hihi =))) Upvote 0 K
katunkatun
Thành viên mới 
Tham gia 3/8/18 Bài viết 12 Được thích 4 Giới tính Nam hoamattroicoi đã viết: Bạn phải tiếp tục tìm giải pháp làm cách nào để ngồi uống cafe bấm 1 phát phải gửi được 500 cái mail chứ. Tự nhiên ngồi gõ bụp bụp từng cái gửi thì mình nghĩ cũng " có mà điên" thật, hihi =))) Nhấp chuột vào đây để mở rộng...Cám ơn các Pro đã hướng dẫn. Mình đã tìm được cách gửi hàng loạt theo đúng nhu cầu của mình. Cám ơn các pro lần nữa. ^^ Upvote 0 K
katunkatun
Thành viên mới 
Tham gia 3/8/18 Bài viết 12 Được thích 4 Giới tính Nam nghiaphuc đã viết: Code như sau nhé, nhớ đưa file này vào 1 thư mục cho dễ quản lý vì sau khi chạy code sẽ có nhiều file con được tạo ra đấy. Mã: Sao chép. Sub TachFile() Dim Cll As Range, Code As String, Pass As String On Error GoTo Err With Application .ScreenUpdating = False: .EnableEvents = False: .DisplayAlerts = False End With Set Cll = Sheet1.[A5] Do While Not IsEmpty(Cll) Code = Mid(Cll.Offset(2), 22, 6) 'Ma NV Pass = Sheet2.[B:B].Find(Code, , xlFormulas, xlWhole).Offset(, 1) 'Password Sheet1.Copy 'Copy sheet Phieu luong qua file moi With ActiveWorkbook Cll.Resize(30, 2).Copy .Sheets(1).[A5] 'Copy du lieu qua file moi .Sheets(1).[36:65000].Delete 'Xoa dong thua .SaveAs ThisWorkbook.Path & "\" & Code & ".xlsx", , Pass 'Luu file con .Close 'Dong file con End With Set Cll = Cll.Offset(35) 'Phieu luong ke tiep Loop MsgBox "Xong!" Err: With Application .ScreenUpdating = True: .EnableEvents = True: .DisplayAlerts = True End With End Sub Bài đã được tự động gộp: 3/8/18 Cái vụ gửi email cho từng người thì bạn tham khảo trên diễn đàn, đã có 1 topic nói rất kỹ về vấn đề này: Gửi email tính lương cho từng người Nhấp chuột vào đây để mở rộng...Bạn ơi, khi file bỏ ít người (cỡ 10 người) thì code vẫn xuất bình thường. Nhưng khi mình copy toàn bộ file lương (cỡ gần 20000 dòng) thì file chỉ xuất 20 phiếu rồi dừng lại và không xuất tiếp nữa. không biết là file vị lỗi gì ạ? Upvote 0
befaint
|||||||||||||
Tham gia 6/1/11 Bài viết 14,600 Được thích 19,843 @Chủ thớt: Vậy là bài #13 và #14 uýnh nhau lẫn lộn roài! Upvote 0 Kkatunkatun
Thành viên mới 
Tham gia 3/8/18 Bài viết 12 Được thích 4 Giới tính Nam befaint đã viết: @Chủ thớt: Vậy là bài #13 và #14 uýnh nhau lẫn lộn roài! Nhấp chuột vào đây để mở rộng...Hic, ban đầu mình chỉ xuất thử 20 người để test (vì nhiều, xuất lâu) mọi thứ Ok. Giờ mình xuất toàn bộ để test thời gian xuất thì bị vậy. :v Upvote 0 K
katunkatun
Thành viên mới 
Tham gia 3/8/18 Bài viết 12 Được thích 4 Giới tính Nam nghiaphuc đã viết: Code như sau nhé, nhớ đưa file này vào 1 thư mục cho dễ quản lý vì sau khi chạy code sẽ có nhiều file con được tạo ra đấy. Mã: Sao chép. Sub TachFile() Dim Cll As Range, Code As String, Pass As String On Error GoTo Err With Application .ScreenUpdating = False: .EnableEvents = False: .DisplayAlerts = False End With Set Cll = Sheet1.[A5] Do While Not IsEmpty(Cll) Code = Mid(Cll.Offset(2), 22, 6) 'Ma NV Pass = Sheet2.[B:B].Find(Code, , xlFormulas, xlWhole).Offset(, 1) 'Password Sheet1.Copy 'Copy sheet Phieu luong qua file moi With ActiveWorkbook Cll.Resize(30, 2).Copy .Sheets(1).[A5] 'Copy du lieu qua file moi .Sheets(1).[36:65000].Delete 'Xoa dong thua .SaveAs ThisWorkbook.Path & "\" & Code & ".xlsx", , Pass 'Luu file con .Close 'Dong file con End With Set Cll = Cll.Offset(35) 'Phieu luong ke tiep Loop MsgBox "Xong!" Err: With Application .ScreenUpdating = True: .EnableEvents = True: .DisplayAlerts = True End With End Sub Bài đã được tự động gộp: 3/8/18 Cái vụ gửi email cho từng người thì bạn tham khảo trên diễn đàn, đã có 1 topic nói rất kỹ về vấn đề này: Gửi email tính lương cho từng người Nhấp chuột vào đây để mở rộng...Code này mình thêm chổ .SaveAs ThisWorkbook.Path & "\" thành .SaveAs ThisWorkbook.Path & "\Phieuluong" & Format(DateAdd("m", -1, Now), "yyyy_mm") để file con xuất ra chứa vào thư mục mình tạo sẳn. Nhưng do một số trường hợp đặc biệt (tháng đó nghỉ không lương nhiều không tham gia BH) thì số dòng lương còn lại là 34 (không phải 35). Dẫn đến việc xuất phiếu lương đến đấy sẽ bị dừng và không xuất tiếp nữa Vậy mình có cách nào để fix lỗi này không bác nghiaphuc Upvote 0
nghiaphuc
Thành viên gạo cội



Thành viên danh dự Tham gia 25/9/09 Bài viết 5,729 Được thích 8,859 Giới tính Nam Nghề nghiệp Giáo viên katunkatun đã viết: Code này mình thêm chổ .SaveAs ThisWorkbook.Path & "\" thành .SaveAs ThisWorkbook.Path & "\Phieuluong" & Format(DateAdd("m", -1, Now), "yyyy_mm") để file con xuất ra chứa vào thư mục mình tạo sẳn. Nhưng do một số trường hợp đặc biệt (tháng đó nghỉ không lương nhiều không tham gia BH) thì số dòng lương còn lại là 34 (không phải 35). Dẫn đến việc xuất phiếu lương đến đấy sẽ bị dừng và không xuất tiếp nữa Vậy mình có cách nào để fix lỗi này không bác nghiaphuc Nhấp chuột vào đây để mở rộng...Bạn sử dụng code sau nhé, trong code này tôi dùng Find để tìm bảng lương kế tiếp chứ không dịch chuyển cố định 35 dòng. Mã: Sao chép. Sub TachFile() Dim Cll As Range, Code As String, Pass As String, fAdd As String, i As Long, Tmp On Error GoTo Err With Application .ScreenUpdating = False: .EnableEvents = False: .DisplayAlerts = False End With Tmp = Sheet2.Range("B6:C" & Sheet2.[B65000].End(xlUp).Row).Value 'Vung luu Ma NV va password Set Cll = Sheet1.[A:A].Find("BTO CO.,LTD", Sheet1.[A1], xlFormulas, xlPart) fAdd = Cll.Address 'Dia chi tuong ung phieu luong dau tien Do Code = Mid(Cll.Offset(2), 22, 6) 'Ma NV i = 1 Do While i <= UBound(Tmp) And Tmp(i, 1) <> Code 'Tim vi tri chua Ma NV trong vung luu Ma NV va pasword i = i + 1 Loop If i <= UBound(Tmp) Then Pass = Tmp(i, 2) 'Password Sheet1.Copy 'Copy sheet Phieu luong qua file moi With ActiveWorkbook Cll.Resize(30, 2).Copy .Sheets(1).[A5] 'Copy du lieu qua file moi .Sheets(1).[36:65000].Delete 'Xoa dong thua .SaveAs ThisWorkbook.Path & "\PhieuLuong" & Format(DateAdd("m", -1, Now), "yyyy_mm") & "\" & Code & ".xlsx", , Pass 'Luu file con .Close 'Dong file con End With Set Cll = Sheet1.[A:A].FindNext(Cll) 'Phieu luong ke tiep Loop Until Cll.Address = fAdd MsgBox "Xong!" Err: With Application .ScreenUpdating = True: .EnableEvents = True: .DisplayAlerts = True End With End Sub Upvote 0 K
katunkatun
Thành viên mới 
Tham gia 3/8/18 Bài viết 12 Được thích 4 Giới tính Nam nghiaphuc đã viết: Bạn sử dụng code sau nhé, trong code này tôi dùng Find để tìm bảng lương kế tiếp chứ không dịch chuyển cố định 35 dòng. Mã: Sao chép. Sub TachFile() Dim Cll As Range, Code As String, Pass As String, fAdd As String, i As Long, Tmp On Error GoTo Err With Application .ScreenUpdating = False: .EnableEvents = False: .DisplayAlerts = False End With Tmp = Sheet2.Range("B6:C" & Sheet2.[B65000].End(xlUp).Row).Value 'Vung luu Ma NV va password Set Cll = Sheet1.[A:A].Find("BTO CO.,LTD", Sheet1.[A1], xlFormulas, xlPart) fAdd = Cll.Address 'Dia chi tuong ung phieu luong dau tien Do Code = Mid(Cll.Offset(2), 22, 6) 'Ma NV i = 1 Do While i <= UBound(Tmp) And Tmp(i, 1) <> Code 'Tim vi tri chua Ma NV trong vung luu Ma NV va pasword i = i + 1 Loop If i <= UBound(Tmp) Then Pass = Tmp(i, 2) 'Password Sheet1.Copy 'Copy sheet Phieu luong qua file moi With ActiveWorkbook Cll.Resize(30, 2).Copy .Sheets(1).[A5] 'Copy du lieu qua file moi .Sheets(1).[36:65000].Delete 'Xoa dong thua .SaveAs ThisWorkbook.Path & "\PhieuLuong" & Format(DateAdd("m", -1, Now), "yyyy_mm") & "\" & Code & ".xlsx", , Pass 'Luu file con .Close 'Dong file con End With Set Cll = Sheet1.[A:A].FindNext(Cll) 'Phieu luong ke tiep Loop Until Cll.Address = fAdd MsgBox "Xong!" Err: With Application .ScreenUpdating = True: .EnableEvents = True: .DisplayAlerts = True End With End Sub Nhấp chuột vào đây để mở rộng...Mình đã thử và thành công. Ban đầu mình copy và chạy không ra, nhưng tìm ra được lý do là ("BTO CO.,LTD" còn có những khoảng trắng phía trước, mình copy nguyên xi qua và chạy ngon lành. Cám ơn bác nghiaphuc ạ Upvote 0 Bạn phải đăng nhập hoặc đăng ký để trả lời bài viết tại đây.
Bài viết mới nhất
- Question Question
- vova2209
- Thứ sáu lúc 00:42
- Lập Trình với Excel
- adua29
- 19/5/11
- Ứng dụng cho lĩnh vực khác
- adua29
- 9/4/21
- Excel Ứng Dụng
- Question Question
- phuongnam366377
- Hôm nay lúc 13:23
- Lập Trình với Excel
- Question Question
- syquyen1987
- Hôm nay lúc 16:25
- Lập Trình với Excel
- gpe.vn
- 17/6/24
- Xây dựng ứng dụng.
- Question Question
- HeSanbi
- 26/2/26
- Lập Trình với Excel
- QUANGTUHN
- 20/8/20
- Excel và Kế Toán
- SA_DQ
- 3/11/25
- Chia sẻ
- phuongnam366377
- 28/2/26
- Excel và các ngôn ngữ lập trình khác
- ducminh14
- 5/12/11
- Các Add-ins cho excel
- MinhKhai
- Thứ tư lúc 17:08
- Cơ sở dữ liệu
- Question Question
- chienminhanh
- Thứ ba lúc 22:19
- Lập Trình với Excel
- GPE-Trợ Lý
- Thứ bảy lúc 08:35
- Thông tin về diễn đàn
- PhanTuHuong
- 7/10/21
- Xây dựng ứng dụng.
- katanvn
- Thứ tư lúc 13:46
- Excel Ứng Dụng
- Dán lên cao
- Nguyễn Duy Tuân
- 13/9/24
- BLUESOFTS: A-Excel, A-Tools
- Đã giải quyết
- HeSanbi
- 5/3/21
- Lập Trình với Excel
- Question Question
- cantl
- 28/8/23
- Lập Trình với Excel
- Question Question
- ongke0711
- 6/10/24
- Lập Trình với Excel
Thành viên có số lượng bài viết cao nhất tháng
- adua29 5
- Maika8008 4
- vova2209 4
- chienminhanh 3
- MinhKhai 3
- SA_DQ 3
- HeSanbi 3
- PhanTuHuong 3
- doredore1988 2
- Nguyễn Duy Tuân 2
- katanvn 2
- huhumalu 2
- HUONGHCKT 2
- gpe.vn 2
- ongke0711 2
- phuongnam366377 2
- C. Hoa 1
- anhtuanle123 1
- Thóc Sama 1
- ptm0412 1
Thành viên có điểm tương tác cao nhất tháng
- Maika8008 7
- katanvn 4
- GPE-Trợ Lý 3
- HUONGHCKT 3
- SA_DQ 3
- ptm0412 2
- yeudoi 2
- adua29 2
- ThuyMay93 1
- mafiana 1
- doredore1988 1
- huhumalu 1
Thời gian đếm ngược.
000 Ngày 00 Giờ 00 phút 00 giây Thân mời tham dự sự kiện sinh nhật GPE 2025- Trang chủ
- Diễn đàn
- Lập Trình với Excel
- Website này sử dụng cookies. Tiếp tục sử dụng trang này, đồng nghĩa với việc bạn chấp nhận website sử dụng cookies. Chấp nhận Tìm hiểu thêm.…
Từ khóa » Tách File Excel Thành Nhiều File Nhỏ
-
Cách Tách Sheet Thành Nhiều File Excel - Thủ Thuật
-
Tách File Excel Theo điều Kiện - YouTube
-
Cách Tách File Excel Thành Nhiều File Theo điều Kiện - Hàng Hiệu
-
Cách Chia Tách 1 File CSV Excel Lớn Ra Thành Nhiều File Nhỏ
-
[Tuts] Cách Tách Sheet Thành Từng File Excel Riêng Biệt Trong Excel
-
Cách Tách File Excel Thành Nhiều File Theo điều Kiện - Là Gì ở đâu ?
-
[Tuts] Cách Tách Sheet Thành Từng File Excel ... - Blog Chia Sẻ Kiến Thức
-
[Tự động] Công Cụ Tách Sheet Thành Nhiều File Excel Nhanh 7/2022
-
Tự động Chia File Tổng Thành Nhiều Files Báo Cáo Và Gửi Email
-
Cách Tách Các Sheet Từ 1 File Excel Thành Nhiều File Excel
-
Hướng Dẫn Cách Tách Sheet Trong Excel Thành Các File Riêng Bằng VBA
-
Làm Thế Nào để Chia Dữ Liệu Thành Nhiều Trang Tính Dựa Trên Cột ...
-
Cắt File PDF - Trích Xuất Trang Từ PDF Của Bạn