Cho mình hỏi về vấn đề tự động giãn trang.

Liên hệ QC

maihoang16191

Thành viên chính thức
Tham gia
10/2/14
Bài viết
51
Được thích
0
Các bạn cho mình hỏi vấn đề này, mình có file đính kèm ở trong.

Vấn đề là khi mình xuất file thì các bảng in nó bị dính lại gần nhau, trước giờ phải làm thủ công là giãn ra thành 1 trang rồi mới in ra được.

Không biết có cách nào tự động cách trang được không. cho mình tham khảo với.
 

File đính kèm

  • the kho ngoai 3.14.xlsx
    66.7 KB · Đọc: 18
Các bạn cho mình hỏi vấn đề này, mình có file đính kèm ở trong.
Vấn đề là khi mình xuất file thì các bảng in nó bị dính lại gần nhau, trước giờ phải làm thủ công là giãn ra thành 1 trang rồi mới in ra được.
Không biết có cách nào tự động cách trang được không. cho mình tham khảo với.

- nếu số liệu sheet1 được xuất ra từ 1 phần mềm --> Form in sẽ chuẩn.
- việc xác định vùng in cho từng trang là ko quá khó, dựa vào vị trí đầu (Tên Vật Tư) và đuôi (Footer: Ke Toan Truong) của từng THẺ KHO.
- bạn tải file đính kèm, cho chạy Macro (Enable Macros)
- vào sheet2, click nút Xác định vùng In --> xem kết quả nhé ! :-=

Mã:
Sub [COLOR=#ff0000]GPE_InsertPageBreak[/COLOR]()
Dim vung As Range, rng As Range

Application.ScreenUpdating = False

    With Sheets("Sheet1")
        .Select
        .PageSetup.PrintArea = ""
        .ResetAllPageBreaks
        
        Set vung = .Range(.[A1048576].End(xlUp), .[A1])
    End With
    
    'tim` Header THE KHO
    For Each rng In vung
        If rng = Sheets("GPE").Range("H1") Then
            ActiveWindow.SelectedSheets.HPageBreaks.Add Before:=rng
        End If
    Next
    
    Range("A1").Select
    ActiveWindow.ScrollRow = 1
    
Application.ScreenUpdating = True
End Sub


Sub [COLOR=#ff0000]GPE_FindPrintArea[/COLOR]()
'ko the dung` Phuong thuc Find do Merge Cells
Dim ws1 As Worksheet, ws2 As Worksheet
Dim vung1 As Range, vung2 As Range, tenVT As Range, KTT As Range
Dim rng As Range, n As Long, m As Long

Application.ScreenUpdating = False

    Set ws1 = ThisWorkbook.Worksheets("Sheet1")
    Set ws2 = ThisWorkbook.Worksheets("GPE")
    
    With ws1
        Set vung1 = .Range(.[A1048576].End(xlUp), .[A1])
        Set vung2 = .Range(.[H1048576].End(xlUp), .[H1])
    End With
    
    With ws2
        Set tenVT = .Range("B1")
        Set KTT = .Range("D1")
        .Range("B3:F1000").ClearContents
    End With
    
    'tim` ten Vat Tu*
    For Each rng In vung1
    If rng Like tenVT.Value & "*" Then
        ws2.Range("B" & 3 + n) = rng.Value
        ws2.Range("C" & 3 + n) = rng.Offset(-5).Address

        n = n + 1
    End If
    Next
    
    'tim Ke Toan Truong, tao. Print Area, Pages
    For Each rng In vung2
    If rng = KTT.Value Then
        ws2.Range("D" & 3 + m) = rng.Offset(1, 1).Address
        ws2.Range("E" & 3 + m).FormulaR1C1 = "=RC[-2]&"":""&RC[-1]"         'record Macro
        'Set Print Area cho sheet1 truoc khi lay' .Pages.Count
        ws1.PageSetup.PrintArea = ws2.Range("E" & 3 + m).Value
        ws2.Range("F" & 3 + m) = (Sheets(ws1.Name).PageSetup.Pages.Count)
        
        m = m + 1
    End If
    Next
    
Application.ScreenUpdating = True
End Sub

Link: https://www.mediafire.com/?32b07d8923k6fuu
 
Lần chỉnh sửa cuối:
Chỉ cần tìm "THẺ KHO CHI TIẾT", insert 1 pagebreak, rồi cứ thế mà in sheet1 là được.
 
Chỉ cần tìm "THẺ KHO CHI TIẾT", insert 1 pagebreak, rồi cứ thế mà in sheet1 là được.
hic,
- đúng là vậy, nếu tác giả in liên tục từ trang đầu đến trang cuối ---> bài này cũng chẳng cần gì code kiết cả +-+-+-+,
- code ở trên chỉ dùng khi in chính xác 1 trang nào đó + liệt kê các Tên Vật Tư.
cảm ơn bác nhiều ! :-=

'----
@maihoang...:
để dùng Insert Pagebreak: bạn đặt chuột vào vị trí Header "THẺ KHO CHI TIẾT"
trên thanh Menu chọn Page Layout -- Breaks -- Insert -- Insert Pagebreak, làm tương tự cho mỗi THẺ KHO, --> In được từng trang riêng biệt.
 
Lần chỉnh sửa cuối:
hic,
- đúng là vậy, nếu tác giả in liên tục từ trang đầu đến trang cuối ---> bài này cũng chẳng cần gì code kiết cả +-+-+-+,
- code ở trên chỉ dùng khi in chính xác 1 trang nào đó + liệt kê các Tên Vật Tư.
cảm ơn bác nhiều ! :-=

'----
@maihoang...:
để dùng Insert Pagebreak: bạn đặt chuột vào vị trí Header "THẺ KHO CHI TIẾT"
trên thanh Menu chọn Page Layout -- Breaks -- Insert -- Insert Pagebreak, làm tương tự cho mỗi THẺ KHO, --> In được từng trang riêng biệt.

mình làm đc rồi, cảm ơn bạn nhiều. nhưng mà cho mình hỏi thêm cái nữa là mỗi làm cách trang vậy chỉ được 1 dòng thôi à, có cách nào chọn nhiều dòng rồi bấm insert pagebreak đc ko?
 
mình làm đc rồi, cảm ơn bạn nhiều. nhưng mà cho mình hỏi thêm cái nữa là mỗi làm cách trang vậy chỉ được 1 dòng thôi à, có cách nào chọn nhiều dòng rồi bấm insert pagebreak đc ko?
hehe,
bạn tải lại file ở #2 nhé, mình vừa thêm nút GPE_InsertPageBreak.
 
Web KT

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

Back
Top Bottom