Chọn để xóa từng sheet của các file nằm trong cùng một thư mục, và gộp file, tạo in trang chẵn lẻ

tanthanhkg

Thành viên thường trực
Tham gia ngày
16 Tháng tám 2008
Bài viết
213
Được thích
27
Điểm
685
Tuổi
39
Em có 2 file dữ liệu có cấu trúc như nhau : sheet1 (Thông tin chung) và sheet2 là tên lớp(6A1)nằm trong cùng một thư mục.
- Xin mọi người cho em đoạn code xóa sheet1 (Thông tin chung) trong 2 file trên.
-Sau khi xóa song thì gộp 2 file trên lại thành 1 file và 1 sheet .(mỗi thông tin học sinh nằm trên 1 tờ giấy A4 như trong file kèm theo để in học bạ cho học sinh)
Em xin cảm ơn.
 
Lần chỉnh sửa cuối:

tanthanhkg

Thành viên thường trực
Tham gia ngày
16 Tháng tám 2008
Bài viết
213
Được thích
27
Điểm
685
Tuổi
39
Xin Thầy ndu96081631 giúp em Vì sắp thi HK1 rồi và chuẩn bị in học bạ của hs.
Vậy nhờ Thầy giúp đỡ :
- Em muốn xóa một lúc 2 sheet ví dụ như : xóa sheet 1(Trang bìa) và sheet2 (Thông tin chung), hoặc xóa sheet3(6A1) và sheet 1(Trang bìa) ở trong tất cả các file (đính kèm phía dưới) cùng thư mục thì phải làm sao.
- Sau khi xóa xong còn lại 1 sheet. Thì sẽ dồn tất cả các sheet ở các file khác trong cùng một thư mục vào một sheet như file ketqua đính kèm (Các file này nằm trong một thư mục có các sheet và có cấu trúc giống nhau như file đính kèm)
Trên là ý tưởng của em hoặc Thầy có ý tưởng hay cách nào để in học bạ nhờ Thầy giúp đỡ.
Em xin cảm ơn.
 
Lần chỉnh sửa cuối:

vanthinh3101

Thành viên tích cực
Tham gia ngày
24 Tháng một 2015
Bài viết
854
Được thích
932
Điểm
360
Tuổi
31
Nơi ở
Hà Nội
Xin Thầy ndu96081631 giúp em Vì sắp thi HK1 rồi và chuẩn bị in học bạ của hs.
Vậy nhờ Thầy giúp đỡ :
- Em muốn xóa một lúc 2 sheet ví dụ như : xóa sheet 1(Trang bìa) và sheet2 (Thông tin chung), hoặc xóa sheet3(6A1) và sheet 1(Trang bìa) ở trong tất cả các file (đính kèm phía dưới) cùng thư mục thì phải làm sao.
- Sau khi xóa xong còn lại 1 sheet. Thì sẽ dồn tất cả các sheet ở các file khác trong cùng một thư mục vào một sheet như file ketqua đính kèm (Các file này nằm trong một thư mục có các sheet và có cấu trúc giống nhau như file đính kèm)
Trên là ý tưởng của em hoặc Thầy có ý tưởng hay cách nào để in học bạ nhờ Thầy giúp đỡ.
Em xin cảm ơn.
Mình xin góp ý chút:
- Bạn nên sử dụng Mail Merge khi in 1 loạt.
- Để sử dụng Mail Merge bạn cần thiết kế 1 bảng dữ liệu chuẩn làm Database, sau đó lấy thông tin tổng hợp của các học sinh
 

tanthanhkg

Thành viên thường trực
Tham gia ngày
16 Tháng tám 2008
Bài viết
213
Được thích
27
Điểm
685
Tuổi
39
Mình xin góp ý chút:
- Bạn nên sử dụng Mail Merge khi in 1 loạt.
- Để sử dụng Mail Merge bạn cần thiết kế 1 bảng dữ liệu chuẩn làm Database, sau đó lấy thông tin tổng hợp của các học sinh
Dạ xin cảm ơn bài chia sẻ của anh (chị)
 

vanthinh3101

Thành viên tích cực
Tham gia ngày
24 Tháng một 2015
Bài viết
854
Được thích
932
Điểm
360
Tuổi
31
Nơi ở
Hà Nội
Dạ xin cảm ơn bài chia sẻ của anh (chị)
Bạn không nên tự ái như vậy.
Bạn post lại bài lên đi, mình thấy bài này khá hay, có thể giúp đỡ cho các giáo viên.
Bạn tự xây dựng form mẫu Database như mình gợi ý đi, mình sẽ tìm cách giúp.
Hi vọng mình giúp được :)
 

befaint

|||||||||||||
Tham gia ngày
6 Tháng một 2011
Bài viết
8,402
Được thích
9,490
Điểm
560
bài này khá hay, có thể giúp đỡ cho các giáo viên.
Bạn tự xây dựng form mẫu Database (*)
Cũng chưa tới mức khá hay, chỉ là đáng làm giúp.
Mặc dù bận cắt vài sọt cỏ cho cá nhưng mình cũng ráng làm phương án xử lý tạm thời ở topic này.
http://www.giaiphapexcel.com/diendan/threads/xóa-sheet-các-file-dữ-liệu-nằm-trong-cùng-thư-mục.131897/#post-830404

Phương án sử dụng "Bảng tổng hợp dữ liệu của các bạn học sinh" truyền qua mẫu học bạ để in thì hay thật. Chỉ tiếc, tác giả chưa phân biệt được bảng tổng hợp của các bạn học sinh với bảng thông tin của từng bạn học sinh.

(*) E rằng hơi khó hiểu trong trường hợp này.
 

tanthanhkg

Thành viên thường trực
Tham gia ngày
16 Tháng tám 2008
Bài viết
213
Được thích
27
Điểm
685
Tuổi
39
Bạn không nên tự ái như vậy.
Bạn post lại bài lên đi, mình thấy bài này khá hay, có thể giúp đỡ cho các giáo viên.
Bạn tự xây dựng form mẫu Database như mình gợi ý đi, mình sẽ tìm cách giúp.
Hi vọng mình giúp được :)
Xin cảm ơn anh.
Trong chủ đề này chỉ là "In học bạ của học sinh" mà em có nhiều phương án gửi lên trên diễn đàn, mỗi một phương án là một ý khác nhau, để em tổng hợp lại xem coi phương án nào có các đoạn code mang tính khả thi mà áp dụng in học bạ cho học sinh tốt nhất thì lấy phương án đó.
Ấy mà anh befaint cho là em viết chỉ có 1 nội dung ở nhiều topic khác, thật dễ dận.... rồi còn đòi spam gì đó nữa... Thật là phức tạp quá....
 

tanthanhkg

Thành viên thường trực
Tham gia ngày
16 Tháng tám 2008
Bài viết
213
Được thích
27
Điểm
685
Tuổi
39
Bạn không nên tự ái như vậy.
Bạn post lại bài lên đi, mình thấy bài này khá hay, có thể giúp đỡ cho các giáo viên.
Bạn tự xây dựng form mẫu Database như mình gợi ý đi, mình sẽ tìm cách giúp.
Hi vọng mình giúp được :)
Xin cảm ơn anh.
Trước tiên anh giúp em viết lại đoạn code này theo phương án của em được không ạ (Bởi vì đoạn code này khi in nó sẽ in toàn bộ dữ liệu). Em gởi kèm theo file Print.xls và thư mục HS_...
Phương án của em là :
Khi nhắp chuột vào nút click trong file Print.xls, chọn thư mục chứa các file cần in (thư mục HS_....), sau khi chọn thư mục chứa các file cần in xong thì em muốn sẽ xuất hiện thông báo "chọn sheet cần in". Sau khi chọn sheet cần in sẽ hiện ra thông báo "In trang lẻ hoặc trang chẵn hoặc in tất cả" rồi bấm OK để in được không ạ.
Đoạn code này là của anh befaint viết cho em .
--------------
Sub Main()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Const extFile As String = "xls"
Dim pFolder As String, wb As Workbook, wsName As String, wbName As String
Dim arName, i As Long, aTem, pFile As String
pFolder = GetpFolder("")
If Len(pFolder) = 0 Then Exit Sub
pFolder = pFolder & "\"
arName = GetFilesInFolder(pFolder, extFile)
If typeName(arName) <> "Variant()" Then Exit Sub
wbName = VBA.UCase(ThisWorkbook.Name)
For Each aTem In arName
If Not VBA.UCase(aTem) Like wbName Then
pFile = pFolder & aTem
Set wb = Workbooks.Open(pFile)
wsName = NameSheet2Print(wb)
If Len(wsName) > 0 Then
wb.Worksheets(wsName).PrintOut 'In ngay
End If
wb.Close False
End If
Next aTem
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub

Function NameSheet2Print(ByVal wb As Workbook) As String
Dim ws As Worksheet
For Each ws In wb.Worksheets
If ws.Name Like "#*" Then
NameSheet2Print = ws.Name
Exit For
End If
Next ws
End Function

Public Function GetpFolder(ByVal pFolder As String) As String
With Application.FileDialog(msoFileDialogFolderPicker)
.Title = "Select a Folder"
.AllowMultiSelect = False
.InitialFileName = pFolder
If .Show Then GetpFolder = .SelectedItems(1)
End With
End Function

Public Function GetFilesInFolder(ByVal pFolder As String, ByVal extensionFile As String)
Dim FSo As Object, objFolder As Object, objFile As Object, Result(), i As Long
Set FSo = CreateObject("Scripting.FileSystemObject")
Set objFolder = FSo.GetFolder(pFolder)
extensionFile = VBA.UCase(extensionFile)
For Each objFile In objFolder.Files
If VBA.UCase(FSo.GetExtensionName(objFile)) Like extensionFile Then
i = i + 1
ReDim Preserve Result(1 To i)
Result(i) = objFile.Name
End If
Next objFile
If i > 0 Then GetFilesInFolder = Result
End Function
------------------
Xin anh giúp và có thể đây là lối thoát của em.
 

File đính kèm

Lần chỉnh sửa cuối:

vanthinh3101

Thành viên tích cực
Tham gia ngày
24 Tháng một 2015
Bài viết
854
Được thích
932
Điểm
360
Tuổi
31
Nơi ở
Hà Nội
Xin cảm ơn anh.
Trước tiên anh giúp em viết lại đoạn code này theo phương án của em được không ạ (Bởi vì đoạn code này khi in nó sẽ in toàn bộ dữ liệu). Em gởi kèm theo file Print.xls và thư mục HS_...
Phương án của em là :
Khi nhắp chuột vào nút click trong file Print.xls, chọn thư mục chứa các file cần in (thư mục HS_....), sau khi chọn thư mục chứa các file cần in xong thì em muốn sẽ xuất hiện thông báo "chọn sheet cần in". Sau khi chọn sheet cần in sẽ hiện ra thông báo "In trang lẻ hoặc trang chẵn hoặc in tất cả" rồi bấm OK để in được không ạ.
Đoạn code này là của anh befaint viết cho em .
--------------
Sub Main()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Const extFile As String = "xls"
Dim pFolder As String, wb As Workbook, wsName As String, wbName As String
Dim arName, i As Long, aTem, pFile As String
pFolder = GetpFolder("")
If Len(pFolder) = 0 Then Exit Sub
pFolder = pFolder & "\"
arName = GetFilesInFolder(pFolder, extFile)
If typeName(arName) <> "Variant()" Then Exit Sub
wbName = VBA.UCase(ThisWorkbook.Name)
For Each aTem In arName
If Not VBA.UCase(aTem) Like wbName Then
pFile = pFolder & aTem
Set wb = Workbooks.Open(pFile)
wsName = NameSheet2Print(wb)
If Len(wsName) > 0 Then
wb.Worksheets(wsName).PrintOut 'In ngay
End If
wb.Close False
End If
Next aTem
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub

Function NameSheet2Print(ByVal wb As Workbook) As String
Dim ws As Worksheet
For Each ws In wb.Worksheets
If ws.Name Like "#*" Then
NameSheet2Print = ws.Name
Exit For
End If
Next ws
End Function

Public Function GetpFolder(ByVal pFolder As String) As String
With Application.FileDialog(msoFileDialogFolderPicker)
.Title = "Select a Folder"
.AllowMultiSelect = False
.InitialFileName = pFolder
If .Show Then GetpFolder = .SelectedItems(1)
End With
End Function

Public Function GetFilesInFolder(ByVal pFolder As String, ByVal extensionFile As String)
Dim FSo As Object, objFolder As Object, objFile As Object, Result(), i As Long
Set FSo = CreateObject("Scripting.FileSystemObject")
Set objFolder = FSo.GetFolder(pFolder)
extensionFile = VBA.UCase(extensionFile)
For Each objFile In objFolder.Files
If VBA.UCase(FSo.GetExtensionName(objFile)) Like extensionFile Then
i = i + 1
ReDim Preserve Result(1 To i)
Result(i) = objFile.Name
End If
Next objFile
If i > 0 Then GetFilesInFolder = Result
End Function
------------------
Xin anh giúp và có thể đây là lối thoát của em.
Mình chưa đủ giỏi để sửa lại code phía trên.
Mình gửi bạn file đính kèm, làm theo hướng tạo Database như mình đã nói:
- Data là sheet chứa dữ liệu gốc.
- Print là Template đã điều chỉnh thành 2 trang A4 như bạn yêu cầu.
- Nếu ổn, sau viết thêm code để điền dữ liệu và in theo yêu cầu là được.
Bạn xem như vậy có được không?
Để làm tiếp, mình hỏi 1 chút:
- Điểm số, hạnh kiểm, học lực có phải điền luôn và in ra hay để lại viết tay?
- Trường hợp phải điền và in ra luôn, số liệu có thể lấy ở đâu?
 

File đính kèm

tanthanhkg

Thành viên thường trực
Tham gia ngày
16 Tháng tám 2008
Bài viết
213
Được thích
27
Điểm
685
Tuổi
39
Trước hết xin cảm ơn anh rất nhiều ạ.
Database của anh quá tuyệt vời.
Em đang tổng hợp dữ liệu rồi gởi lên cho anh.
Anh ráng đợi em chúc xíu nhé anh.
Mong anh giúp đỡ nhiều.
Em xin cảm ơn.
 

tanthanhkg

Thành viên thường trực
Tham gia ngày
16 Tháng tám 2008
Bài viết
213
Được thích
27
Điểm
685
Tuổi
39
@tanthanhkg
Đề nghị bạn phục hồi lại bài 1 và 2 nhé. Nếu không tôi buộc phải khóa đề tài này lại
Dạ em sẽ phục hồi...
Để em tìm lại nội dung rồi em post lên...
==============================
Khi nhận ra vấn đề đã thấy mình sai.
Xin thành thật xin lỗi anh befaint và BQT GPE nếu có gì sai xin thứ lỗi cho em.
Em xin cảm ơn
=============================
 

tanthanhkg

Thành viên thường trực
Tham gia ngày
16 Tháng tám 2008
Bài viết
213
Được thích
27
Điểm
685
Tuổi
39
Khi nhận ra vấn đề đã thấy mình sai.
Xin thành thật xin lỗi mọi người.
Xin chân thành cảm ơn.
 

tanthanhkg

Thành viên thường trực
Tham gia ngày
16 Tháng tám 2008
Bài viết
213
Được thích
27
Điểm
685
Tuổi
39
Để làm tiếp, mình hỏi 1 chút:
- Điểm số, hạnh kiểm, học lực có phải điền luôn và in ra hay để lại viết tay?
- Trường hợp phải điền và in ra luôn, số liệu có thể lấy ở đâu?
Dạ rất tốt rồi anh ạ.
-Điểm số, hạnh kiểm, học lực điền luôn và in ra. Em gởi anh bảng tổng hợp bên dưới, bảng này ở một số sheet chưa có điểm. Vì các môn học còn thiếu điểm và thi học kỳ 1 chưa thi cho nên chưa cập nhật điểm.
-Trường hợp phải điền và in ra luôn, số liệu có thể lấy ở đâu? Em gởi anh bảng tổng hợp bên dưới có tên là (HS_THCS_SoGoiTenVaGhiDiem_8A1_CN.xls) số liệu có thể lấy ở đây.
Trong file GPE ở sheet (Print) trong nội dung comment của các ô em có chỉ dẫn cũng như trong file Data
--------------------------------------------------
Anh bớt chút thời gian đọc "Chào anh vanthinh3101.doc" của em nhé.
--------------------------------------------------
Cảm ơn anh rất nhiều
 

File đính kèm

Lần chỉnh sửa cuối:

tanthanhkg

Thành viên thường trực
Tham gia ngày
16 Tháng tám 2008
Bài viết
213
Được thích
27
Điểm
685
Tuổi
39
Mình xem bài bạn gửi rồi.
Tiếc là mình đang bận, chưa làm luôn được.
Để 1 - 2 hôm nữa mình sẽ làm cho.
Mình muốn hỏi thêm nữa, tại sao không có mã học sinh nhỉ?
Nếu có mã học sinh sẽ giải quyết được tình trạng trùng họ tên, thuận tiện cho việc quản lý Cơ sở dữ liệu hơn rất nhiều.
Vâng khi nào anh rảnh thì làm cũng được, em cũng chưa cần .
Mã số HS nằm nằm ở cột B ở file dưới anh ơi.
Cảm ơn anh.
Chúc anh có một buổi tối vui vẻ bên gia đình và người thân.
 

File đính kèm

tanthanhkg

Thành viên thường trực
Tham gia ngày
16 Tháng tám 2008
Bài viết
213
Được thích
27
Điểm
685
Tuổi
39
Khi nhận ra vấn đề đã thấy mình sai.
Xin nhận lỗi trước mọi người.
Xin thứ lỗ cho tôi.
 
Top