Làm thế nào để in 2 kiểu trang trong 1 Sheet?

Liên hệ QC

vanle33

Thành viên gạo cội
Tham gia
30/10/08
Bài viết
5,913
Được thích
3,979
Giới tính
Nam
Em có 1 bảng tính. Em muốn trong trang đó em vừa có thể in ngang giấy vừa có thể in dọc giấy. Mà không phải tạo vùng in. Có cách nào làm được như thế không a? Và cách làm như thế nào. Mong các bạn chỉ giúp
Thanks
 
Về nguyên tắc, sheet là một đơn vị đối với lệnh Page Setup. Từ đó suy ra, chỉ có thể thiết lập một kiểu định dạng trên sheet.
Trong thực tế, với yêu cầu của bạn, rõ ràng cần phải thiết lập lại vùng in tương ứng với kiểu giấy cho mỗi lần in. Và để đơn giản hóa việc phải thay đổi giấy thì chỉ có cách dùng VBA.
Cách làm như sau:
1. Đặt tên cho các vùng sẽ in theo các kiểu các sau.
2. Viết code cho phép chọn vùng để in và kiểu giấy sẽ đặt.
3. In.

Nếu muốn in tự động thì khai báo "cứng" ngay trong code. Khi đó mỗi lần in, chỉ cần bấm nút lệnh, code sẽ tự chọn vùng in và khai lại kiểu giấy cho bạn sau đó sẽ in lần lượt.
 
Về nguyên tắc, sheet là một đơn vị đối với lệnh Page Setup. Từ đó suy ra, chỉ có thể thiết lập một kiểu định dạng trên sheet.
Trong thực tế, với yêu cầu của bạn, rõ ràng cần phải thiết lập lại vùng in tương ứng với kiểu giấy cho mỗi lần in. Và để đơn giản hóa việc phải thay đổi giấy thì chỉ có cách dùng VBA.
Cách làm như sau:
1. Đặt tên cho các vùng sẽ in theo các kiểu các sau.
2. Viết code cho phép chọn vùng để in và kiểu giấy sẽ đặt.
3. In.

Nếu muốn in tự động thì khai báo "cứng" ngay trong code. Khi đó mỗi lần in, chỉ cần bấm nút lệnh, code sẽ tự chọn vùng in và khai lại kiểu giấy cho bạn sau đó sẽ in lần lượt.
Anh cho em hỏi
1. Đặt tên cho vùng in như thế nào a?
2. A có thể đưa cho e 1 ví dụ vì em mới có ý tưởng này thôi . Và có thể áp dụng cho các file khác với ví dụ của a ko?
 
Tôi tạo 1 file mẫu, và viết 1 macro để in.
Trong sheet1, đặt tên cho 2 vùng muốn in dọc, ngang lần lượt là: vPage và hPage, và có một nút để in.
(đặt tên cho vùng, làm nhanh: quét chọn 1 vùng dữ liệu, sau đó gõ tên vào ô tên (name box))
Macro:
PHP:
Private Sub vhPrint(r As Range, Optional ori As XlPageOrientation = xlPortrait)
    With r.Parent.PageSetup
        .PrintArea = r.Address
        .Orientation = ori
    End With
    ' PrintPreview: xem truoc khi in - neu muon in truc tiep, thay bang PrintOut '
    r.Parent.PrintPreview
End Sub
Sub Main()
Dim s As Worksheet
Set s = ActiveSheet
Const vP = "vPage", hP = "hPage" ' ten vung in giay doc, in giay ngang '
    If Not s.Range(vP) Is Nothing Then Call vhPrint(s.Range(vP))     ' mac dinh in theo giay doc '
    If Not s.Range(hP) Is Nothing Then Call vhPrint(s.Range(hP), xlLandscape) ' in theo giay ngang '
End Sub

Để áp dụng cho file của bạn, thực hiện các bước sau:
1. chọn sheet cần in theo nhiều kiểu giấy
2. chọn các dòng sẽ in theo kiểu giấy dọc, đặt tên là vPage
3. chọn các dòng sẽ in theo kiểu giấy ngang, đặt tên là hPage
4. copy đoạn code trên vào 1 module (nếu có, nếu chưa thì vào VBE để chèn thêm 1 module)
5. ở sheet trên thêm 1 nút lệnh và gán macro: Main.
 

File đính kèm

  • In2Kieu.xls
    48.5 KB · Đọc: 41
Web KT

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

Back
Top Bottom