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

Thảo luận trong 'Excel và VBA' bắt đầu bởi hieungxngoc, 24/1/14.

  1. hieungxngoc

    hieungxngoc New Member Hội viên mới

    Được cảm ơn:
    0
    Điểm thành tích:
    0
    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
     
  2. Wind_Flower

    Wind_Flower New Member Hội viên mới

    Được cảm ơn:
    0
    Điểm thành tích:
    0
    Ðề: 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
     
  3. hieungxngoc

    hieungxngoc New Member Hội viên mới

    Được cảm ơn:
    0
    Điểm thành tích:
    0
    Ðề: 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!!!
     
  4. hieungxngoc

    hieungxngoc New Member Hội viên mới

    Được cảm ơn:
    0
    Điểm thành tích:
    0
    Ðề: 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!!!
     
  5. be09

    be09 Member Hội viên mới

    Được cảm ơn:
    4
    Điểm thành tích:
    8
    Ðề: Lệnh in trong Ecxel - Mong các cao thủ trợ giúp về VBA

    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.
     
  6. Wind_Flower

    Wind_Flower New Member Hội viên mới

    Được cảm ơn:
    0
    Điểm thành tích:
    0
    Ðề: Lệnh in trong Ecxel - Mong các cao thủ trợ giúp về VBA

    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ữ
     
  7. hieungxngoc

    hieungxngoc New Member Hội viên mới

    Được cảm ơn:
    0
    Điểm thành tích:
    0
    Ðề: 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 đỡ.
     

    Các file đính kèm:

    Chỉnh sửa cuối: 26/1/14
  8. Wind_Flower

    Wind_Flower New Member Hội viên mới

    Được cảm ơn:
    0
    Điểm thành tích:
    0
    Ðề: Lệnh in trong Ecxel - Mong các cao thủ trợ giúp về VBA

    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
     
  9. xuanthanh

    xuanthanh New Member Hội viên mới

    Được cảm ơn:
    1
    Điểm thành tích:
    0
    Ðề: 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 6 To WsDaTa.Range("A65000").End(xlUp).Row
            WsPrint
    .Range("M1") = WsDaTa.Range("A" i)
            
    WsPrint.PrintOut
        Next
    End Sub
    Thân mến
     
  10. hieungxngoc

    hieungxngoc New Member Hội viên mới

    Được cảm ơn:
    0
    Điểm thành tích:
    0
    Ðề: Lệnh in trong Ecxel - Mong các cao thủ trợ giúp về VBA

    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!!!
     
  11. be09

    be09 Member Hội viên mới

    Được cảm ơn:
    4
    Điểm thành tích:
    8
    Ðề: 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ác file đính kèm:

  12. Wind_Flower

    Wind_Flower New Member Hội viên mới

    Được cảm ơn:
    0
    Điểm thành tích:
    0
    Ðề: 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

    [​IMG]
     
  13. hieungxngoc

    hieungxngoc New Member Hội viên mới

    Được cảm ơn:
    0
    Điểm thành tích:
    0
    Ðề: Lệnh in trong Ecxel - Mong các cao thủ trợ giúp về VBA

    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
     
  14. hieungxngoc

    hieungxngoc New Member Hội viên mới

    Được cảm ơn:
    0
    Điểm thành tích:
    0
    Ðề: Lệnh in trong Ecxel - Mong các cao thủ trợ giúp về VBA

    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
     
  15. Wind_Flower

    Wind_Flower New Member Hội viên mới

    Được cảm ơn:
    0
    Điểm thành tích:
    0
    Ðề: Lệnh in trong Ecxel - Mong các cao thủ trợ giúp về VBA

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

    hieungxngoc New Member Hội viên mới

    Được cảm ơn:
    0
    Điểm thành tích:
    0
    Ðề: 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
     
  17. newbee

    newbee New Member Hội viên mới

    Được cảm ơn:
    0
    Điểm thành tích:
    0
    Ðề: 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:
     
    Chỉnh sửa cuối: 30/1/14
  18. hieungxngoc

    hieungxngoc New Member Hội viên mới

    Được cảm ơn:
    0
    Điểm thành tích:
    0
    Ðề: Lệnh in trong Ecxel - Mong các cao thủ trợ giúp về VBA

    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
     
    Chỉnh sửa cuối: 30/1/14
  19. Wind_Flower

    Wind_Flower New Member Hội viên mới

    Được cảm ơn:
    0
    Điểm thành tích:
    0
    Ðề: Lệnh in trong Ecxel - Mong các cao thủ trợ giúp về VBA

    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
     
  20. be09

    be09 Member Hội viên mới

    Được cảm ơn:
    4
    Điểm thành tích:
    8
    Ðề: 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.
     
    Chỉnh sửa cuối: 10/4/14

Chia sẻ trang này