使用預設印表機的物件不繼承的印表機內容

文章編號: 290293 - 檢視此文章適用的產品。
進階: 須具備專家編碼、 互通性,與多使用者技能。

這份文件適用於 Microsoft Access 資料庫 (.mdb) 或 Microsoft Office Access 2007 資料庫 (.accdb)。本文也適用於 Microsoft Access 專案 (.adp)。
全部展開 | 全部摺疊

在此頁中

徵狀

以程式設計方式變更 Application.Printer 物件的屬性後,表單和報表使用預設印表機不會自動繼承這些設定。

發生的原因

儲存的表單和報表儲存為其定義的一部份的 [印表機資訊]。當您預覽,或儲存的表單和報表列印時這些物件會使用印表機資訊,代替從 Application.Printer 物件繼承設定值儲存在它們。

解決方案

有兩個可能的解決方法,以強制該報表以供目前的印表機設定。

Microsoft 僅,為了說明提供程式設計範例,不提供任何明示或默示的保證。這包括,但不限於適售性或適合某特定用途之默示擔保責任。本文假設您已熟悉使用我們所示範的程式設計語言以及建立和偵錯程序所使用的工具。Microsoft 技術支援工程師可以協助解釋特定程序的功能,但它們不會修改這些範例以提供附加功能或建構程序,以符合您特定需求。

將 [印表機] 屬性設定為 [Application.Printer

自訂 Application.Printer 物件的屬性之後 Application.Printer 物件會將 [表單或報表的 印表機 屬性的設定。這會強制在表單或報表來摧毀它目前的 DEVMODE 結構,以及繼承一個新從 Application.Printer 物件。

請注意這種方法適合暫時變更物件的印表機內容。印表機設定不會儲存與物件,除非您明確地儲存物件之後。 這也會造成設已開啟的時間內 指定印表機 物件。

如果要將物件的 [印表機] 屬性設定為 [Application.Printer 物件,請依照下列步驟執行:
  1. 開啟範例資料庫 Northwind.mdb。
  2. 它出現時,請關閉 [切換表單]。
  3. 按下 ALT + F11 以開啟 Visual Basic 編輯器。
  4. 插入] 功能表上按一下 [模組]。
  5. 將下列 Visual Basic 應用程式程式碼加入至新的模組:
    Sub ChangePrinterSettingsForReport()
       Dim rpt As Access.Report
       Dim prtr As Access.Printer
       
       Set Application.Printer = Nothing
       Set prtr = Application.Printer
       
       'Set the default printer's orientation to landscape
       prtr.Orientation = acPRORLandscape
    
       'Set the default printer's paper size to legal
       prtr.PaperSize = acPRPSLegal
    
       'Print Preview the Alphabetical List of Products Report
       DoCmd.OpenReport "Alphabetical List of Products", acPreview
       Set rpt = Reports("Alphabetical List of Products")
    
       'Set the Printer property of the report to the
       'Application.Printer object
       Set rpt.Printer = prtr
    
       'Uncomment the following line if you wish to save the object
       'with the current settings
       'DoCmd.Save acReport, rpt.Name
    
    End Sub
    					
  6. 按一下上述,範例程序中,然後按一下 [執行] 功能表上的 [執行 Sub/使用者表單
  7. 在 [檔案] 功能表上按一下 [關閉],Microsoft Access 的 [返回]。
  8. 在 Microsoft Office Access 2003 中或 Microsoft Access 2002 中,按一下的 [版面設定 [檔案] 功能表,然後按一下 [版面] 索引標籤。

    在 Microsoft Office Access 2007 中按一下 [Microsoft Office 按鈕,並指向 [列印,然後按一下 [預覽列印]。在 [預覽列印] 索引標籤上按一下 [頁面版面配置] 群組中的 [版面設定],然後按一下 [版面] 索引標籤。

    請注意報表的 紙張大小 設定為 法律列印方向] 設定為 [橫印
  9. 關閉報表。
  10. 在 [資料庫] 視窗中預覽列印產品] 報表的依字母次序清單一次。請注意印表機設定未自動儲存與報表。

直接指派物件的印表機設定

另一個解決方法是以程式設計方式設定物件本身,代替設定為 Application.Printer 屬性的印表機設定。設定物件的 印表機 屬性的個別屬性是使用者手動變更 [版面設定] 對話方塊內的印表機設定類似。當您以程式設計方式設定物件的印表機設定直接時,該設定會自動儲存與物件。

如果要直接設定物件的印表機設定,請依照下列步驟執行:
  1. 開啟範例資料庫 Northwind.mdb。
  2. 它出現時,請關閉 [切換表單]。
  3. 按下 ALT + F11 開啟 Visual Basic 編輯器。
  4. 插入] 功能表上按一下 [模組]。
  5. 將下列 Visual Basic 應用程式程式碼加入至新的模組:
    Sub ChangePrinterSettingsForReport()
       Dim rpt As Access.Report
      
       DoCmd.OpenReport "Alphabetical List of Products", acPreview
       Set rpt = Reports("Alphabetical List of Products")
          
       'Set the default printer's orientation to landscape
       rpt.Printer.Orientation = acPRORLandscape
    
       'Set the default printer's paper size to legal
       rpt.Printer.PaperSize = acPRPSLegal
    End Sub
    					
  6. 按一下上述,範例程序中,然後按一下 [執行] 功能表上的 [執行 Sub/使用者表單
  7. 在 [檔案] 功能表上按一下 [關閉],Microsoft Access 的 [返回]。
  8. 在 [檔案] 功能表上按一下 [版面設定],然後按一下 [頁面] 索引標籤。

    在 Microsoft Office Access 2007 中按一下 [Microsoft Office 按鈕,並指向 [列印,然後按一下 [預覽列印]。在 [預覽列印] 索引標籤上按一下 [頁面版面配置] 群組中的 [版面設定],然後按一下 [版面] 索引標籤。

    請注意報表的 紙張大小 設定為 法律列印方向] 設定為 [橫印
  9. 關閉報表。
  10. 在 [資料庫] 視窗中預覽列印產品] 報表的依字母次序清單一次。請注意與報表已自動儲存印表機設定。

狀況說明

這種行為是經過設計規劃的。

其他相關資訊

表單和報表儲存為其定義的一部份命名 DEVMODE 結構。DEVMODE 結構是一種 Microsoft Windows 結構定義特定物件的印表機資訊。比方說例如紙張大小、 紙張的紙匣及方向的項目都會儲存成此結構的一部分。當您建立新表單或報表物件時,表單或報表物件會自動從 Application.Printer 物件繼承 DEVMODE 結構。儲存表單或報表時取得儲存自動繼承 DEVMODE 結構。

預設情況下,Application.Printer 物件的 [印表機] 屬性會設為預設印表機,在 Microsoft Windows 內相同。但是,它有可能以程式設計方式變更這些屬性,讓 Microsoft Access 都會使用不同的屬性集的預設印表機。資料表、 查詢、 檢視表和預存程序請不要為其定義的一部份儲存印表機的資訊。因此列印資料表、 查詢、 檢視表或預存程序時它們通常會用目前 Application.Printer 物件中定義的設定。

重製行為的步驟

  1. 在 Access 2003,或在 Access 2002,開啟範例資料庫 Northwind.mdb。
  2. 它出現時,請關閉 [切換表單]。
  3. 在 [檢視] 功能表上指向 [資料庫物件,然後按一下 [報表]。
  4. 按一下在 [資料庫] 視窗中的 [產品清單] 報表,然後在 [檔案] 功能表上按一下 [版面設定]。
  5. 按一下 [頁面] 索引標籤,並確定在對話方塊的 [印表機] 區段下已選取 [預設的印表機] 選項。
  6. 按一下 [確定] 以關閉 [版面設定] 對話方塊。
  7. 插入] 功能表上按一下 [模組]。
  8. 將下列 Visual Basic 應用程式程式碼加入模組:
    Sub ChangePrinterSettings()
       'Set the default printer's orientation to landscape
       Application.Printer.Orientation = acPRORLandscape
    
       'Set the default printer's paper size to legal
       Application.Printer.PaperSize = acPRPSLegal
    End Sub
    					
  9. 按一下上述,範例程序中,然後按一下 [執行] 功能表上的 [執行 Sub/使用者表單
  10. 在 [檔案] 功能表上按一下 [關閉],Microsoft Access 的 [返回]。
  11. 在 [檢視] 功能表上指向 [資料庫物件,然後按一下 [查詢]。
  12. 按一下 [產品清單] 查詢,然後在 [檔案] 功能表上按一下 [預覽列印]
  13. 在 [檔案] 功能表上按一下 [版面設定]。
  14. 按一下 [版面] 索引標籤,[方向] 選項設定為 [橫向,且 [紙張大小] 選項設定為 法律 如預期般的筆記。
  15. 按一下 [取消] 以關閉 [版面設定] 對話方塊,然後再關閉 [查詢]。
  16. 在 [檢視] 功能表上指向 [資料庫物件,然後按一下 [報表]。
  17. 在 [資料庫] 視窗中按一下 [產品清單] 報表,然後按一下 [預覽]。
  18. 在 [檔案] 功能表上按一下 [版面設定]。
  19. 按一下 [版面] 索引標籤,便箋 方向 選項設定為 直向紙張大小] 選項設定為 信件,而此兩者的差別 Application.Printer 物件所做的設定。

屬性

文章編號: 290293 - 上次校閱: 2007年4月10日 - 版次: 7.1
這篇文章中的資訊適用於:
  • Microsoft Office Access 2007
  • Microsoft Office Access 2003
  • Microsoft Access 2002 Standard Edition
關鍵字:?
kbmt kbappnote kbprogramming kbvba kbactivation kbprb kbprint KB290293 KbMtzh
機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:290293
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。

提供意見