Ngắt trang khi in Excel ra file PDF hàng loạt

Liên hệ QC

mrt137

Thành viên mới
Tham gia
21/5/11
Bài viết
15
Được thích
1
Xin chào các Anh/Chị trên diễn đàn, em có vấn đề muốn nhờ sự trợ giúp của các Anh/Chị trên Diễn đàn GPE ạ.
Hiện tại em đang làm bên ngành xây dựng, vấn đề em đang gặp phải là khi in các bảng tính Excel có số hàng lớn, phải hiển thị lặp lại tiêu đề bảng ở các trang sau thì bị trường hợp ngắt trang như hình bên dưới.
Sau khi Hiện/Ẩn thì trang in bị ngắt ở giữa phần Tên đơn vị ký và Họ tên người ký của đơn vị (PHẦN KÝ), đối với những trang như thế này phải kiểm soát lại và kéo dãn dòng thủ công rồi in lại. Vậy Anh/Chị xem có cách nào giúp em ngắt trang in khi gặp tình huống như vậy 1 là "co độ cao dòng" dồn toàn bộ phần ký 1 trang hoặc "giãn dòng" sao cho toàn bộ phần ký sang hẳn trang mới kèm theo dòng tiêu đề + 1, 2 dòng dữ liệu của bảng tính chính để bảng tính nhìn hợp lý hơn.
Với công việc em đang làm thì in như thế này số lượng có thể lên đến vài nghìn trang nên rất mất thời gian. Em gửi lên file đính kèm có thể thấy được lỗi ở Phân đoạn 16 và 23.
Mong nhận được sự trợ giúp của các Anh/Chị.
Trân trọng cảm ơn.

217839
 

File đính kèm

  • Ngat trang in_GPE.xlsm
    692.2 KB · Đọc: 15
Xin chào các Anh/Chị trên diễn đàn, em có vấn đề muốn nhờ sự trợ giúp của các Anh/Chị trên Diễn đàn GPE ạ.
Hiện tại em đang làm bên ngành xây dựng, vấn đề em đang gặp phải là khi in các bảng tính Excel có số hàng lớn, phải hiển thị lặp lại tiêu đề bảng ở các trang sau thì bị trường hợp ngắt trang như hình bên dưới.
Sau khi Hiện/Ẩn thì trang in bị ngắt ở giữa phần Tên đơn vị ký và Họ tên người ký của đơn vị (PHẦN KÝ), đối với những trang như thế này phải kiểm soát lại và kéo dãn dòng thủ công rồi in lại. Vậy Anh/Chị xem có cách nào giúp em ngắt trang in khi gặp tình huống như vậy 1 là "co độ cao dòng" dồn toàn bộ phần ký 1 trang hoặc "giãn dòng" sao cho toàn bộ phần ký sang hẳn trang mới kèm theo dòng tiêu đề + 1, 2 dòng dữ liệu của bảng tính chính để bảng tính nhìn hợp lý hơn.
Với công việc em đang làm thì in như thế này số lượng có thể lên đến vài nghìn trang nên rất mất thời gian. Em gửi lên file đính kèm có thể thấy được lỗi ở Phân đoạn 16 và 23.
Mong nhận được sự trợ giúp của các Anh/Chị.
Trân trọng cảm ơn.

View attachment 217839
Bạn thử file xem
 

File đính kèm

  • Ngat trang in_GPE.xlsm
    686.3 KB · Đọc: 41
Chân thành cảm ơn bạn. Mình đã in lại và thấy PĐ 16 đã được nhưng PĐ 23, 25 vẫn còn bị ngắt chưa ổn, lý do có thể do code của bạn đã xử lý ngắt trang trên Excel chuẩn rồi nhưng khi in ra lại không được như lúc preview trước khi in.
Mình có ảnh và file minh họa, nhờ bạn xử lý triệt để giúp. Cảm ơn bạn rất nhiều.
 

File đính kèm

  • Preview tren excel.png
    Preview tren excel.png
    40.1 KB · Đọc: 25
  • Thuc te in ra PDF.png
    Thuc te in ra PDF.png
    73.4 KB · Đọc: 36
  • PKTKTHH_PD25.pdf
    577.5 KB · Đọc: 11
  • PKTKTHH_PD23.pdf
    625.1 KB · Đọc: 8
Xin chào các anh chị, sau mấy hôm mò mẫm em cũng ra được đoạn code xử lý vấn đề này, chưa triệt để nhưng đã hạn chế được tương đối. Rất mong các anh chị xem giúp để có thể tối ưu hơn. Như em đang tắc ở 1 số vấn đề sau:
- Vấn đề nặng nhất vẫn là "nhìn vậy nhưng không phải vậy" của Excel, không thể kiểm soát được tình trạng này. Ví dụ như hình đính kèm, view ngắt trang 1 dòng, dùng HPageBreaks() bắt dòng cuối lại ra 1 dòng khác.
- Làm cách nào để xác định được vị trí "HIEN" cuối cùng của bảng tính (ngoại trừ vùng ký), em đành phải làm kiểu nông dân dùng cột phụ rồi dùng kết hợp hàm Match, CoutnIF...
- Làm cách nào để xác định tên cột đầu tiên của VÙNG IN. Như trong file VD là cột Q (... Range("Q"&(Activesheet.Range("AO1")-2)), em gà quá nên phải đưa hẳn tên cột Q ra trong code thì bị hạn chế nếu để Sub Set_Break này làm Sub puplic có thể gọi được trên nhiều sheet khác nhau.

Cảm ơn anh chị đã xem bài!
 

File đính kèm

  • Ngat trang in_GPE_9_6.xlsm
    725.5 KB · Đọc: 32
  • HPageBreak_sai_lech_view.png
    HPageBreak_sai_lech_view.png
    239.5 KB · Đọc: 43
IN THỬ RỒI NÈ
 

File đính kèm

  • GPE.pdf
    294.4 KB · Đọc: 30
Mình đã tìm ra nguyên nhân của sự ngắt trang không kiểm soát được do mình hay dùng .FitToPagesWide .FitToPagesTall để fit trang, khi in đã để fit trang thì in sẽ bị .zoom không kiểm soát được do excel tự động tính tỷ lệ này cho vừa, mà mỗi máy tính, máy in thì tỷ lệ zoom có khi lại khác nhau.
Tạm thời với file này mình đã xử lý rất ổn được vấn đề ngắt trang rồi, gửi anh em cùng tham khảo.

Tuy nhiên để tối ưu có thể tạo SUB Print gọi vào bất kỳ sheet nào thì chưa được, kính nhờ anh chị em xem code tối ưu giúp mình đoạn sau:
"er = Sheets(sheetname).Range("AN" & ActiveSheet.Rows.Count).End(xlUp).Row
' xac dinh dong cuoi cung cot AN dang hien co du lieu (HIEN). Cac file khac nhau phai dieu chinh thay cot "AN" cho phu hop
' toi uu duoc xac dinh er trong vung filter duoc nua thi se toi uu, khong phu thuoc vao cot nao cua sheet, goi vao cac sheet deu duoc"

Cảm ơn anh chị đã xem bài.
Bài đã được tự động gộp:

Bạn có thể chia sẻ cùng mọi người cách xử lý của bạn chứ?
 

File đính kèm

  • Ngat trang in_GPE_12_6.xlsm
    702.4 KB · Đọc: 45
Lần chỉnh sửa cuối:
Mình đã tìm ra nguyên nhân của sự ngắt trang không kiểm soát được do mình hay dùng .FitToPagesWide .FitToPagesTall để fit trang, khi in đã để fit trang thì in sẽ bị .zoom không kiểm soát được do excel tự động tính tỷ lệ này cho vừa, mà mỗi máy tính, máy in thì tỷ lệ zoom có khi lại khác nhau.
Tạm thời với file này mình đã xử lý rất ổn được vấn đề ngắt trang rồi, gửi anh em cùng tham khảo.

Tuy nhiên để tối ưu có thể tạo SUB Print gọi vào bất kỳ sheet nào thì chưa được, kính nhờ anh chị em xem code tối ưu giúp mình đoạn sau:
"er = Sheets(sheetname).Range("AN" & ActiveSheet.Rows.Count).End(xlUp).Row
' xac dinh dong cuoi cung cot AN dang hien co du lieu (HIEN). Cac file khac nhau phai dieu chinh thay cot "AN" cho phu hop
' toi uu duoc xac dinh er trong vung filter duoc nua thi se toi uu, khong phu thuoc vao cot nao cua sheet, goi vao cac sheet deu duoc"

Cảm ơn anh chị đã xem bài.
Bài đã được tự động gộp:


Bạn có thể chia sẻ cùng mọi người cách xử lý của bạn chứ?
in ngang hay dọc ?
Bài đã được tự động gộp:

đang vọc vạch vba bằng cách đọc nhiều bài, thấy cái nào thích thì vọc còn trình bày ra sao , không biết viết sao, chỉ biết làm cách của thầy anh chú bác @ndu96081631 vba giống như máy ghi âm, còn nhiều điều hay đang vọc , nói chung đọc ngàn quyển sách mà không làm thực tế khó tiếp thu lắm, xin cảm ơn tất cả thầy cô anh chị em viết nhiều bài hay để mình học hỏi ( không biết viết những lời như thế ở mục nào..... đăng tùm lum có người nhảy vô chụp liền) cảm ơn tất cả.
 
Lần chỉnh sửa cuối:
in ngang hay dọc ?
Bài đã được tự động gộp:

đang vọc vạch vba bằng cách đọc nhiều bài, thấy cái nào thích thì vọc còn trình bày ra sao , không biết viết sao, chỉ biết làm cách của thầy anh chú bác @ndu96081631 vba giống như máy ghi âm, còn nhiều điều hay đang vọc , nói chung đọc ngàn quyển sách mà không làm thực tế khó tiếp thu lắm, xin cảm ơn tất cả thầy cô anh chị em viết nhiều bài hay để mình học hỏi ( không biết viết những lời như thế ở mục nào..... đăng tùm lum có người nhảy vô chụp liền) cảm ơn tất cả.
Bảng tính của mình rộng thường in ngang, thỉnh thoảng cũng có in dọc. Bạn có thể up file bạn làm lên để mọi người cùng chia sẻ chứ? Thanks!
 
Web KT
Back
Top Bottom