PrtDevMode 屬性

重要:  本文係由機器翻譯而成,請參閱免責聲明。本文的英文版本請見這裡,以供參考。

適用於

Form 物件

Report 物件

您可以使用 PrtDevMode 屬性設定或傳回在 [列印] 對話方塊中為表單或報表所指定的列印裝置模式資訊。可讀寫的 Variant

expression.PrtDevMode

expression 必要。會傳回 [適用於] 清單中其中一個物件的運算式。

備註

如需 PrtDevModePrtDevNamesPrtMip 屬性的完整文件,強烈建議您參閱 Win32 Software Development Kit。

PrtDevMode 屬性設定是一個 94 位元組的結構,對映 Win32 Software Development Kit 中定義的 DEVMODE 結構。如需 PrtDevMode 屬性成員的完整資訊,請參閱 Win32 Software Development Kit。

PrtDev 模式屬性會使用下列的成員。

成員

描述

DeviceName

字串,指定驅動程式所支援的裝置名稱,最多可以包含 32 個位元組。例如,如果 Hewlett-Packard LaserJet IIISi 是指定的印表機,則該字串為 "HP LaserJet IIISi"。每個印表機驅動程式所使用的字串都是唯一的。

SpecVersion

的整數,指定 Win32 軟體開發套件 DEVMODE 結構的版本號碼。

DriverVersion

整數,指定由印表機驅動程式開發者指定之印表機驅動程式的版本號碼。

Size

整數,以位元組為單位指定 DEVMODE 結構的大小 (此值並不包含特定裝置資料的選用 dmDriverData 成員,該成員可以採用此結構)。如果應用程式只處理與驅動程式無關的資料部分,則可以利用此成員找出該結構的長度,而不必考慮版本不同的問題。

DriverExtra

整數,以位元組為單位指定特定裝置資料之選用 dmDriverData 成員的大小,該成員可以採用此結構。如果應用程式並不使用特定裝置的資訊,可以將此成員設定為 0。

Fields

A初始化長指定哪些其餘成員 DEVMODE 結構中的值。

Orientation

整數,指定紙張的列印方向。它可以是 1 (縱向) 或 2 (橫向)。

PaperSize

整數,指定列印時使用的紙張大小。如果您將此成員設定為 0 或 256,則紙張的長度和寬度分別由 PaperLength 及 PaperWidth 成員指定。否則,可以將 PaperSize 成員設定為預先定義的值。

PaperLength

整數,以 1/10 公釐為單位指定紙張長度。此成員會覆寫由 PaperSize 成員指定的紙張長度,以用於自訂紙張大小或是可以在各類大小之紙張上列印的裝置,例如點陣印表機。

PaperWidth

整數,以 1/10 公釐為單位指定紙張寬度。此成員會覆寫由 PaperSize 成員指定的紙張寬度。

Scale

整數,指定列印輸出的縮放比例。顯示的頁面大小等於實體頁面大小乘以因數 (scale/100)。例如,一張規格為 8.5 英吋 * 11 英吋 (信紙大小) 的紙張,Scale 值為 50,則所包含的資料量相當於一張規格為 17 英吋 * 22 英吋的紙張所包含的資料量,這是因為輸出文字和圖形的長度及寬度都是原來的一半。

Copies

整數,指定列印份數,前提是列印裝置支援多份列印。

DefaultSource

整數,指定送紙所用的預設紙匣。

PrintQuality

整數,指定印表機的解析度。值為 -4 (高)、-3 (中)、-2 (低) 及 -1 (草稿)。

Color

整數,在彩色印表機上指定是否要將輸出以彩色列印。值為 1 (彩色) 及 2 (黑白)。

Duplex

整數,在可雙面列印的印表機上指定是否要將輸出列印到紙張的正反兩面。值為 1 (單工)、2 (水平) 及 3 (垂直)。

YResolution

整數,以每英吋點數 (dpi) 為單位指定印表機的 Y 解析度。如果印表機初始化此成員,則 PrintQuality 成員會以 dpi 為單位指定印表機的 X 解析度。

TTOption

整數,指定如何列印 TrueType 字型。

Collate

整數,指定在列印多份時是否應使用定序。如果不使用定序,則輸出會更快、更高效,因為僅需將資料傳送到印表機一次。

FormName

字串,指定要使用的紙張大小,最多可以使用 16 個字元,例如 "Letter" 或 "Legal"。

Pad

Long 值,用於替未來版本預先留出空間、字元或值。

Bits

Long 值,以每一像素位元數為單位指定顯示裝置的色彩解析度。

PW

Long 值,以像素為單位指定可見裝置介面 (例如螢幕或印表機) 的寬度。

PH

Long 值,以像素為單位指定可見裝置介面 (例如螢幕或印表機) 的高度。

DFI

Long 值,指定裝置的顯示模式。

DFR

Long 值,以赫茲 (每秒的週期數) 為單位指定在特定模式下顯示裝置的頻率。


附註: 您可以設定PrtDevMode屬性使用 Visual Basic for Applications (VBA) 程式碼。

此屬性設定在 [設計檢視] 或 [版面配置檢視] 中為可讀寫的,而在其他檢視中為唯讀。

印表機驅動程式可以加入嚴格採用 94 個位元組之 DEVMODE 結構的特定裝置資料。因此,上述 DEVMODE 資料最多不可以超過 94 個位元組。

只有可以匯出 ExtDeviceMode 函數的印表機驅動程式才能使用 DEVMODE 結構。

應用程式可以透過使用 DC_PAPERS、DC_PAPERSIZE 及 DC_PAPERNAMES 值呼叫 DeviceCapabilities 函數,來擷取印表機所支援的紙張大小和名稱。

在設定 TTOption 成員的值之前,應用程式應找出印表機驅動程式透過 DC_TRUETYPE 值呼叫 DeviceCapabilities 函數,以使用 TrueType 字型的方式。

範例

下列範例使用 PrtDevMode 屬性檢查報表之使用者定義的頁面大小:

Private Type str_DEVMODE
RGB As String * 94
End Type
Private Type type_DEVMODE
strDeviceName As String * 32
intSpecVersion As Integer
intDriverVersion As Integer
intSize As Integer
intDriverExtra As Integer
lngFields As Long
intOrientation As Integer
intPaperSize As Integer
intPaperLength As Integer
intPaperWidth As Integer
intScale As Integer
intCopies As Integer
intDefaultSource As Integer
intPrintQuality As Integer
intColor As Integer
intDuplex As Integer
intResolution As Integer
intTTOption As Integer
intCollate As Integer
strFormName As String * 32
lngPad As Long
lngBits As Long
lngPW As Long
lngPH As Long
lngDFI As Long
lngDFr As Long
End Type
Public Sub CheckCustomPage(ByVal rptName As String)
Dim DevString As str_DEVMODE
Dim DM As type_DEVMODE
Dim strDevModeExtra As String
Dim rpt As Report
Dim intResponse As Integer
' Opens report in Design view.
DoCmd.OpenReport rptName, acDesign
Set rpt = Reports(rptName)
If Not IsNull(rpt.PrtDevMode) Then
strDevModeExtra = rpt.PrtDevMode
' Gets current DEVMODE structure.
DevString.RGB = strDevModeExtra
LSet DM = DevString
If DM.intPaperSize = 256 Then
' Display user-defined size.
intResponse = MsgBox("The current custom page size is " & _
DM.intPaperWidth / 254 & " inches wide by " & _
DM.intPaperLength / 254 & " inches long. Do you want " & _
"to change the settings?", vbYesNo + vbQuestion)
Else
' Currently not user-defined.
intResponse = MsgBox("The report does not have a custom page size. " & _
"Do you want to define one?", vbYesNo + vbQuestion)
End If
If intResponse = vbYes Then
' User wants to change settings. Initialize fields.
DM.lngFields = DM.lngFields Or DM.intPaperSize Or _
DM.intPaperLength Or DM.intPaperWidth
' Set custom page.
DM.intPaperSize = 256
' Prompt for length and width.
DM.intPaperLength = InputBox("Please enter page length in inches.") * 254
DM.intPaperWidth = InputBox("Please enter page width in inches.") * 254
' Update property.
LSet DevString = DM
Mid(strDevModeExtra, 1, 94) = DevString.RGB
rpt.PrtDevMode = strDevModeExtra
End If
End If
Set rpt = Nothing
End Sub

下列範例顯示如何變更報表的列印方向。此範例會根據報表目前的列印方向,將其從縱向切換到橫向,或是從橫向切換到縱向。

Public Sub SwitchOrient(ByVal strName As String)
Const DM_PORTRAIT = 1
Const DM_LANDSCAPE = 2
Dim DevString As str_DEVMODE
Dim DM As type_DEVMODE
Dim strDevModeExtra As String
Dim rpt As Report
' Opens report in Design view.
DoCmd.OpenReport strName, acDesign
Set rpt = Reports(strName)
If Not IsNull(rpt.PrtDevMode) Then
strDevModeExtra = rpt.PrtDevMode
DevString.RGB = strDevModeExtra
LSet DM = DevString
DM.lngFields = DM.lngFields Or DM.intOrientation
' Initialize fields.
If DM.intOrientation = DM_PORTRAIT Then
DM.intOrientation = DM_LANDSCAPE
Else
DM.intOrientation = DM_PORTRAIT
End If
' Update property.
LSet DevString = DM
Mid(strDevModeExtra, 1, 94) = DevString.RGB
rpt.PrtDevMode = strDevModeExtra
End If
Set rpt = Nothing
End Sub

附註: 機器翻譯免責聲明︰本文係以電腦系統翻譯而成,未經人為介入。Microsoft 提供此等機器翻譯旨在協助非英語系使用者輕鬆閱讀 Microsoft 產品、服務及技術相關內容。基於本文乃由機器翻譯而成,因此文中可能出現詞辭、語法、文法上之錯誤。

擴展您的技能
探索訓練
優先取得新功能
加入 Office 測試人員

這項資訊有幫助嗎?

感謝您的意見反應!

感謝您的意見反應! 我們將協助您與其中一位 Office 支援專員連絡以深入了解您的意見。

×