各位大大晚安
新手又來發問了
我用SendKeys "^p"來預覽列印
但希望關閉預覽時畫面不停留在列印區工作表
而是回到資料區工作表
所以又加了其他指令
但這樣導致預覽看到的內容
不是我真正要列印的範圍
請問有什麼方法可解決呢?
例如讓程序在預覽畫面時先暫停
等跳開預覽時才繼續執行…之類的
附上我輸入的指令
'預覽列印
Sheets("列印區").Visible = True
Sheets("列印區").Select
Range("A1:F20").Select
Application.SendKeys "^p"
'預覽結束時回到資料區
Sheets("列印區").Visible = False
Sheets("資料區").Select
感謝前輩們的觀看與回覆
備註:
因為特殊原因
所以不使用PrintPreview
不要用sendkey 叫出列印視窗
改用Temp = Application.Dialogs(xlDialogPrint).Show
temp就是視窗回傳的結果
然後再根據結果看之後要怎麼處理
想要調用其它視窗的話可以參考這邊
https://docs.microsoft.com/en-us/office/vba/api/excel.xlbuiltindialog
謝謝giulian大的回覆
使用temp方式的話,只會跳出是否確定要列印的視窗
而不是預覽列印的畫面耶
這樣不是我要的結果,抱歉了
有試過
xlDialogPrintPreview
這個選項嗎
xlDialogPrintPreview的確會跳出預覽列印的畫面
但是跟用滑鼠選擇[電腦]→[列印]或用鍵盤按ctrl+p
看到的預覽列印是不一樣的畫面
因為有特殊原因 所以不用PrintPreview這種另開視窗的方式預覽
可以截個圖看一下你想停在那個畫面的列印預覽嗎?
可以唷 沒問題
謝謝您耐心的回覆
順便說一下excel2013之後的預覽列印好像都是這樣
這一塊的話比較麻煩這一塊是backstage,你需要兩個部分才能完成你要的功能
1.自訂一個新的Ribbon UI
2.把原本你想處理的動作綁定在backstage 的onHide事件上
下面是backstage onHide的範例
https://www.dropbox.com/s/nqogmawzyliq7n6/xl-backstage.xlam?dl=0
如果需要開其他功能選單的話你會需要這個
https://github.com/OfficeDev/office-custom-ui-editor
這樣的話好像變得稍微有點複雜耶
所以沒有像我舉例的那樣
先讓程序暫停
直到使用者按任意鍵
才開始下一動
或是直接固定住列印範圍
不會因為點了其他格
預覽列印就跑掉之類的方式
1.要暫停在你說的那個畫面就是只能改backstage的ui去包
2.如果是要用程式設定列印範圍的話是做得到的,
但你所謂的點了其他格會跑掉有沒有圖片或影片可以輔助說明一下
把相關的畫面截圖給您參考
↓這是資料區
↓這是列印區
目前指令是這樣
'設定列印範圍
Worksheets("列印區").PageSetup.PrintArea = "$A$1:$F$20"
'預覽列印
Application.SendKeys "^p"
'把畫面移回到資料區
Sheets("資料區").Select
但執行預覽列印後的畫面卻是這樣↓
請問是指令的部份下錯了嗎?
還是真的像您說的只能改backstage的ui去包?
有一個解套方式
新增一個UserForm,裡面做兩個按鈕
按鈕一設定列印範圍並呼叫backstage的列印畫面程式如下
'設定列印範圍
Worksheets("列印區").PageSetup.PrintArea = "$A$1:$F$20"
'預覽列印
Application.CommandBars.ExecuteMso "PrintPreviewAndPrint"
按鈕二 把畫面移回到資料區放這裡,順便關閉視窗
Sheets("資料區").Select
unload me
原本呼叫執行這段的地方改成
UserForm1.show false
若照您提供的方式
是不是使用者點了按鈕一後出現預覽列印的畫面
預覽畫面結束後 使用者要再自己點按鈕二
畫面才會回到資料區呢?
如果是的話 那想問看看有沒有方法
能在預覽畫面結束後(不管有無列印)
就自動跳回資料區
有一點很抱歉前面沒說明清楚
我本來就有一個預覽列印的按鈕是放在資料區
我的想法是當使用者按了按鈕後
程式自動選擇[列印區]的A1:F20
並出現預覽列印的畫面
若離開預覽則"自動"回到[資料區]
另外能否請您提供完整的程式呢?
因為像您上面回覆的最後一段就看不懂
不知道應該放在哪
我太新手了 一直困擾您(汗顏
其實都在上面了
連結是完整檔案,調用的順序改成開啟表單時,直接設定印表區域並開啟backstage,然後會出現自訂表單
表單只剩一個按鈕,按了之後會就直接將工作表移回資料區並關閉表單
你可以試試
https://www.dropbox.com/s/xtbndfuvkesks0m/sample1.xlsm?dl=0
感謝您幫了大忙
雖然跟理想的有點不同
但已是很好的結果了
謝謝giulian大