2008-09-15 40 views
5

Khi tôi sử dụng phương pháp PrintOut để in đối tượng Trang tính vào máy in, hộp thoại "In" (hiển thị tên tệp, máy in đích, trang đã in và nút Hủy) được hiển thị mặc dù tôi đã đặt DisplayAlerts = False. Mã bên dưới hoạt động trong macro Excel nhưng điều tương tự cũng xảy ra nếu tôi sử dụng mã này trong ứng dụng VB hoặc VB.Net (với các thay đổi tham chiếu bắt buộc để sử dụng đối tượng Excel).Làm thế nào để bạn ngăn hộp thoại in khi sử dụng phương pháp Excel PrintOut

Public Sub TestPrint() 
Dim vSheet As Worksheet 

    Application.ScreenUpdating = False 
    Application.DisplayAlerts = False 

    Set vSheet = ActiveSheet 
    vSheet.PrintOut Preview:=False 

    Application.DisplayAlerts = True 
    Application.ScreenUpdating = True 

End Sub 

EDIT: Câu trả lời dưới đây làm sáng tỏ điều này (có thể là hộp thoại Windows chứ không phải hộp thoại Excel) nhưng không trả lời được câu hỏi của tôi. Có ai biết làm thế nào để ngăn chặn nó được hiển thị?

EDIT: Cảm ơn bạn đã nghiên cứu thêm, Kevin. Có vẻ như đây là những gì tôi cần. Chỉ cần không chắc chắn tôi muốn một cách mù quáng chấp nhận mã API như thế. Có ai khác có bất kỳ kiến ​​thức nào về các cuộc gọi API này và họ đang làm những gì mà tác giả dự định không?

Trả lời

1

Khi bạn nói Hộp thoại "In", tôi giả sử bạn có nghĩa là hộp thoại "Hiện đang in xxx trên" thay vì hộp thoại in chuẩn (chọn máy in, số lượng bản sao, v.v ...). Lấy ví dụ của bạn ở trên & dùng thử, đó là hành vi tôi thấy - "Hiện đang in ..." được hiển thị ngắn gọn & sau đó tự động đóng.

Điều bạn đang cố gắng kiểm soát có thể không bị ràng buộc với Excel, nhưng thay vào đó là hành vi cấp Windows. Nếu nó có thể điều khiển được, bạn cần a) vô hiệu hóa nó, b) thực hiện thao tác in của bạn, c) bật lại. Nếu mã của bạn không thành công, có nguy cơ không được kích hoạt lại cho các ứng dụng khác.

EDIT: Thử giải pháp này: How do you prevent printing dialog when using Excel PrintOut method. Nó dường như mô tả chính xác những gì bạn đang sau.

+0

Có, giả định của bạn là chính xác - xin lỗi tôi đã không chỉ định. Hơn nữa để câu trả lời này, không ai biết liệu hành vi này của Excel hoặc Windows? –

+0

Đây là hành vi của Windows. –

1

Các cuộc gọi API trong bài viết được liên kết bởi Kevin Haines ẩn hộp thoại in ấn như vậy:

  1. Lấy tay cầm của cửa sổ hộp thoại in ấn.
  2. Gửi một thông điệp tới các cửa sổ để nói nó không phải vẽ lại
  3. Vô hiệu hóa cửa sổ, mà buộc một vẽ lại mà không bao giờ xảy ra
  4. Nói với Windows để sơn lại cửa sổ, khiến nó biến mất.

Đó là đơn giản để đặt nó nhẹ nhàng.

Cuộc gọi API an toàn, nhưng có thể bạn sẽ muốn đảm bảo rằng việc cập nhật màn hình cho hộp thoại In được đặt thành True nếu ứng dụng của bạn không thành công.

2

Nếu bạn không muốn hiển thị hộp thoại in, sau đó chỉ cần thực hiện kiểm tra macro như sau; nó sẽ không hiển thị bất kỳ cuộc đối thoại in nào và sẽ phát hiện máy in mặc định và in ngay lập tức.

sub test() 

activesheet.printout preview:= false 

end sub 

Chạy macro này và nó sẽ in trang hiện đang hoạt động mà không hiển thị hộp thoại in.

Các vấn đề liên quan