2010-08-05 66 views
1

我需要能夠測試當前視圖是否在Excel 2003中進行打印預覽。如何使用vb.net檢測Excel 2003的打印預覽窗口?

是否存在某種簡單訪問此屬性的Excel對象模型? (如Word對象模型中的application.printpreview ...)。

任何意見將是更受歡迎,

感謝

朱利安

PS:長話短說,我正在開發使用鍵盤快捷鍵來我的自定義功能的插件VSTO和打印預覽時,我需要禁用此快捷方式。

回答

0

你要確定它是否在xlPageBreakPreview

If Windows(1).View = xlPageBreakPreview Then 
    ''# do your thing 
End If 

注意Windows(1)總是意味着「活動視圖」。

編輯:重新閱讀問題,並看到你的意思是實際的打印預覽窗口。這是一個對話框Application.Dialogs(xlDialogPrintPreview)。這只是方法是.Show。但是,當該對話框打開時代碼不運行並不重要。它只會返回兩個值 - TrueFalse。所以True意味着東西被打印False意味着對話框被關閉而沒有打印。你可以通過做這樣的事情返回值:

dlgPrinted = Application.Dialogs(xlDialogPrintPreview).Show 
If dlgPrinted Then 
    Debug.Print "The worksheet was printed" 
Else 
    Debug.Print "The user closed print preview without printing." 
End If 
+0

感謝您的回答。 但它不會工作,因爲你也可以直接在工作表上查看分頁符(我仍然測試過)... – 2010-08-05 16:06:34

+0

@Julien V .:對不起,我誤解了這個問題。請參閱上面的更新。 – 2010-08-05 16:22:51

+0

再次感謝您的快速回答,但我不確定這是我要找的。 據我瞭解,您的代碼將啓動打印預覽,並告訴我們用戶用它做了什麼。 我需要的是能夠在任何時候知道用戶是否真的看到了打印預覽窗口。 PS:我正在使用vb.net和VSTO,所以代碼在打印預覽時正在運行... – 2010-08-05 16:38:20