Hỏi về việc In ấn trong Excel (2 người xem)

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

Người dùng đang xem chủ đề này

laohiep

Thành viên chính thức
Tham gia
29/11/08
Bài viết
58
Được thích
12
Các bạn giúp mình một tý nhá: Mình đang muốn in 1 file BẢNG LƯƠNG, nó gồm 50 bộ phận, mỗi bộ phận có thể 1-3 trang. Mục đích của mình là in vùng 2 (màu xanh) lặp lại trên tất cả các trang; vùng 1 (màu vàng) lặp lại ở trang đầu của mỗi bộ phận; vùng 3 (màu cam) lặp lại ở trang cuối ở mỗi bộ phận. --> mình muốn chỉ cần 1 lệnh in sẽ in tất cả 50 bảng lương đó. Bạn nào có phương pháp hay giúp mình nhá. Xin cảm ơn!!
 

File đính kèm

Ý Bạn muốn trang sau lập lại tiêu đề phải không ?
Bạn vào File/Page Setup - Chọn gờ Sheet, trong phần Rows to repeat at top bạn gõ $5:$9 -> để chọn vùng xanh bạn muốn lặp lại ở tiêu đề trang sau.
 
Lần chỉnh sửa cuối:
Ý Bạn muốn trang sau lập lại tiêu đề phải không ?
Bạn vào File/Page Setup - Chọn gờ Sheet, trong phần Rows to repeat at top bạn gõ $5:$9 -> để chọn vùng xanh bạn muốn lặp lại ở tiêu đề trang sau.
Đúng rồi, nhưng đó chỉ là phần 1 của nội dung trên, còn phần 2 nữa, nếu bạn có phương pháp nào hay chỉ cho mình nhá. Trân trọng cảm ơn!
 
In với các tiêu đề

Các bạn giúp mình một tý nhá: Mình đang muốn in 1 file BẢNG LƯƠNG, nó gồm 50 bộ phận, mỗi bộ phận có thể 1-3 trang. Mục đích của mình là in vùng 2 (màu xanh) lặp lại trên tất cả các trang; vùng 1 (màu vàng) lặp lại ở trang đầu của mỗi bộ phận; vùng 3 (màu cam) lặp lại ở trang cuối ở mỗi bộ phận. --> mình muốn chỉ cần 1 lệnh in sẽ in tất cả 50 bảng lương đó. Bạn nào có phương pháp hay giúp mình nhá. Xin cảm ơn!!

Tôi chỉ mô tả phương pháp giải quyết vấn đề để bạn tham khảo:
Về cơ bản thì tôi thường dùng phương pháp lọc để xử lý vấn đề này (có rất nhiều bài toán in tương tự bài toán của bạn. Ví dụ: In bảng điểm theo lớp chẳng hạn)

Quy trình như sau:

1. Tổ chức bảng lương thành 1 bảng duy nhất cho tất cả các bộ phận.
Vùng 1 sẽ ở các hàng trên cùng; vùng 3 ở các hàng cuối cùng của bảng dữ liệu.

2. Dùng 1 ô để lập danh sách các bộ phận, phục vụ cho việc: lọc bảng lương theo bộ phận, tính toán, hiển thị các thông tin liên quan đến bộ phận (ví dụ: tên bộ phận, người quản lý...)...

3. Setup Page để chọn các dòng ở vùng 2 lặp lại trên tất cả các trang.

4. Viết 1 macro, với 1 vòng for duyệt qua tất cả các bộ phận, lần lượt thay mã bộ phận vào vị trí ô đã lập, lọc danh sách theo điều kiện bộ phận; cuối vòng for là lệnh in.

Đây là cách tôi vẫn thường làm, hy vọng sẽ giúp được bạn cách giải quyết.

Thân!
 
Các này vẫn chưa giải quyết được vấn đề của mình, mong các bạn giúp mình co smột phương pháp nào đó tiện ích hơn nhá. Cảm ơn!
 
Bằng Google tìm được cái này giống vấn đề của bạn, chép ra đây tham khảo rồi chỉnh sửa cho phú hợp nghen:

Vấn đề:

I trying to develop a macro to print my worksheets. Here's the problem, I never know how much data my end-users will incorporate into any one worksheet. In some instances, one worksheet can result in five pages or more of printout. How do I achieve the following:

1.) set a page break so that if, for example, I have 400 rows or 4000 rows of data that each page print 40 rows data.

2.) Print multiple row column headings on each page.

I would appreciate any help on the subject.


Giải Pháp


Hans Pottel provided a VBA solution

Sub PrintAreaWithpageBreaks()
Dim pages As Integer
Dim pageBegin As String
Dim PrArea As String
Dim i As Integer
Dim q As Integer
Dim nRows As Integer, nPagebreaks As Integer
Dim R As Range

Set R = ActiveSheet.UsedRange
'add pagebreak every 40 rows
nRows = R.Rows.Count

If nRows > 40 Then
nPagebreaks = Int(nRows / 40)
For i = 1 To nPagebreaks
ActiveWindow.SelectedSheets.HPageBreaks.Add Before:=R.Cells(40 * i + 1, 1)
Next i
End If


'can be used in a separate macro, as I Start counting the number of pagebreaks
pages = ActiveSheet.HPageBreaks.Count
pageBegin = "$A$1"
For i = 1 To pages
If i > 1 Then pageBegin = ActiveSheet.HPageBreaks(i - 1).Location.Address
q = ActiveSheet.HPageBreaks(i).Location.Row - 1
PrArea = pageBegin & ":" & "$H$" & Trim$(Str$(q))
ActiveSheet.PageSetup.PrintArea = PrArea
' the cell in column 1 and in the row immediately below the pagebreak
' contains text for the footer
ActiveSheet.PageSetup.CenterFooter = Cells(q, 1)
' ActiveSheet.PrintOut copies:=1
Next i
End Sub

http://www.ozgrid.com/Excel/excel-page-breaks.htm
 
Web KT

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

Back
Top Bottom