Trường hợp in 1 lần 3 trang theo 3 dòng dữ liệu, cần giúp đỡ

Liên hệ QC

minhtri 2009

Thành viên mới
Tham gia
14/8/09
Bài viết
12
Được thích
0
Chào các bạn trên diễn đàn!
Tôi có một file Excel, gồm 2 Sheet: file dữ liệu và file in, đây là file tôi nhận từ khách hàng bên Nhật, dữ liệu của file này rất lớn nên tôi chỉ trích ra, rồi mới đính kèm đi được.
Tôi không biết làm như thế nào đê file in chỉ cần click vào nút lệnh in là tự động sẽ lấy dữ liệu từ file dữ liệu lên ( mỗi dòng trong file dữ liệu sẽ thể hiện đầy đủ trên một trang in ), và tôi có 3 dòng dữ liệu, thì sẽ tự động ra 3 trang giấy in.
Xin nhờ chỉ giúp, bằng câu lệnh nào đê có thể tự động lấy dữ liệu in ra được như vậy.
Mong nhận được hồi âm sớm.
MT)(&&@@)(&&@@)(&&@@+-+-+-++-+-+-++-+-+-+
 

File đính kèm

Bạn thử xem có được không? Dùng bảng pivot để thay đổi đơn hàng, sẽ thay đổi phần in.
 

File đính kèm

Upvote 0
Dùng index và match, có thể in hết các dòng dữ liệu, có bao nhiêu in hết bấy nhiêu.
Chỉ cần nhấn nút.
 

File đính kèm

Upvote 0
Rất cám ơn các bạn đã quan tâm và giúp mình giải quyết vấn đề! Hướng giải quyết của bạn Ptm0412 hoàn toàn đúng với điều mình mong muốn nhưng sao mình click vào nút Print, lệnh in không thực hiện được.làm ơn giúp mình thêm một tí nữa bạn Ptm0412 ơi!
 
Upvote 0
Trên máy tôi thì in bình thường. Bạn xem lại Macro có bị disabled không, set lại Security là Medium.
 
Upvote 0
Khá hay nhưng chưa hoàn hảo!

Dùng index và match, có thể in hết các dòng dữ liệu, có bao nhiêu in hết bấy nhiêu.
Chỉ cần nhấn nút.
Bài của bạn khá hay! Tôi có file ứng dụng được đoạn code này của bạn. Nếu có thể được xin bạn bổ sung cho một ý nữa?
Ý là làm sao khi xuất hiện thông báo cái nào cần in thì OK còn không thì Cancel và chuyển tới mục tiếp theo!
Mong bạn sớm góp ý. Cám ơn.
 
Upvote 0
mình có một câu hỏi trên diễn đàn này mà chưa được trả lời, có liên quan đến bài này, là nếu mình muốn in một đơn hàng nào đó, hoặc những đơn hàng có số liên tục nhau thì làm sao? vì nếu có rất nhiều đơn hàng mà mỗi cái phải nhấn ok hoặc no thì cũng khó khăn lắm... nhờ bạn
 
Upvote 0
To susubambi:

Không muốn hiện thông báo thì xoá dòng lệnh Msgbox

To Tanlahill:

Muốn cancel thì sửa code như sau:

PHP:
Sub PrintMultiPages()
For Each Cll In Sheet1.Range("ODNo")
    Sheet2.[ab2] = Cll
    Agree = MsgBox("Print Order " & Cll & "?", vbOKCancel)
        If Agree = vbCancel Then GoTo PrintNext
    Sheet2.PrintOut
PrintNext: Next
End Sub

TB: Bạn định nghĩa dùm thế nào là hoàn hảo? Theo susubambi thì không có thông báo gì sất, là hoàn hảo!
 
Lần chỉnh sửa cuối:
Upvote 0
Theo file ( PrintMultipage.xls) của bạn Ptm0412 giúp mình giảm bớt khó khăn rất nhiều nhưng hơi thủ công một tí (sau mỗi bảng in BẢNG ĐẶT HÀNG thì có một bản in chỉ có biểu tượng nút in PRINT) nếu được các bạn khắc phục giúp mình bỏ đi công đoạn in biểu tượng PRINT lên một tờ giấy mới.!$@!!
Mình không biết lập trình nên không biết cách diễn đạt như thế nào cho dể hiểu mong các bạn thông cảm!!$@!!+-+-+-+
 
Upvote 0
ptm0412 ơi, rất mừng là có bạn ở đây để trả lời. mình cần bạn giúp giùm trường hợp ở trên. vì số lượng đơn hàng của mình ở AB2 rất lớn, có khi lên đến 4-5 ngàn. nhưng mỗi ngày mình chỉ cần in khoảng 50 đơn hàng thôi. nếu mà bấm OK hoặc Cancel thì vất vả, nhờ bạn chỉ giúp cách để chọn khoảng để in. cám ơn nhiều. trả lời giùm nha. mình có hỏi trên này mà vô vọng quá, không như bạn minhtri2009 hỏi cái là nhận được trả lời ngay... trả lời nha, đừng có chạy.. :))
 
Upvote 0
minhtri đã viết:
nếu được các bạn khắc phục giúp mình bỏ đi công đoạn in biểu tượng PRINT lên một tờ giấy mới.

Mở toolbar Control Toolbox, nhấn nút Design, click chọn nút Print trên sheet, nhấn nút property, đổi property PrintObject thành False
Hoặc sửa câu lệnh in thành
PHP:
    Sheet2.PrintOut 1, 1
susubambi đã viết:
nhờ bạn chỉ giúp cách để chọn khoảng để in.

Nếu khoảng in là số (từ số m đến số n), hãy gõ m và n vào 2 ô thí dụ K1 và K2:

PHP:
Sub PrintMultiPages()
m = sheet2.[K1]
n = sheet2.[K2]
For OrderNo = m to n
    Sheet2.[ab2] = OrderNo
    Sheet2.PrintOut
End Sub

Nếu chỉ muốn in 2 trang từ 1 đến 2 thì câu lệnh là
PHP:
    Sheet2.PrintOut 1, 2

Nếu khoảng in là text, thì hơi phức tạp 1 tí, có file cụ thể sẽ làm tốt hơn.
 
Lần chỉnh sửa cuối:
Upvote 0
To Ptm0412:
Mình thấy nên bỏ đi 1 Sub cho gọn

To Minh Tri 2009:
Các ô nên dùng Format hoăc hàm and để kết nối giữa số liệu và các toán tử hay đơn vị tính nó mỹ quan hơn.Khi có số liệu thì số liệu, toán tử hay đơn vị đi liền với nhau. Khi ô trỗng hay số liệu trống thì cũng sẽ không còn đơn vị hay toán tử nữa

Nếu khoảng in là text, thì hơi phức tạp 1 tí
Mình tham gia phần chọn in:

Mã:
Sub Prin_Multi()
Dim ma1, ma2 As String
Dim Rg1, Rg2, Rg As Range
ma1 = InputBox("Nhap ma bat dau:")
ma2 = InputBox("Nhap ma ket thuc:")
With Sheet1.Range("E5:E10000")
    Set Rg1 = .Find(ma1, LookIn:=xlValues, LookAt:=xlWhole)
    Set Rg2 = .Find(ma2, LookIn:=xlValues, LookAt:=xlWhole)
    If Not Rg1 Is Nothing And Not Rg2 Is Nothing Then
    Set Rg = Sheet1.Range(Rg1.Address, Rg2.Address)
For Each cll In Rg
'.........
Next
Else
MsgBox "Khong xac dinh duoc vung ban chon"
End If
End With
End Sub
Bạn đưa các lệnh điền mã và in vào chỗ '.................. Khi sử dụng nhập ma1, ma2 cai nào trước cũng được.
 
Lần chỉnh sửa cuối:
Upvote 0
Thật là một câu hỏi ngớ ngẩn.Mình đã khắc phục đươc vấn đề in thêm một trang không có nội dung rồi (thu nhỏ form in khoảng 80% là xong) nhưng vấn đề mới ( tại sao trong cột thứ 5 trong file dữ liệu lúc nào cũng bắt đầu phải là dãy số này 10138-00043-001
ví dụ : 10138-00043-001
10138-00043-002
10138-00043-003
10138-00043-. . . thì in đươc,nếu là dãy số khác thì vô phương.cho mình hỏi có cách nào giúp để mỗi khi in mình có thể thay đổi dãy số ở cột thứ 5 vì đó là là số hiệu của đơn hàng)không biết với các bạn có ngớ ngẩn hay không nhưng với mình thì bó tay rồi rất mong các bạn giúp mình!!$@!!!$@!!!$@!!
 
Upvote 0
Mình tham gia cách dùng Form để chon in
 

File đính kèm

Upvote 0
Bạn Insert 1 Module và nhập lệnh in như sau: (Lưu ý đây là code cho máy của mình, bạn sẽ điều chỉnh lại)
Mã:
Sub InBC(ByVal i As Integer)
Dim sh As Worksheet
Dim mayin As String
Dim InOK As Boolean
InOK = True
Select Case i
Case Is = 1
Set sh = Sheet3
mayin = "[COLOR=Blue]Auto Samsung SCX-4x21 Series[/COLOR] [COLOR=Red]on TIEN on Ne10:[/COLOR]"
Case Is = 2
Set sh = Sheet2
mayin = "[COLOR=Blue]Canon LBP2900[/COLOR] [COLOR=Red]on Ne04:[/COLOR]"
Case Is = 3
Set sh = Sheet1
mayin = "[COLOR=Blue]\\LAN\Samsung SCX-4x21 Series[/COLOR] [COLOR=Red]on Ne16:[/COLOR]"
Case Else
InOK = False
End Select
If InOK Then
Application.ActivePrinter = mayin
sh.PrintOut From:=1, To:=1, Copies:=1, ActivePrinter:=mayin, Collate:=True
End If
End Sub
Ban có bao sheet cần in sẽ thêm vào bấy nhiêu case. Bạn để ý sẽ thấy đoạn màu xanh chính là tên máy in của bạn, nhưng đoạn màu đỏ bạn chưa rõ. Bạn dùng chức năng Record Macro để ghi lại lệnh in theo từng máy in của bạn. Trong kết quả sẽ có chính xác từng máy. Bạn chép và thay thế vào cho phù hợp.


Tại event click của Combo, ta thêm dòng lệnh để in

Mã:
Private Sub ComboBox3_Change()
.........
Call InBC([B][COLOR=DarkRed]3[/COLOR][/B])
..........
End Sub
Cần in theo Case nào thì điền con số tương ứng màu nâu. Chúc bạn thành công.
 
Lần chỉnh sửa cuối:
Upvote 0
Web KT

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

Back
Top Bottom