Lệnh in trong Ecxel - Mong các cao thủ trợ giúp về VBA

hieungxngoc

New Member
Hội viên mới
Mình có một file đã định dạng vùng in các phiếu hàng, nhập số thứ tự của phiếu cần in vào ô mặc định và nhấn in thì sẽ in được phiếu cần in, mỗi lần chỉ in được 1 phiếu có số thứ tự đã nhập. Vấn đề này đôi lúc gây thiếu sót mất 1 hoặc vài phiếu nào đó.

Vì vậy, mong các cao thủ giúp đỡ về VBA: làm cách nào đó để nhập dữ liệu dãy số thứ tự của các phiếu cần in và in được một loạt phiếu cần thiết.

Mong các cao thủ chỉ giáo. Trân trọng
 
Ðề: Lệnh in trong Ecxel - Mong các cao thủ trợ giúp về VBA

Chắc ở VN hay dấu diến hide row , column nên bị vậy . Đoán thui

Chéc en thì viết VBA để print region area hoạc range nào múm bing bing
 
Ðề: Lệnh in trong Ecxel - Mong các cao thủ trợ giúp về VBA

không hide row, column, mà được định dạng vùng cần in thôi, nhập STT vào ô mặc định là in được.

Nếu làm thủ công bằng cách copy ra nhiều bảng giống nhau, đặt số thứ tự vào các bảng và in cũng được nhưng làm vậy thì rối lắm và có phần hơi nặng file.

Mong các cao thủ chỉ giáo!!!
 
Ðề: Lệnh in trong Ecxel - Mong các cao thủ trợ giúp về VBA

không hide row, column, mà được định dạng vùng cần in thôi, nhập STT vào ô mặc định là in được.

Nếu làm thủ công bằng cách copy ra nhiều bảng giống nhau, đặt số thứ tự vào các bảng và in cũng được nhưng làm vậy thì rối lắm và có phần hơi nặng file.

Mong các cao thủ chỉ giáo!!!
 
Ðề: Lệnh in trong Ecxel - Mong các cao thủ trợ giúp về VBA

Mình có một file đã định dạng vùng in các phiếu hàng, nhập số thứ tự của phiếu cần in vào ô mặc định và nhấn in thì sẽ in được phiếu cần in, mỗi lần chỉ in được 1 phiếu có số thứ tự đã nhập. Vấn đề này đôi lúc gây thiếu sót mất 1 hoặc vài phiếu nào đó.

Vì vậy, mong các cao thủ giúp đỡ về VBA: làm cách nào đó để nhập dữ liệu dãy số thứ tự của các phiếu cần in và in được một loạt phiếu cần thiết.

Mong các cao thủ chỉ giáo. Trân trọng

Cái vụ này phải Up File lên, dựa vào dữ liệu có sẳn và với nội dung phiếu thì mới có giải pháp cụ thể, còn đoán mò để đưa ra giải pháp thì không thực tế, phải trả lời nhiều lần thì không giải quyết được vấn đề và sẽ mất nhiều thời gian vô nghĩa.
 
Ðề: Lệnh in trong Ecxel - Mong các cao thủ trợ giúp về VBA

không hide row, column, mà được định dạng vùng cần in thôi, nhập STT vào ô mặc định là in được.

Nếu làm thủ công bằng cách copy ra nhiều bảng giống nhau, đặt số thứ tự vào các bảng và in cũng được nhưng làm vậy thì rối lắm và có phần hơi nặng file.

Mong các cao thủ chỉ giáo!!!

Confused !!! ko hiểu kiểu bên VN

Tại sao lại phải Enter STT ??? dù ko có data vẫn Print được mà

Cách print " vùng " ( Area) mà mình muốn là
1- Drag (bôi đen vùng đó ), hoằ.c chọn rows, columns gì tùy ý
2- File-->Print
3- Setting --> chọn --> Print Selection
4- sẽ thấy Preview gốc bên tay phải

Làm như vậy thì ko cần hihe rows/columns gì hết . Nó sẽ focus vào area đó
Đôi khi bị chạy tầm bậy vì PageBreak (trường hợp này thường xẩy ra khi có Charts) , nên cần lưu ý . Nhìn trong Pagebreak hoặc Layout để chỉnh trước .
Khi adjust PageBreak làm rộng ra hoặc nhiều dòng hơn thì nó tự động thu nhỏ, rất khó đọc được chữ
 
Ðề: Lệnh in trong Ecxel - Mong các cao thủ trợ giúp về VBA

Mình đính kèm file dữ liệu, file hơi nặng nên phải xóa bớt nội dung không cần thiết...

Ví dụ mình cần in từ phiếu số 1 đến phiếu số 7, có cách nào để ra lệnh cho nó in một loạt từ số 1 đến số 7 không thay vì phải nhập 1 -> print, 2 -> print, 3 -> print..., 7 -> print

Mong các bạn giúp đỡ.
 

Đính kèm

  • Thang01.xls
    91.5 KB · Lượt xem: 673
Sửa lần cuối:
Ðề: Lệnh in trong Ecxel - Mong các cao thủ trợ giúp về VBA

Mình đính kèm file dữ liệu, file hơi nặng nên phải xóa bớt nội dung không cần thiết...

Ví dụ mình cần in từ phiếu số 1 đến phiếu số 7, có cách nào để ra lệnh cho nó in một loạt từ số 1 đến số 7 không thay vì phải nhập 1 -> print, 2 -> print, 3 -> print..., 7 -> print

Mong các bạn giúp đỡ.

Nếu cậu bấm
1- View --> PageBreak View , sẽ thấy ngay giới hạn là cột H . Như vậy nó thiếu nên print tiếp sang trang kế . Do đó bị trouble
2- Kéo cái line DashLine (đường chấm chấm sọc ) sang I, để cậu có full range("A:I") như area cậu đã chọn

Giờ tôi phải thăng, 2am rồi
 
Ðề: Lệnh in trong Ecxel - Mong các cao thủ trợ giúp về VBA

Mình đính kèm file dữ liệu, file hơi nặng nên phải xóa bớt nội dung không cần thiết...

Ví dụ mình cần in từ phiếu số 1 đến phiếu số 7, có cách nào để ra lệnh cho nó in một loạt từ số 1 đến số 7 không thay vì phải nhập 1 -> print, 2 -> print, 3 -> print..., 7 -> print

Mong các bạn giúp đỡ.

Đơn giản như "đan rổ"
Chép code này vào và chạy nó

PHP:
Sub InPhieu()
    Dim WsDaTa As Worksheet
    Dim WsPrint As Worksheet
    Set WsDaTa = Worksheets("Lichvanchuyen")
    Set WsPrint = Worksheets("Inphieukomau")
    Dim i As Integer
    For i = 6 To WsDaTa.Range("A65000").End(xlUp).Row
        WsPrint.Range("M1") = WsDaTa.Range("A" & i)
        WsPrint.PrintOut
    Next
End Sub

Thân mến
 
Ðề: Lệnh in trong Ecxel - Mong các cao thủ trợ giúp về VBA

Đơn giản như "đan rổ"
Chép code này vào và chạy nó

PHP:
Sub InPhieu()
    Dim WsDaTa As Worksheet
    Dim WsPrint As Worksheet
    Set WsDaTa = Worksheets("Lichvanchuyen")
    Set WsPrint = Worksheets("Inphieukomau")
    Dim i As Integer
    For i = 6 To WsDaTa.Range("A65000").End(xlUp).Row
        WsPrint.Range("M1") = WsDaTa.Range("A" & i)
        WsPrint.PrintOut
    Next
End Sub

Thân mến

Mình chép vào và bấm run nhưng bị lỗi: "Run-time error '9': subscript out of range"

Nếu mình cần in từ trang 3 đến trang 5 thì làm thế nào vậy bạn ơi!!!
 
Ðề: Lệnh in trong Ecxel - Mong các cao thủ trợ giúp về VBA

Trong File tôi chỉ làm có 10 phiếu (5 ntrang A4) xác nhận chuyển xe và khối lượng vận chuyển. nếu muốn in phiếu từ phiếu 11 đến phiếu 20 thì tại C4 gõ vào số 11 rồi sử dụng lệnh in là xong, tương tự muốn 21 đến 30 tại C4 gõ 21.
 

Đính kèm

  • Thang01.rar
    18.8 KB · Lượt xem: 564
Ðề: Lệnh in trong Ecxel - Mong các cao thủ trợ giúp về VBA

morning,

Lần đầu tiên khi chon Print trang InPhieukomau

1- Chọn Print Active Sheets
2- Thấy phía dưới là 1 of 3 !!!!!
3- Bấm ESC, rồi vào View -->Page Break Preview
3- ahahahah thì ra cái lòng thòng số phiếu cần in (Crappy)
4- Chỉnh đúng vị trí như trong hình Page 1 , ko còn cung quăng
5- Trở lại Print --> nhìn phía dưới trang --> 1 of 1
6- OK

Muốn in bao biêu tờ thì adjust ngay --> Copies --> 5 ( 5 lần)
Muốn trang nào thì Page 3 to 5

P1_zps30517cae.jpg
 
Ðề: Lệnh in trong Ecxel - Mong các cao thủ trợ giúp về VBA

Trong File tôi chỉ làm có 10 phiếu (5 ntrang A4) xác nhận chuyển xe và khối lượng vận chuyển. nếu muốn in phiếu từ phiếu 11 đến phiếu 20 thì tại C4 gõ vào số 11 rồi sử dụng lệnh in là xong, tương tự muốn 21 đến 30 tại C4 gõ 21.

Cám ơn bạn đã quan tâm, nhưng cái mình cần ở đây là không copy ra như bạn mà có thể tạo mã để tự động in các trang mình cần. Ví như có đoạn code in trang chẵn - lẽ vậy
 
Ðề: Lệnh in trong Ecxel - Mong các cao thủ trợ giúp về VBA

Đơn giản như "đan rổ"
Chép code này vào và chạy nó

PHP:
Sub InPhieu()
    Dim WsDaTa As Worksheet
    Dim WsPrint As Worksheet
    Set WsDaTa = Worksheets("Lichvanchuyen")
    Set WsPrint = Worksheets("Inphieukomau")
    Dim i As Integer
    For i = 6 To WsDaTa.Range("A65000").End(xlUp).Row
        WsPrint.Range("M1") = WsDaTa.Range("A" & i)
        WsPrint.PrintOut
    Next
End Sub

Thân mến

Cám ơn bạn, mình đã chỉnh sữa chút ít cho đúng tên sheet với file của mình và đã in được, nhưng nó chạy từ phiếu số 1 đến số 25 là dừng. Cũng chưa theo ý mình lắm, bạn có thể giúp thêm 1 đoạn nữa là tạo thêm cho mình 1 form để nó in nhưng trang mình cần, ví dụ như từ trang 7 đến trang 15 được ko

Chân thành cám ơn
 
Ðề: Lệnh in trong Ecxel - Mong các cao thủ trợ giúp về VBA

WsPrint.PrintOut from:=7, to:=15

Chèn vào chỗ nào vậy bạn, mình đang tập tành vào VBA nên chưa rõ, nếu tạo được 1 bảng để điền trang cần in vào thì tốt hơn. Cám ơn
 
Ðề: Lệnh in trong Ecxel - Mong các cao thủ trợ giúp về VBA

Bác thủ cái này xem có tiện không nha.
Em mới làm quen khái niệm VBA nên ko giúp bác đc nhiều, sang năm mới em sẽ ngâm cứu vụ này vì thấy nó thiết thực và có thể dùng nhiều trong tương lai ^^!
HTML:
http://www.mediafire.com/view/nrbb0pkoielg1sf/Thang01]Thang01
orr
http://www.mediafire.com/download/nrbb0pkoielg1sf/Thang01.xlsm]Thang01
orr
http://www.teachexcel.com/free-excel-macros/m-58,Print-Specific-Pages-in-Excel.html

Ngẫm kỹ thì thấy bài này của Bác khá khó,
Lúc in thì có phải là in từ trang 3 tới 5 đâu (3 liền 4 liền 5), có khi in trang 2;4;6 thôi (bỏ qua trang 3 và trang 5).
các điền giá trị trong TH này em chưa nghĩ ra!


Thân./.

P/s: Chúc mừng năm mới, chúc Bác Mã đáo thành công!
:dotphao: :phao: :phaohoa:
 
Sửa lần cuối:
Ðề: Lệnh in trong Ecxel - Mong các cao thủ trợ giúp về VBA

Bác thủ cái này xem có tiện không nha.
Em mới làm quen khái niệm VBA nên ko giúp bác đc nhiều, sang năm mới em sẽ ngâm cứu vụ này vì thấy nó thiết thực và có thể dùng nhiều trong tương lai ^^!


Ngẫm kỹ thì thấy bài này của Bác khá khó,
Lúc in thì có phải là in từ trang 3 tới 5 đâu (3 liền 4 liền 5), có khi in trang 2;4;6 thôi (bỏ qua trang 3 và trang 5).
các điền giá trị trong TH này em chưa nghĩ ra!


Thân./.

P/s: Chúc mừng năm mới, chúc Bác Mã đáo thành công!
:dotphao: :phao: :phaohoa:

Cám ơn bạn.

Nếu bạn viết được để in các trang liên tiếp thì cho mình xin là tốt rồi. Mình đang xài Of 2003 nên file trên mình chưa nghiên cứu được, bạn có thể chuyển giúp sang ecxel 2003 được không ạh. Chúc sức khỏe và thành đạt
 
Sửa lần cuối:
Ðề: Lệnh in trong Ecxel - Mong các cao thủ trợ giúp về VBA

Chèn vào chỗ nào vậy bạn, mình đang tập tành vào VBA nên chưa rõ, nếu tạo được 1 bảng để điền trang cần in vào thì tốt hơn. Cám ơn

Mèn, ko biết gì về VBA mà muốn dùng VBA !!!

For i = 6 To WsDaTa.Range("A65000").End(xlUp).Row
WsPrint.Range("M1") = WsDaTa.Range("A" & i)
WsPrint.PrintOut
Next

Từ row 6 đến cuối dòng sheet là (A65000) tức là 65000 rows

ì cậu đã set trong Layout cái area rồi, nên cái VBA bé vỡ lòng print . Chứ ko có điều chỉnh gì hết . Nó là default print giấy 8x11 inch

Kihi cậu muốn in từ trang này đến trang kháck thì nlock gà command như sau: Có dấu sắc " ' "

' WsPrint.PrintOut

Paste hàng này vào ở dưới
WsPrint.PrintOut from:=7, to:=15

Muốn chẳng lẻ phải đổi lối viết loop

For Page = trangdầu To Tongsotrang Step 2

Nếu trang đầu là 1 thì nhẩy 2 bước là 3 . Như vậy 1,3,5, v.v.v......
Nếu trang đầu là 2 thì nhẩy 2 bước là 4 . Như vậy 2,4,6 v.v.v......

Muốn xác định full page thì Excel phải mượn đỡ java
Application.ExecuteExcel4Macro("GET.DOCUMENT(50)")

Muốn thay đổi khổ giấi lại nào

GET.DOCUMENT(khổ Giay, size)

Muốn giấu diếm thì
.Parent.Rows(cell.Row).Hidden = True hoặc false

Trong Excel đã có sẵn, học làm gì những thứ print này ???? Ngoại trừ data rộng mà muốn in cột nào, hàng nào mới dùng VBA, hoặc ko muốn bịt ko cho thấy cells nào

Để dành thì thì giờ học thức khác, hoặc dùng ORCAD (điện tử), Autocad (Mechanical) in ra Blue Print
 
Ðề: Lệnh in trong Ecxel - Mong các cao thủ trợ giúp về VBA

Cám ơn Wind_Flower 1 cái để lấy hên đầu năm nhé!

Chúc bạn và gia đình năm mới an khang, thịnh vượng và có nhiều đóng góp cho diễn đàn.
 
Sửa lần cuối:

CẨM NANG KẾ TOÁN TRƯỞNG


Liên hệ: 090.6969.247

KÊNH YOUTUBE DKT

Kỹ thuật giải trình thanh tra BHXH

Đăng ký kênh nhé cả nhà

SÁCH QUYẾT TOÁN THUẾ


Liên hệ: 090.6969.247

Top