cách in tự động nhiều sheet (1 người xem)

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

dieplinhphan

Thành viên mới
Tham gia
6/3/14
Bài viết
12
Được thích
0
Chào cả nhà. Hôm trước e có đọc được trên diễn đàn về việc in tự động giữa 2 sheet, do công việc một ngày em cần xuất phiếu xuất nhập kho, một ngày có thể lên đến mấy trăm phiếu, e tổng hợp cuối ngày mới xuất, e cũng tạo ra 1 sheet tổng hợp dữ liệu rồi dùng vlookup link sang các sheet phiếu nhập và phiếu xuất theo những cái cần thay đổi cho mỗi phiếu. Nhưng để thực hiện bấm liên tục từng sheet 1 và mỗi lần lại tự thay đổi để link sang như vậy rất mất thời gian, nên e xin được nhờ cả nhà chỉ giúp e có thể tự động in đến phiếu cuối cùng mà các phiếu nhảy tự động liên tục được không ạ!
Em xin chân thành cảm ơn a!
 
Chào cả nhà. Hôm trước e có đọc được trên diễn đàn về việc in tự động giữa 2 sheet, do công việc một ngày em cần xuất phiếu xuất nhập kho, một ngày có thể lên đến mấy trăm phiếu, e tổng hợp cuối ngày mới xuất, e cũng tạo ra 1 sheet tổng hợp dữ liệu rồi dùng vlookup link sang các sheet phiếu nhập và phiếu xuất theo những cái cần thay đổi cho mỗi phiếu. Nhưng để thực hiện bấm liên tục từng sheet 1 và mỗi lần lại tự thay đổi để link sang như vậy rất mất thời gian, nên e xin được nhờ cả nhà chỉ giúp e có thể tự động in đến phiếu cuối cùng mà các phiếu nhảy tự động liên tục được không ạ!
Em xin chân thành cảm ơn a!

bạn gửi cái file đó lên diễn đàn, để mọi người có thể hình dung bên trong nó ntn được ko?
 
Ví dụ: mình có 2 sheet 1 sheet 'DU LIEU' chứa dữ liệu bao gồm số thứ tự, họ tên , địa chỉ, tên hàng . sheet 2 là sheet 'IN' . mình dùng hàm vlookup để liên kết dữ liệu giữa 2 sheet.
Khi gõ vào 1 thì sheet 'IN' sẽ hiện ra họ tên , địa chỉ tương ứng và cứ tiếp 2..3 --> ctrl + P
Xin cho em hỏi có cách nào có thể tạo 1 button và click nó sẽ tự động tăng (ko phải tốn công gõ) không a?
 

File đính kèm

Ví dụ: mình có 2 sheet 1 sheet 'DU LIEU' chứa dữ liệu bao gồm số thứ tự, họ tên , địa chỉ, tên hàng . sheet 2 là sheet 'IN' . mình dùng hàm vlookup để liên kết dữ liệu giữa 2 sheet.
Khi gõ vào 1 thì sheet 'IN' sẽ hiện ra họ tên , địa chỉ tương ứng và cứ tiếp 2..3 --> ctrl + P
Xin cho em hỏi có cách nào có thể tạo 1 button và click nó sẽ tự động tăng (ko phải tốn công gõ) không a?
Có đấy, đợi chút nhé mình xem cho.
 
Chào cả nhà. Hôm trước e có đọc được trên diễn đàn về việc in tự động giữa 2 sheet, do công việc một ngày em cần xuất phiếu xuất nhập kho, một ngày có thể lên đến mấy trăm phiếu, e tổng hợp cuối ngày mới xuất, e cũng tạo ra 1 sheet tổng hợp dữ liệu rồi dùng vlookup link sang các sheet phiếu nhập và phiếu xuất theo những cái cần thay đổi cho mỗi phiếu. Nhưng để thực hiện bấm liên tục từng sheet 1 và mỗi lần lại tự thay đổi để link sang như vậy rất mất thời gian, nên e xin được nhờ cả nhà chỉ giúp e có thể tự động in đến phiếu cuối cùng mà các phiếu nhảy tự động liên tục được không ạ!
Em xin chân thành cảm ơn a!
Bổ sung cả phần in tuỳ chọn cho bạn!
 
Ví dụ: mình có 2 sheet 1 sheet 'DU LIEU' chứa dữ liệu bao gồm số thứ tự, họ tên , địa chỉ, tên hàng . sheet 2 là sheet 'IN' . mình dùng hàm vlookup để liên kết dữ liệu giữa 2 sheet.
Khi gõ vào 1 thì sheet 'IN' sẽ hiện ra họ tên , địa chỉ tương ứng và cứ tiếp 2..3 --> ctrl + P
Xin cho em hỏi có cách nào có thể tạo 1 button và click nó sẽ tự động tăng (ko phải tốn công gõ) không a?

bạn tải file đính kèm, cho chạy Macro.

'- - -
mình đã cài có các chức năng như bạn yêu cầu + thêm in từ STT đến STT, còn muốn in tất cả thì dùng code của bác Chuot nhé :-=

Mã:
Sub [B]CongTru_mot[/B]()
Dim STT As Range: Set STT = Range("U10")
    If IsNumeric(STT) Then
        If ActiveSheet.Shapes(Application.Caller).Name = "Plus" Then
            STT = STT + 1
        Else 'Minus
            STT = STT - 1
        End If
    Else
        MsgBox ("o^ STT phai la` 1 so'"), vbExclamation
    End If
End Sub

Sub [B]InNhieuSTT[/B]()
Dim i As Long, Hoi1, Hoi2
    Hoi1 = Application.InputBox("In tu` STT")
    If Hoi1 = False Or Val(Hoi1) = 0 Then Exit Sub 'khi dung` Cancel hoac de trong'
    Hoi2 = Application.InputBox("In den' STT")
    If Hoi2 = False Or Val(Hoi2) = 0 Then Exit Sub
    
    If Val(Hoi2) < Val(Hoi1) Then
        MsgBox ("STT tu ") & Hoi1 & (" den ") & Hoi2 & (" ---> chua hop ly"), vbExclamation
        Exit Sub
    End If
    
    On Error Resume Next
    For i = Hoi1 To Hoi2
        Range("U10") = i
        'MsgBox ("stop"):Exit sub
        Call Print_activesheet
    Next
End Sub

Sub [B]Print_activesheet[/B]()
    ActiveWindow.ActiveSheet.PrintOut From:=1, To:=1, Copies:=1, Collate _
        :=True, IgnorePrintAreas:=False 'record Macro
    'ActiveWindow.SelectedSheets.PrintOut from:=1, To:=1, copies:=1 'Chuot ^^'
    
    With ActiveSheet.ListBox1
        .AddItem Range("U10").Value
    End With
End Sub

Sub [B]Clear_ListBoxItems[/B]()
    Sheets("In Phieu").ListBox1.Clear
End Sub
'- - -
Link: https://www.mediafire.com/?sdkmo8rz9rzczmr

@Chuot
- lúc trước mình nghe bạn xài Excel 2013 rồi mà, sao vẫn còn để định dạng xls vậy?
- mình để ý, code của bạn ít khi dùng Tab để canh lề cho dễ đọc vậy?+-+-+-+
- code của bác có đoạn:
Mã:
    For i = a To b
        Do While i < b
            ActiveWindow.SelectedSheets.PrintOut from:=1, To:=1, copies:=1
            i = i + 1
        Loop
        Next i
    End If
----> sao lại dùng Do While ... Loop ở đó vậy? bác thử bỏ ra xem có được ko?
 
Lần chỉnh sửa cuối:
bạn tải file đính kèm, cho chạy Macro.

'- - -
mình đã cài có các chức năng như bạn yêu cầu + thêm in từ STT đến STT, còn muốn in tất cả thì dùng code của bác Chuot nhé :-=

Mã:
Sub [B]CongTru_mot[/B]()
Dim STT As Range: Set STT = Range("U10")
    If IsNumeric(STT) Then
        If ActiveSheet.Shapes(Application.Caller).Name = "Plus" Then
            STT = STT + 1
        Else 'Minus
            STT = STT - 1
        End If
    Else
        MsgBox ("o^ STT phai la` 1 so'"), vbExclamation
    End If
End Sub

Sub [B]InNhieuSTT[/B]()
Dim i As Long, Hoi1, Hoi2
    Hoi1 = Application.InputBox("In tu` STT")
    If Hoi1 = False Or Val(Hoi1) = 0 Then Exit Sub 'khi dung` Cancel hoac de trong'
    Hoi2 = Application.InputBox("In den' STT")
    If Hoi2 = False Or Val(Hoi2) = 0 Then Exit Sub
    
    If Val(Hoi2) < Val(Hoi1) Then
        MsgBox ("STT tu ") & Hoi1 & (" den ") & Hoi2 & (" ---> chua hop ly"), vbExclamation
        Exit Sub
    End If
    
    On Error Resume Next
    For i = Hoi1 To Hoi2
        Range("U10") = i
        'MsgBox ("stop"):Exit sub
        Call Print_activesheet
    Next
End Sub

Sub [B]Print_activesheet[/B]()
    ActiveWindow.ActiveSheet.PrintOut From:=1, To:=1, Copies:=1, Collate _
        :=True, IgnorePrintAreas:=False 'record Macro
    'ActiveWindow.SelectedSheets.PrintOut from:=1, To:=1, copies:=1 'Chuot ^^'
    
    With ActiveSheet.ListBox1
        .AddItem Range("U10").Value
    End With
End Sub

Sub [B]Clear_ListBoxItems[/B]()
    Sheets("In Phieu").ListBox1.Clear
End Sub
'- - -
@Chuot
sao lúc trước mình nghe bạn xài Excel 2013 rồi mà, sao vẫn còn để định dạng xls vậy?
Đấy là mình cài ở Laptop ở nhà. Còn giờ đang ngồi ở cơ quan nên chỉ có office 2003 thôi.
 
sao e không nhìn thấy nút để ấn in ạ ? e dốt món này lắm nên nhờ các bác chỉ giúp e kĩ càng được không ạ? em cảm ơn a!
 
em cảm ơn bác, bác xài macro ạ, sao e không tìm thấy macro nào và không xem được phần bác lập trình ở đâu ạ? Mong bác chỉ dẫn a!
 
vâng e xài 2007 ạ, các bác có gì chỉ rõ cho e vs ạ. e cảm ơn nhiều a!
 
vâng e xài 2007 ạ, các bác có gì chỉ rõ cho e vs ạ. e cảm ơn nhiều a!

khi bạn load file về, mở ra bạn sẻ thấy có cảnh báo màu vàng, nhấp vào "enable macro" trên đó là được rồi.
muốn xem macro thì nhấn Alt F11, bạn sẻ vào cửa sổ code
hoặc ở tab View---> bạn sẻ thấy macro-->view macro--->edit
 

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

Back
Top Bottom