Giúp em tạo nút in dữ liệu từ các sheet khác nhau

Liên hệ QC

moonsun1130

Thành viên chính thức
Tham gia
7/1/10
Bài viết
63
Được thích
5
Nhờ các Anh chị giúp em tạo nút In dữ liệu từ các sheet khác nhau. Chi tiết file gửi kèm. Em cảm ơn Anh chị rất nhiều
tro giup.jpg

Việc in dữ liệu của tất cả sheet em đã giải quyết được bằng dòng lệnh bên dưới :
Private Sub CommandButton1_Click()
Sheets("Sheet3").Select
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
End Sub

Tuy nhiên em không biết cách giải quyết các các vấn đề tiếp theo như thế nào :
1- Khi bấm chọn in tất cả các sheet (hoặc in từ sheet 3..) thì các nút chọn bên dưới sẽ ẩn đi để không chọn được nữa sau đó bẩm chọn From -> To rồi ấn Ok là in dữ liệu của khach hang đó ra.
2- Code cho nút chọn From -> To (dữ liệu lấy từ sheet 2)

Rất mong các Anh(chị) giúp đỡ em.
 

File đính kèm

Chỉnh sửa lần cuối bởi điều hành viên:
Cảm ơn anh(chị) Viehoai rất nhiều.
- Em chọn In tất cả -> Ok chạy Báo lỗi Run-time error "13" chọn debug màu vàng hiện ở dòng
Sheets(Sh).Active
Nếu em chọn in từng Sheet thì in được nhưng chưa đúng. Em tải hình Anh(chị) xem giúp em với nhé.

tro giup.jpg
 
Lần chỉnh sửa cuối:
Upvote 0
Cảm ơn anh(chị) Viehoai rất nhiều.
- Em chọn In tất cả -> Ok chạy Báo lỗi Run-time error "13" chọn debug màu vàng hiện ở dòng
Sheets(Sh).Active
Nếu em chọn in từng Sheet thì in được nhưng chưa đúng. Em tải hình Anh(chị) xem giúp em với nhé.
View attachment 59012
Tại vị trí lỗi bạn sửa lại trong vòng For đó thành
PHP:
For Each Sh In ThisWorkbook.Worksheets
     Sh.PrintOut Copies:=TextBox5.Value, Collate:=True
Next
 
Lần chỉnh sửa cuối:
Upvote 0
Upvote 0
Giúp em phần chọn From ... To.. như trong bài với ạ
 
Upvote 0
Theo hình của bạn thì đâu biết số sheet để làm. Như vậy chưa tổng quát hay sao??
Anh(chị) Viethoai ơi đây là những gì em mong muốn thể hiện trong file
- Nếu chọn In tat ca cac sheet thì lập tức in từ Sheet3, Sheet4, Sheet5,…..
Phần này đã được giải quyết song rồi ạ

- Nếu chọn In noi dung sheet 3 và chọn thông tin From -> To để chọn dữ liệu -> Bấm Ok thì sẽ in tất cả nội dung về khách hàng ABC bên Sheet3 - Nếu chọn In noi dung sheet 4 và chọn thông tin From -> To để chọn dữ liệu -> Bấm Ok thì sẽ in tất cả nội dung về khách hàng ABC bên Sheet4 - Lựa chọn From -> To là lấy thông tin Họ tên, địa chỉ bên Sheet2
Còn phần này nữa ạ. Vì nội dung ở các sheet là khác nhau. nên em muốn là khi chọn From ... To thì sẽ in ra toàn bộ nội dung của Sheet đó với tên là khách hàng ABC được chọn
 
Upvote 0
Mục đích của in chọn các sheet là như này :
Sheet3 em đặt là phiếu nhập kho, sheet4 - phiếu xuất kho. nếu muốn in nhập(xuất) của khách hàng nào thì tại sheet 3(sheet4) chọn khách hàng tại ô J1 sau đó bấm in thì khách hàng đó sẽ được in với nội dung nhập xuất được soạn sẵn.
Vì sau khi giải quyết được các vấn đề trên thì khi chạy chương trình em sẽ cho ẩn hết toàn bộ các sheet đi chỉ có 1 sheet chính để chạy thôi ạ.
Em cảm ơn Anh(chị) rất nhiều nhiều
 
Upvote 0
Mục đích của in chọn các sheet là như này :
Sheet3 em đặt là phiếu nhập kho, sheet4 - phiếu xuất kho. nếu muốn in nhập(xuất) của khách hàng nào thì tại sheet 3(sheet4) chọn khách hàng tại ô J1 sau đó bấm in thì khách hàng đó sẽ được in với nội dung nhập xuất được soạn sẵn.
Vì sau khi giải quyết được các vấn đề trên thì khi chạy chương trình em sẽ cho ẩn hết toàn bộ các sheet đi chỉ có 1 sheet chính để chạy thôi ạ.
Em cảm ơn Anh(chị) rất nhiều nhiều

Anh (chị) VieHoai giúp em với ạ
 
Upvote 0
Đúng rồi ạ. Em cảm ơn Anh(Chị) VieHoai rất nhiều nhiều. Nếu có gì vướng mắc Anh(chị) VieHoai giúp em với nhé
 
Upvote 0
Anh(chi) Viehoai ơi giúp em với ạ.

phần In tùy chọn nếu để như vậy thì khi bấm Ok nó sẽ in tất cả các sheet kể cả sheet dữ liệu. Anh(chị) giúp em chỉnh sửa phần này như sau mới ạ

From in sửa lại sẽ như sau :

[FONT=&quot]O In tất cả các sheet[/FONT] (nếu chọn đây thì lựa chọn các sheet bên dưới sẽ mờ đi và không chọn được)
[FONT=&quot] [/FONT]
[FONT=&quot]O In lựa chọn[/FONT]
[FONT=&quot] O In sheet 3
[/FONT][FONT=&quot] O In sheet 4
[/FONT][FONT=&quot] O In sheet 5
[/FONT][FONT=&quot]O In sheet ....

Từ : ..... đến : .......
[/FONT] ( phần này giữ nguyên)
Copy :

Ok Thoát

- Nếu chọn In tất cả thì sẽ in từ sheet3 hoặc (từ sheet nào đó em muốn bắt đầu đến hết. Sheet 1,2 là sheet chứa dữ liệu)
- Phần In lựa chọn các sheet như sau : Nếu bấm vào In lựa chọn thì các sheet bên dưới sẽ nổi lên sau đó :
Nếu em chỉ muốn in Sheet3 và Sheet5 (trường hợp in lại) thì em đánh dấu vào ô In sheet 3In Sheet5 đó sau đó chọn In từ ... đến .... -> Ok là in nguyên sheet3 và sheet5 thôi ạ
[FONT=&quot]
Em cảm ơn Anh(chị) nhiều nhiều ạ.
[/FONT]
 
Lần chỉnh sửa cuối:
Upvote 0
Anh(chi) Viehoai ơi giúp em với ạ.

phần In tùy chọn nếu để như vậy thì khi bấm Ok nó sẽ in tất cả các sheet kể cả sheet dữ liệu. Anh(chị) giúp em chỉnh sửa phần này như sau mới ạ

From in sửa lại sẽ như sau :

[FONT=&quot]O In tất cả các sheet[/FONT] (nếu chọn đây thì lựa chọn các sheet bên dưới sẽ mờ đi và không chọn được)
[FONT=&quot][/FONT][FONT=&quot]O In lựa chọn[/FONT]
[FONT=&quot]O In sheet 3 [/FONT]
[FONT=&quot] O In sheet 4[/FONT]
[FONT=&quot] O In sheet 5 [/FONT]
[FONT=&quot]O In sheet ....[/FONT]

[FONT=&quot]Từ : ..... đến : ....... [/FONT]( phần này giữ nguyên)
Copy :

Ok Thoát

- Nếu chọn In tất cả thì sẽ in từ sheet3 hoặc (từ sheet nào đó em muốn bắt đầu đến hết. Sheet 1,2 là sheet chứa dữ liệu)
- Phần In lựa chọn các sheet như sau : Nếu bấm vào In lựa chọn thì các sheet bên dưới sẽ nổi lên sau đó :
Nếu em chỉ muốn in Sheet3 và Sheet5 (trường hợp in lại) thì em đánh dấu vào ô In sheet 3In Sheet5 đó sau đó chọn In từ ... đến .... -> Ok là in nguyên sheet3 và sheet5 thôi ạ

[FONT=&quot]Em cảm ơn Anh(chị) nhiều nhiều ạ.[/FONT]

Tóm lại:
1. Ngoài 2 sheet dữ liệu 1 và 2, sheet cần in có bao sheet? . Sheet5 biết nội dung thế nào lần
2. Ý bạn muốn Form thêm cả tùy chọn In hay sao?
3. Bạn thử đưa Form theo ý bạn đi. Form trước của bạn thì "In noi dung sheet n" là thế nào?
(nếu số sheet không thay đổi thì theo yêu cầu của bạn thì được)
 
Lần chỉnh sửa cuối:
Upvote 0
Tóm lại:
1. Ngoài 2 sheet dữ liệu 1 và 2, sheet cần in có bao sheet? . Sheet5 biết nội dung thế nào lần
2. Ý bạn muốn Form thêm cả tùy chọn In hay sao?
3. Bạn thử đưa Form theo ý bạn đi
(nếu số sheet không thay đổi thì theo yêu cầu của bạn thì được)

Form trước của bạn thì "In noi dung sheet n" là thế nào?
ý em là các sheet còn lại ạ

Các sheet mầu đỏ là những sheet mà bên Form tùy chọn tương ứng
Chọn In hop dong 1 -> Sheet5
Chọn In hop dong 2 -> Sheet6
.........

Em gửi file có Form lên Anh(chị) giúp em với nhé
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
ý em là các sheet còn lại ạ

Các sheet mầu đỏ là những sheet mà bên Form tùy chọn tương ứng
Chọn In hop dong 1 -> Sheet5
Chọn In hop dong 2 -> Sheet6
.........

Em gửi file có Form lên Anh(chị) giúp em với nhé

Bạn giải quyết cái này cho mình trước đã:
Khi tích chon " In Hop dong.." là thực hiện cái gì cụ thể?
(tôi thấy bạn in từng sheet tốt hơn cho bạn đấy vì nó tổng quát không cần biết bao nhiêu sheet, nếu nhở nhầm ==> tốn giấy đấy)
 
Lần chỉnh sửa cuối:
Upvote 0
Bạn giải quyết cái này cho mình trước đã:
Khi tích chon " In Hop dong.." là thực hiện cái gì cụ thể?
(tôi thấy bạn in từng sheet tốt hơn cho bạn đấy vì nó tổng quát không cần biết bao nhiêu sheet, nếu nhở nhầm ==> tốn giấy đấy)

Vì sau khi giải quyết được các vấn đề trên thì khi chạy chương trình em sẽ cho ẩn hết toàn bộ các sheet đi chỉ có 1 sheet chính để chạy thôi ạ.

Em có viết một tiện ích lập hồ sơ (em tạm gọi là chương trình) nhằm giảm bớt công việc cho chị em ở cơ quan đỡ phải viết bằng tay. chương trình của em bao gồm 12 sheet được đặt tên khác nhau.
từ sheet1 -> sheet5 là các sheet chứa thông tin khách hàng
từ sheet6 -> sheet12 là sheet chứa các mẫu hồ sơ, báo cáo..
Chương trình của em sau khi hoàn thiện, chạy thử thì không có vấn đề gì, tuy nhiên qua đó em thấy là nếu để nhập dữ liệu cho từng sheet1 là hơi lâu mà lại phải chú thích vào các ô để người nhập vào còn biết (rất mất thời gian cho em).
Tại các sheet báo cáo (từ sheet6->sheet12) nếu em muốn in khách hàng nào thì em gõ stt của khách hàng đó vào ô k1(chẳng hạn) lập tức các thông tin khách hàng đó sẽ được điền tự động vào chỗ tương ứng sau đó bấm in là nội dung + khách hàng chọn đó sẽ được in ra.

Trong quá trình triển khai em mới thấy nếu để nhập dữ liệu về 1 khách hàng nào đấy vào từng sheet là rất mất thời gian vì phải chọn từng sheet một. Do vậy em mới thiết kế thêm 1 sheet để nhập dữ liệu, sau khi nhập song thì chọn ghi các dữ liệu được ghi tự động sang các sheet tương ứng. Tuy nhiên nếu nhập song mà lại chọn từng sheet để in thì lại không hay. nên em muốn thiết kế thêm 1 nút In để khi kích vào đó hiện lên Form In báo cáo. tại đây có các sheet (đặt tên tương ứng vói mẫu báo cáo (cái này thì chị em trong cơ quan thuộc làu các mẫu)và lựa chọn khách hàng cần in rồi in là ấn Ok là in)
From in sửa lại sẽ như sau :

[FONT=&quot]O In tất cả các sheet[/FONT] (nếu chọn đây thì lựa chọn các sheet bên dưới sẽ mờ đi và không chọn được)
[FONT=&quot] [/FONT]
[FONT=&quot]O In lựa chọn[/FONT]
[FONT=&quot] O In sheet 3
[/FONT][FONT=&quot] O In sheet 4
[/FONT][FONT=&quot] O In sheet 5
[/FONT][FONT=&quot]O In sheet ....

Từ : ..... đến : .......
[/FONT] ( phần này giữ nguyên)
Copy :

Ok Thoát

- Nếu chọn In tất cả thì sẽ in từ sheet3 hoặc (từ sheet nào đó em muốn bắt đầu đến hết. Sheet 1,2 là sheet chứa dữ liệu)
- Phần In lựa chọn các sheet như sau : Nếu bấm vào In lựa chọn thì các sheet bên dưới sẽ nổi lên sau đó :
Nếu em chỉ muốn in Sheet3 và Sheet5 (trường hợp in lại) thì em đánh dấu vào ô In sheet 3In Sheet5 đó sau đó chọn In từ ... đến .... -> Ok là in nguyên sheet3 và sheet5 thôi ạ

Anh(chị) VieHoai thân. Trên đây là ý tưởng em muốn thực hiện trong chương trình tuy nhiên do hiểu biết về Excel và VBA còn hạn chế, cũng như cách trình bầy, diễn đạt ý kiến của em chưa được rõ nên 1 phần nào đó làm cho Anh(chi) VieHoai và các ACE trên diễn đàn chưa hiểu hết ý của em rất mong Anh(chị) Viehoai và các ACE trên GPE giúp đỡ em để em được hoàn thành chương trình.
Chân thành cảm ơn Anh(chị) Viehoai rất nhiều nhiều ạ !!
 
Upvote 0
Tuy nhiên nếu nhập song mà lại chọn từng sheet để in thì lại không hay.
Hay đấy bạn: Thế này nha
Khí bạn kích nút chọn In:
1. For in sẽ hiện ra
2. Bạn chọn 1 sheet bất kỳ để in (từ đâu đến đâu là tùy) nhưng Form vẫn không thoát
3. Chọn sheet khác để in Form vẫn chưa thoát
...
Như vậy cho đến khi bnaj không thích in nữa thì nhấn Cancel là xong
Như vậy bạn in 1 sheet chỉ cần 2-3 lần kích trên form. Như thế cũng rất nhanh hay sao?
(Còn nếu 12 sheet như thế thì đưa vào Form cả 12 sheet? )
(Kính nhờ MOD xóa các bài #2, #4, #6, #9 Topic này) Lý do: không hiểu ý tác giả nên không ý nghĩa. Xin cảm ơn
 
Lần chỉnh sửa cuối:
Upvote 0
Web KT

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

Back
Top Bottom