Đánh số trang in động ?

  • Thread starter NguTDung
  • Ngày gửi
N

NguTDung

Guest
11/4/06
62
0
0
HaNoi
Có cái này xin hỏi các bạn tôi có workbook có khoảng 15 sheet trong đó mỗi sheet có khoảng 10 trang cả A3 và A4.
Tôi muốn điều khiển in sao cho chỉ trang đầu của sheet đầu tôi cần nhập vào đánh số trang của trang đó, còn khi in các trang kế tiếp (trên các sheet khác nhau) sẽ được tự động đánh số trang theo thứ tự kế tiếp. Không biết điều này có khả thi không ?
 
Sửa lần cuối:
Khóa học Quản trị dòng tiền
Đào Việt Cường

Đào Việt Cường

Moderator
22/11/05
400
4
18
Khánh Hòa
Dear NguTDung,
---------------
Vấn đề là Workbook của bạn có phải là một tài liệu (được đánh số trang liên tục từ Sheet1 đến hết) hay mỗi Sheet lại được đánh số tự riêng rẽ (số trang trên mỗi Sheet được đánh lại từ 1 đến hết).
Nếu bạn muốn đánh số trang theo cách coi cả Workbook là một tài liệu thì bạn thiết lập thuộc tính Entire Workbook trong Page Setup.
Còn nếu bạn muốn điều khiển để đánh số trang theo ý muốn thì bạn phải sử dụng VBA dùng vòng lặp để duyệt qua từng Sheet. Bạn có thể tham khảo bài In bảng tính ở đây.
Chúc bạn thành công.
 
N

NguTDung

Guest
11/4/06
62
0
0
HaNoi
Có lẽ không dùng chức năng in toàn bộ workbook vì tôi muốn in như sau:

Ví dụ bắt đầu in từ sheet2 chỉ in 3 trang đầu trong số 10 trang của sheet này.
Sau đó bấm Ctr+P để in sang sheet3, ví dụ sheet3 này sẽ in 4 trong số 12 trang sheet3 này có,.v.v.... Trong một phiên in từng sheet tôi sẽ vẫn phải chọn trang nào cần in, nhưng chỉ nhờ chương trình nhớ và đánh thứ tự liên tục (Ví dụ trên thì khi in Sheet3 không phải nhập sô trang bắt đầu là 4 nữa, vì chỉ nhập số trang lúc in sheet đầu (sheet2) là 1 rồi và in 3 trang rồi.

Như vậy các thao tác in và chọn trang cần làm bằng tay; chỉ muốn chương trình nhớ các trang đã in và số trang để tự động đánh số trang tiếp theo để in ra các sheet kế tiếp sau đó.

Viết macro nhớ và đánh số trang để in nối tiếp như thế nào bạn viết giùm.
 
B

Bình_OverAC

Over Abnormal / Crazy
14/5/04
846
10
18
42
Nha Trang
Không biết bạn đã biết về Macro chưa nhỉ? Nếu biết rồi thì tôi nghĩ nó dể, nếu chưa biết thì có viết cho bạn bạn cũng khó ứng dụng tốt.

Đùa đấy, tôi giúp bạn viết, nhưng thư thả đã nhé.
 
Đào Việt Cường

Đào Việt Cường

Moderator
22/11/05
400
4
18
Khánh Hòa
Dear all,
--------
Trong trường hợp như thế này mình nghĩ không nhất thiết phải sử dụng VBA.
Bạn NgTDung xem lại liệu có thể tổ chức lại cơ sở dữ liệu được không, vì thông thường các tài liệu để in thường được xắp sếp lần lượt theo thứ tự và đánh số trang tuần tự. Trong trường hợp muốn không in vùng dữ liệu nào thì chúng ta có thể Hide Column/Row hoặc Group and Outline vùng dữ liệu đó. Mặc định MSE tự động (Auto) đánh số trang trong bảng tính lần lượt với trang đầu tiên là 1. Tuy nhiên bạn có thể hiệu chỉnh tham số này trong tuỳ chọn First Page Number trong Page Setup để đánh số trang bắt đầu theo ý mình.
Theo mình, việc sử dụng VBA trong trường hợp này sẽ rất phức tạp vì phải thiết đặt PrintArea, mà vùng này thì kiểu gì cũng phải thiết lập bằng tay thôi, vì không có dấu hiệu nào để nhận biết cả!
Để có giải pháp tốt hơn, bạn NguTDung có thể upfile lên cho mọi người tham khảo được không?
 
Sửa lần cuối:
B

Bình_OverAC

Over Abnormal / Crazy
14/5/04
846
10
18
42
Nha Trang
Tôi làm đại không biết có đúng ý bạn không? Xem thử nhé.
 

Đính kèm

  • Vi du in cac sheet trong file.zip
    10.2 KB · Lượt xem: 292
N

NguTDung

Guest
11/4/06
62
0
0
HaNoi
Bình_OverAC nói:
Tôi làm đại không biết có đúng ý bạn không? Xem thử nhé.
Cám ơn bạn. Tôi đã thử nhưng chưa được đúng ý: vấn đề là tôi cần đánh số trang thay đổi theo trình tự in.
Khi tôi thử in đến Sheet2 trong chương trình của bạn không thấy kế thừa số trang của Sheet1 gì cả ?



@ Đào Việt Cường: nói chung do lười nên tôi không muốn phải thao tác ẩn/ bỏ ẩn dữ liệu đi.
Thứ tự dữ liệu in ra tôi sẽ phải và có thể kiểm soát và xác định trước theo tên Sheet (Ví dụ Sheet1 chắc chắn sẽ in sau Sheet 2 chẳng hạn).
Nhưng trang nào trong từng sheet cần in ra lại không cố định, nhiều khi chỉ bớt đi 1 trang trong 1 sheet mà phải gõ đánh số trang bằng tay cho toàn bộ các sheet đằng sau, mà sẽ rất dễ nhầm.
Tôi thấy có chương trình xử lý kiểu như thế này nhưng là 1 chương trình viết riêng (ngôn ngữ gì đó) mà không phải dùng trên Excel.
Tôi không biết gì về VBA, macro cả, chỉ có một số bạn bè thỉnh thoảng viết ra rồi áp dụng trong công việc hàng ngày của mình thôi.
 
Sửa lần cuối:
B

Bình_OverAC

Over Abnormal / Crazy
14/5/04
846
10
18
42
Nha Trang
NguTDung nói:
Cám ơn bạn. Tôi đã thử nhưng chưa được đúng ý: vấn đề là tôi cần đánh số trang thay đổi theo trình tự in.
Khi tôi thử in đến Sheet2 trong chương trình của bạn không thấy kế thừa số trang của Sheet1 gì cả ?
Chuyện đó cũng không khó nhưng tôi không rảnh để làm nữa rồi.

Cho phép tôi nghe trộm chổ này nhé:
NguTDung nói:
@ Đào Việt Cường: nói chung do lười nên tôi không muốn phải thao tác ẩn/ bỏ ẩn dữ liệu đi.
Nếu cứ lười hoài thì ai sẽ làm giúp bạn đây.
NguTDung nói:
Thứ tự dữ liệu in ra có thể kiểm soát theo tên Sheet (Ví dụ Sheet1 chắc chắn sẽ in sau Sheet 2 chẳng hạn).
Nhưng trang nào trong từng sheet cần in ra lại không cố định, nhiều khi chỉ bớt đi 1 trang trong 1 sheet mà phải gõ đánh số trang bằng tay cho toàn bộ các sheet đằng sau, mà sẽ rất dễ nhầm.
Nhiều yêu cầu quá. khó mà giúp cho trót
NguTDung nói:
Tôi thấy có chương trình xử lý kiểu như thế này nhưng là 1 chương trình viết riêng (ngôn ngữ gì đó) mà không phải dùng trên Excel.
Tôi không biết gì về VBA, macro cả, chỉ có một số bạn bè thỉnh thoảng viết ra rồi áp dụng trong công việc hàng ngày của mình thôi.
Khi yêu cầu của bạn cao mà bạn muốn nhiều thì phải học thôi.
 
B

Bình_OverAC

Over Abnormal / Crazy
14/5/04
846
10
18
42
Nha Trang
Thật ra có một cách khác tôi có thể giúp bạn, nhưng tôi lười viết hướng dẩn quá :biggrin:
1. Set print area ở tất cả các sheet, (khoanh vùng in)
2. Set footer hay header tất cả các sheet chọn [page]/[pages]

Ctrl + P --> chọn Entire Workbook, số trang của các sheet sẽ được kế thừa.
 
N

NguTDung

Guest
11/4/06
62
0
0
HaNoi
Bình_OverAC nói:
Thật ra có một cách khác tôi có thể giúp bạn, nhưng tôi lười viết hướng dẩn quá :biggrin:
1. Set print area ở tất cả các sheet, (khoanh vùng in)
2. Set footer hay header tất cả các sheet chọn [page]/[pages]

Ctrl + P --> chọn Entire Workbook, số trang của các sheet sẽ được kế thừa.
Cũng tạm được.Tôi sẽ áp dụng ngay.

N.T.D
 
V

vongphuc

Excel Fans Club
11/8/04
300
5
18
Ha Noi
Cách này khả thi rồi, còn tạm được gì nữa. Đồng chí Bình chăm chỉ thật!!!
 
N

NguTDung

Guest
11/4/06
62
0
0
HaNoi
Tạm được là với ứng dụng cụ thể của tôi thôi. Không phải Sheet nào cũng có thể đặt in theo vùng được.

Còn bạn Bình là cám ơn lắm lắm, với những người hiểu biết khá về Excel thì giúp đỡ mọi người khác những việc nhỏ như thế chắc cũng không mất nhiều thời gian lắm.
 
Sửa lần cuối:
M

mysterious_girl

Guest
@NguTDung: Tại sao bạn ko sắp dữ liệu trong cùng một sheet để in có tiện hơn không? Tớ chưa hiểu tại sao bạn lại muốn in kiểu như vậy.Bạn có thể up file lên cho mọi người xem và cùng tìm cách giải quyết được ko?
 
adam_tran

adam_tran

Guitar inspiration
17/5/05
1,374
36
48
46
Goooogle
Oái.... nếu chỉ để đánh số trang thì cực kỳ đơn giản. Bạn chỉ cần Group các sheet lại rồi ra lệnh in 1 lúc. Tức là bạn chọn 1 lúc nhiều sheet rồi ra lệnh in.
Thí dụ tôi có 2 sheet Sheet1 và Sheet2 cùng được đánh số trang ở Footer, mỗi Sheet có 10 trang. Nếu tôi chọn 1 lúc 2 sheet và ra lệnh in thì sheet1 tự đánh số từ 1-10, sheet2 Excel tự đánh số 11-20, chẳng cần phải VBA gì cả.
Nếu chỉ chọn sheet2 để in thì nó đánh số từ 1-10. Cái tôi đang nhức đầu và không biết cách làm là chọn 1 lúc 2 sheet nhưng khi in thì trang in vẫn đánh từ 1. Nếu in lần lượt từng sheet thì khi in nhiều bản phải mất công sắp lại những trang giấy đã in ra!
 
N

NguTDung

Guest
11/4/06
62
0
0
HaNoi
Lý do đơn giản là : Sắp xếp dữ liệu trong các sheet khác nhau vì tính chất của các bảng tính khác hẳn nhau.Ví dụ Sheet chuyên về tính Giá trị Xây lắp, sheet chuyên về tính vận chuyển, sheet chuyên tính về Chi phí khác, sheet chuyên tính về Bù giá .v.v....Các sheet này có mối quan hệ với nhau (link số liệu của nhau,dùng chung 1 số dữ liệu đầu vào). Các Sheet của tôi là để tính Dự toán(ai làm chắc làm Đầu tư Xây dựng cơ bản chắc đều biết cả). Thực ra có chương trình chuyên dụng nhưng tôi thích tính bằng eXCEL hơn vì cơ sở dữ liệu có sẵn nhiều quá và có thể chủ động thay đổi theo ý mình
Tôi không upload lên vì file rất lớn (trong forum đã nói là lười vì thông thường các sheet phải sửa lại gọn ghẽ cho từng Dự toán cụ thể, nhưng tôi cứ để nguyên cả, cái nào không cần thì Hide tạm đi để in thôi, nên mới nói là "lười" là như vậy. Tôi chưa có quyền upload trên diễn đàn nên thấy lằng nhằng, upload mấy file trước lên các bạn toàn không down được.
Những vấn đề tôi nên ra là rất tổng quát thường gặp trong mọi người dùng Excel, còn những vấn đề đặc thù trong công việc cụ thể tôi đã không dám nhờ các bạn mà đã đi thuê lập trình rồi

Dài dòng 1 tý để cảm ơn sự nhiệt tình chỉ bảo của một số bạn
 
Sửa lần cuối:
N

NguTDung

Guest
11/4/06
62
0
0
HaNoi
adam_tran nói:
Thí dụ tôi có 2 sheet Sheet1 và Sheet2 cùng được đánh số trang ở Footer, mỗi Sheet có 10 trang. Nếu tôi chọn 1 lúc 2 sheet và ra lệnh in thì sheet1 tự đánh số từ 1-10, sheet2 Excel tự đánh số 11-20, chẳng cần phải VBA gì cả.
1. Chọn cùng lúc chỉ 1 số Sheet nhất địnhdùng lệnh gì ? (Ctrl+..
2. Thứ tự chọn sẽ quyết định sheet nào sẽ in ra trước ?
3. Vấn đề của tôi phức tạp hơn 1 chút: Sheet 2 có 10 trang nhưng tôi không muốn in ra cả 10 trang (vì các trang khác dùng để lọc dữ liệu, và có khi cần theo yêu cầu có khi không cần in ra làm gì ....)
 
Đào Việt Cường

Đào Việt Cường

Moderator
22/11/05
400
4
18
Khánh Hòa
Dear NguTDung, (không biết phải dịch tên của bạn như thế nào cho nó chuẩn nhỉ:dzo: )
---------------
Theo mình đoán thì các vùng dữ liệu của bạn có thể là cố định, có chăng chỉ thay đổi dữ liệu trên các cell thôi(?). Theo mình, có cách đơn giản nữa là bạn Paste Special As Link sang Word Document. Việc này tuy có mất công một lần nhưng mà dùng để in được nhiều lần mà lại đẹp mắt, vừa cả cũng khắc phục được nhược điểm "lười" của bạn!
 
Sửa lần cuối:
adam_tran

adam_tran

Guitar inspiration
17/5/05
1,374
36
48
46
Goooogle
Chẳng có cách nào chính thống để làm việc này, bạn phải dùng "mẹo" 1 tí. Nếu bạn đã che những vùng không cần in trên sheet thì macro sau đây có thể giúp bạn đánh số bắt đầu của mỗi trang như thế nào.
Tạo 1 sheet có tên là Tam ngay đầu tiên.
Sub CustomizedPageNumeringPrinting()
Dim CurSh As Worksheet
Dim Area As String
Dim fPage As Integer, nPages As Integer, i As Integer
Set CurSh = ActiveSheet
fPage = Val(InputBox("Ban muon trang in dau tien so may?"))
nPages = Val(InputBox("Ban muon in bao nhieu trang trong " & CurSh.Name & "?"))
If nPages = 0 Then
MsgBox "Ban chua nhap so trang can in", vbInformation
Exit Sub
End If
If fPage = 1 Then GoTo Inra
Area = "A1"
If fPage > 2 Then
For i = 2 To fPage - 1
Area = Area & "," & "A" & i * 2 - 1
Next
End If
Sheets("Tam").PageSetup.PrintArea = Area
Sheets(Array("Tam", CurSh.Name)).Select
Inra:
ActiveWindow.SelectedSheets.PrintOut from:=fPage, to:=fPage + nPages - 1
CurSh.Select
End Sub
 
N

NguTDung

Guest
11/4/06
62
0
0
HaNoi
Đào Việt Cường nói:
Dear NguTDung, (không biết phải dịch tên của bạn như thế nào cho nó chuẩn nhỉ:dzo: )
---------------
Theo mình đoán thì các vùng dữ liệu của bạn có thể là cố định, có chăng chỉ thay đổi dữ liệu trên các cell thôi(?).
Thay đổi dữ liệu trên các cell thì đương nhiên. Còn vùng dữ liệu có thay đổi một chút thôi (thường là Dự toán này thì in 3 trang A4; nhưng dự toán khác có thể in thành 4 trang A4 (chênh nhau 1 trang) hoặc: có thể Dự toán này các trang in đều là khổ A4 nhưng có dữ toán phức tạp phải in 1 số trang sang khổ A3 cho dễ thể hiện.

Chưa kể tình huống tôi đã nói ở trên, có 1 số trang dữ liệu có thể in ra hay không in ra là do người dùng (nếu dữ liệu này để ẩn thì không được)quyết định tùy loại, quy mô, tính chất từng Dự án cụ thể. Điều này có thể làm đánh số trang thay đổi đi vài trang nữa.


Và cái chủ yếu là do cần thay đổi số của ngay trang in đầu của Sheet in đầu !(vì tùy vào Hồ sơ Dự án cụ thể) nên mới cần đánh số trang "động" là vậy.
 
Sửa lần cuối:

Xem nhiều

Webketoan Zalo OA