Code tách sheet thành 01 file mới rồi vào lưu vào đường dẫn có sẵn

Liên hệ QC

huonglien1901

GPE là ngôi nhà thứ 2 của tôi!!!
Tham gia
17/4/16
Bài viết
2,701
Được thích
2,434
Giới tính
Nam
Nghề nghiệp
Nhân viên kỹ thuật in ấn
Chào mọi người!

Em có vấn đề nhờ mọi người hỗ trợ.

em có nhiều file xuất từ phần mềm ra,
em muốn dựa vào cột Zone và cột Alley(2 CỘT NÀY ĐỂ GHÉP LẠI TẠO TÊN FILE) để tách file.

Ví dụ: Zone: A, Alley: 01-------> ghép lại tạo tên file là A01

những file mới tạo ra lưu thành vào đường dẫn có sẵn:
Ví dụ: C:\Users\Administrator\Downloads\Documents: những file mới vừa tạo lưu thành 01 folder riêng(sẽ lưu trong đường dẫn này)
Folder A: sẽ chứa những file có tên là A01,A02............
folder B: sẽ chưa những file có tên là: B01,B02.....
Yêu cầu 1: Em muốn tách sheet thành file và lưu với tên dựa vào điều kiện (cột Zone, cột Alley.)
Yêu cầu2: Khi em copy dữ liệu vào dữ liệu cũ sẽ xóa đi.
yêu cầu 3: khi em copy dữ liệu dán vào thì tự động căn chỉnh dòng và cột.
yêu cầu 4: tạo nút Print hoặc xem trước và in tự động các file này.

Em cảm ơn mọi người nhiều!
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Ủa sao code nhiều vậy ta? Thấy chỉ có mỗi động tác SaveAs file thôi mà

Xin chào ndu96081631,
Dạ, code nhiều(code thì không phải do OT viết mà lấy chỗ lọ đập vào chỗ chai ạ,tập tin OT lưu lung tung trong máy tính không rõ nguồn gốc code là của ai nên có chỗ nào không phải mong tất cả các bạn thông cảm) là vì huonglien1901 mong muốn code tự tạo thư mục với tên X và trong thư mục X lại có tên tập tin tên Y,
dữ liệu và định dạng giống y sì tập tin A nào đó được xuất ra từ phần mềm. Các thông tin X và Y lại nằm trong tập A nào đó.
Trong khi Oanh Thơ (OT) chưa biết tạo AddIn nên mới tạo 1 tập tin trung gian để thực hiện việc này.
OT đưa code lên đây không hi vọng giúp được gì nhiều cho huonglien1901, phần lớn để mong nhận được sự góp ý của những người có kiến thức chuyên sâu như ndu96081631 chỉ giáo.
 
Upvote 0
Tôi thử đoán ý bạn nhé:
- Tạo điều kiện lọc (chắc phải dùng Advanced Filter) theo 2 cột A, B, kèm theo đó là đường dẫn tương ứng để lưu file
- Lọc theo điều kiện của cột A, B -> Save sheet thành File vào Folder tương ứng.
Tốt nhất cho 1 File chuẩn lên đây, rồi mô tả kết quả mong muốn xem sao.
Bài đã được tự động gộp:

Cũng không biết đâu. Vì tôi không chắc là mình hiểu đúng ý tác giả
Cứ thử đoán mò xem sao thôi ạ
Có thể tạo 1 bảng điều kiện lọc kèm theo đường dẫn lưu kết quả.
Chạy 1 vòng lặp để lọc và dùng SaveSheet của sư phụ là đẹp.
 
Lần chỉnh sửa cuối:
Upvote 0
Tôi thấy chủ Topic nên xem lại cách diễn đạt của mình, rõ ràng vấn đề này không khó nhưng cái khó ở đây là đã 46 bài viết rồi mà chẳng ai đoán được tác giả muốn cái gì. Anh @ndu96081631 thì đoán là SaveAs, tác giả thì muốn Save phân vùng còn @Cá ngừ F1 thì là Save sheet, tôi thì hiểu Copy Sheet... Nói chung vấn đề sẽ được giải quyết nếu @huonglien1901 giải thích rõ chi tiết, và đưa dữ liệu mẫu toàn là những file có cột A và B giống nhau, vậy khi chạy code thì chắc chắn tên file sẽ bị trùng. Nên đưa dữ liệu mang tính tổng quát nhất.
 
Upvote 0
Tôi thấy chủ Topic nên xem lại cách diễn đạt của mình, rõ ràng vấn đề này không khó nhưng cái khó ở đây là đã 46 bài viết rồi mà chẳng ai đoán được tác giả muốn cái gì. Anh @ndu96081631 thì đoán là SaveAs, tác giả thì muốn Save phân vùng còn @Cá ngừ F1 thì là Save sheet, tôi thì hiểu Copy Sheet... Nói chung vấn đề sẽ được giải quyết nếu @huonglien1901 giải thích rõ chi tiết, và đưa dữ liệu mẫu toàn là những file có cột A và B giống nhau, vậy khi chạy code thì chắc chắn tên file sẽ bị trùng. Nên đưa dữ liệu mang tính tổng quát nhất.
Ý em thế này anh à!
1. đầu tiên em tạo file chuẩn để copy dữ liệu vào khi phần mềm xuất xuống.
2. Khi dán dữ liệu vào file này, em muốn copy dữ liệu trong file này lưu với tên(dựa vào cột Zone&cột Alley)
3. Khi bấm nút xuất file thì dữ liệu được copy và tự động tạo phân vùng(A,B,C,D......)
4. khi những file có chung tên A thì được lưu vào Folder A(những tên như AT, AG,AI(lấy ký tự đầu tiên)--->thì được gom vào thư mục A
5. khi xuất file thì tự động xóa dòng chỉ để dòng tiêu đề lại thôi.

Đây là những yêu cầu của em(mà code Anh đã đáp ứng yêu cầu rồi)
 
Upvote 0
Ý em thế này anh à!
1. đầu tiên em tạo file chuẩn để copy dữ liệu vào khi phần mềm xuất xuống.
2. Khi dán dữ liệu vào file này, em muốn copy dữ liệu trong file này lưu với tên(dựa vào cột Zone&cột Alley)
3. Khi bấm nút xuất file thì dữ liệu được copy và tự động tạo phân vùng(A,B,C,D......)
4. khi những file có chung tên A thì được lưu vào Folder A(những tên như AT, AG,AI(lấy ký tự đầu tiên)--->thì được gom vào thư mục A
5. khi xuất file thì tự động xóa dòng chỉ để dòng tiêu đề lại thôi.

Đây là những yêu cầu của em(mà code Anh đã đáp ứng yêu cầu rồi)
Nếu vậy thì theo tôi nên viết thế này, dùng một file riêng (File này chứa code, không có dữ liệu), sau đó thiết kế nút nhấn trên file này để chọn những file dữ liệu (Những file xuất ra từ phần mềm) sau đó code sẽ làm việc mở từng file bạn chọn và lưu lại từng file đó với tên theo như bạn mô tả và khi lưu xong sẽ tự đóng file. Vậy thì sẽ bỏ qua công đoạn xóa dữ liệu cũ và copy dữ liệu mới vào file và cho chạy code. Nếu đúng ý bạn thì thực hiện kiểu này được không?
 
Upvote 0
Nếu vậy thì theo tôi nên viết thế này, dùng một file riêng (File này chứa code, không có dữ liệu), sau đó thiết kế nút nhấn trên file này để chọn những file dữ liệu (Những file xuất ra từ phần mềm) sau đó code sẽ làm việc mở từng file bạn chọn và lưu lại từng file đó với tên theo như bạn mô tả và khi lưu xong sẽ tự đóng file. Vậy thì sẽ bỏ qua công đoạn xóa dữ liệu cũ và copy dữ liệu mới vào file và cho chạy code. Nếu đúng ý bạn thì thực hiện kiểu này được không?
Nếu vậy thì theo tôi nên viết thế này, dùng một file riêng (File này chứa code, không có dữ liệu)
cái này đúng ý em rồi,
sau đó thiết kế nút nhấn trên file này để chọn những file dữ liệu
cái này chưa đúng ý Anh à, tại vì file trên phần mềm xuất ra chưa có tên gì cả(chỉ là worrkbook bình thường thôi) nên chưa biết chọn file nào.
Những cái Anh làm những bài đầu đúng ý rồi Anh, nhưng chỉ tại em muốn khi nhấn nút xuất file dữ liệu sẽ xóa đi và dòng cũng xóa đi(chỉ trừ dòng tiêu đề lại thôi) làm những cái này trên file gốc.
 
Upvote 0
cái này đúng ý em rồi,

cái này chưa đúng ý Anh à, tại vì file trên phần mềm xuất ra chưa có tên gì cả(chỉ là worrkbook bình thường thôi) nên chưa biết chọn file nào.
Những cái Anh làm những bài đầu đúng ý rồi Anh, nhưng chỉ tại em muốn khi nhấn nút xuất file dữ liệu sẽ xóa đi và dòng cũng xóa đi(chỉ trừ dòng tiêu đề lại thôi) làm những cái này trên file gốc.

Có phải ý của @huonglien1901 là copy dữ liệu trực tiếp từ phần mềm rồi pase vào trong tập tin excel có chứa code này,sau đó chỉ việc bấm nút trên tập tin này rồi xử lý các công việc xyz..?
 
Upvote 0
Upvote 0
Vậy thì tạo cái Add-Ins dùng sẽ đã hơn nhiều, không cần phải copy gì cả, phần mềm xuất ra xong chọn cái là xong. :D:D:D

Cái này chắc bạn ấy không sử dụng chức năng export của phần mềm chú ạ, mà chỉ copy dữ liệu trên màn hình của phần mềm rồi pase vào tập tin excel trắng(kiểu như crl+N) sau đó rồi lưu file này với tên(dựa vào cột Zone&cột Alley) và trong thư mục A(hay 1 tên X nào đó có ký tự đầu tiên của dữ liệu nằm trong cột Zone hay nói cách khác cũng là tên chữ cái đầu tiên của tập tin cần lưu) chú ạ.

Như vậy bài 37 bạn @befaint khẳng định các tập tin bạn ấy đưa lên không phải xuất ra từ phần mềm là đúng rồi,@huonglien1901 vẫn khẳng định dữ liệu xuất ra từ phần mềm là vì bạn ấy đang hiểu dữ liệu được lấy từ phần mềm.
Xuất từ phần mềm khác với lấy từ nguồn (hay nói cách khác là copy từ phần mềm rồi pase trực tiếp vào bảng tính excel).
Cháu thấy thường dữ liệu xuất từ phần mềm không có màu mè gì cả.
 
Upvote 0
Góp vui cho đông vui thêm chút
Mã:
Sub Save_File()
Dim Fso As Object, MyFolder As String
Dim Path As String, MyFile As String, CurSh As Worksheet
Set Fso = CreateObject("scripting.FileSystemObject")
Set CurSh = ActiveSheet
Path = "D:\"
If [A2].Value = Empty Then Exit Sub
MyFolder = Path & Left([A2], 1)
MyFile = MyFolder & "\" & [A2] & [B2]
If Not Fso.folderexists(MyFolder) Then Fso.CreateFolder (MyFolder)
CurSh.Copy
ActiveWorkbook.SaveAs MyFile, 18
ActiveWorkbook.Close False
CurSh.[A2].Resize(1000).EntireRow.ClearContents
End Sub
 
Upvote 0
Góp vui cho đông vui thêm chút
Mã:
Sub Save_File()
Dim Fso As Object, MyFolder As String
Dim Path As String, MyFile As String, CurSh As Worksheet
Set Fso = CreateObject("scripting.FileSystemObject")
Set CurSh = ActiveSheet
Path = "D:\"
If [A2].Value = Empty Then Exit Sub
MyFolder = Path & Left([A2], 1)
MyFile = MyFolder & "\" & [A2] & [B2]
If Not Fso.folderexists(MyFolder) Then Fso.CreateFolder (MyFolder)
CurSh.Copy
ActiveWorkbook.SaveAs MyFile, 18
ActiveWorkbook.Close False
CurSh.[A2].Resize(1000).EntireRow.ClearContents
End Sub
Đọc code a Hải vẫn thấy sướng (mặc dù chỉ hiểu mang máng). hì hì. (Mà máy ko có ổ D chắc tèo)
 
Upvote 0
Đọc code a Hải vẫn thấy sướng (mặc dù chỉ hiểu mang máng). hì hì. (Mà máy ko có ổ D chắc tèo)
Cái tật của mình là viết code hởi cẩu thả so với những anh em khác trên GPE cho nên chủ thớt thường phải hỏi lại vài lần. Chủ yếu là câu bài cho mau lên sao.. ka ka. Nhưng mà chắc 99% là có ổ D chứ
 
Upvote 0
Upvote 0
Web KT

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

Back
Top Bottom