Report.PrtDevMode プロパティ (Access)
[印刷] ダイアログ ボックスでフォームまたはレポートに指定された印刷デバイス モード情報を設定または返すには、PrtDevMode プロパティを使用します。 値の取得と設定が可能なバリアント型 (Variant) の値です。
構文
式。PrtDevMode
式Report オブジェクトを表す変数。
注釈
PrtDevMode、PrtDevNames、および PrtMip プロパティに関する完全なドキュメントについては、Win32 ソフトウェア開発キットを参照することを強くお勧めします。
PrtDevMode プロパティ設定は、Win32 Software Development Kit で定義されている DEVMODE 構造体を複製する 94 バイトの構造体です。 PrtDevMode プロパティ メンバーの詳細については、Win32 ソフトウェア開発キットを参照してください。
PrtDevMode プロパティのメンバーは次のとおりです。
メンバー | 説明 |
---|---|
DeviceName | ドライバーがサポートするデバイスの名前を指定する最大 32 バイトの文字列。たとえば、Hewlett-Packard LaserJet IIISi が指定されたプリンターの場合は"HP LaserJet IIISi" です。 各プリンター ドライバーでは、一意の文字列を持ちます。 |
SpecVersion | 『Win32 Software Development Kit』の DEVMODE 構造体のバージョン番号を指定する整数型 ( Integer ) の値です。 |
DriverVersion | プリンター ドライバーの開発者によって割り当てられたプリンター ドライバーのバージョン番号を指定する整数型 ( Integer ) の値です。 |
Size | DEVMODE 構造体のサイズをバイト数で指定した整数型 (Integer) の値です。 (この値には、この構造体に従うことができる、デバイス固有のデータのオプションの dmDriverData メンバーは含まれません)。アプリケーションがデータのドライバーに依存しない部分のみを操作する場合は、このメンバーを使用して、異なるバージョンを考慮することなく、この構造体の長さを確認できます。 |
DriverExtra | この構造体に従うことができる、デバイス固有のデータのオプションの dmDriverData メンバーのサイズをバイト単位で指定する整数。 アプリケーションがデバイス固有の情報を使用しない場合は、このメンバーを 0 に設定します。 |
Fields | DEVMODE 構造体の残りのメンバーのうち、初期化されているメンバーを示す長整数型 ( Long ) の値です。 |
Orientation | 用紙の方向を指定する整数型 ( Integer ) の値です。 1 (縦方向) または 2 (横方向) を指定できます。 |
PaperSize | 印刷する用紙のサイズを指定する整数型 ( Integer ) の値です。 このメンバーに 0 から 256 までを設定した場合は、用紙の長さと幅が、それぞれ PaperLength メンバーと PaperWidth メンバーによって指定されます。 それ以外の値を設定した場合は、PaperSize メンバーに、あらかじめ定義された値を設定できます。 使用可能な値については、 ここをクリックしてください。 |
PaperLength | 1/10 mm 単位で用紙の長さを示す整数型 ( Integer ) の値です。 独自の用紙サイズに対して、または多様な用紙サイズに印刷できるドット マトリックス方式のプリンターのような装置に対して PaperSize メンバーで指定された用紙の長さよりも、このメンバーの値が優先します。 |
PaperWidth | 1/10 mm 単位で用紙の幅を指定する整数型 ( Integer ) の値です。 PaperSize メンバーで指定された用紙の幅よりも、このメンバーの値が優先します。 |
Scale | 印刷の出力が縮小される因数を指定する整数型 ( Integer ) の値です。 見た目のページ サイズは、 scale /100 の率で実際のページ サイズから拡大縮小されます。 たとえば、Scale の値を 50 にした 8.5 x 11 インチのレター サイズの用紙には、出力されるテキストとグラフィックスが元の高さと幅の半分であるので、17 x 22 インチの用紙と同じ量のデータを含めることができます。 |
Copies | 印刷装置が複数ページの複写をサポートしている場合は、部数を示す整数型 ( Integer ) の値です。 |
DefaultSource | 用紙を送る既定のビンを指定する整数型 ( Integer ) の値です。 使用可能な値については、 ここをクリックしてください。 |
PrintQuality | プリンターの解像度を指定する 整数 です。 値は 4 (高)、3 (中)、2 (低)、1 (下書き) です。 |
色 | 整数型 ( Integer ) の値です。 カラー プリンターに対して、出力をカラーで印刷するかどうかを示します。 指定できる値は、1 (カラー) および 2 (モノクローム) です。 |
Duplex | 整数型 ( Integer ) の値です。 両面印刷できるプリンターに対して、出力が用紙の両面に印刷されるかどうかを示します。 指定できる値は、1 (片面)、2 (水平)、および 3 (垂直) です。 |
YResolution | プリンターの y 軸の解像度をインチあたりのドット数 (dpi) で指定する整数型 ( Integer ) の値です。 プリンターがこのメンバーを初期化する場合、PrintQuality メンバーは、プリンターの x 軸の解像度を dpi で示します。 |
TTOption | TrueType フォントがどのように印刷されるかを示す整数型 ( Integer ) の値です。 使用可能な値については、 ここをクリックしてください。 |
Collate | 印刷部数が複数ある場合に、照合を行う必要があるかどうかを示す整数型 ( Integer ) の値です。 データはプリンターに 1 回だけ送られるので、照合を行わない方が、速く、効率的に印刷できます。 |
FormName | 用紙のサイズを示す 16 字までの文字列です。たとえば、"レター" や "標準" があります。 |
Pad | 将来のバージョン用にスペース、文字、値などを埋めるために使う長整数型 ( Long ) の値です。 |
Bits | ディスプレイ装置のカラー解像度をピクセルあたりのビット数で示す長整数型 ( Long ) の値です。 |
PW | 表示装置の表面 (画面またはプリンター) の幅をピクセルで示す長整数型 ( Long ) の値です。 |
PH | 表示装置の表面 (画面またはプリンター) の高さをピクセルで示す長整数型 ( Long ) の値です。 |
DFI | 装置の表示モードを示す長整数型 ( Long ) の値です。 |
DFR | 特定のモードの表示装置の周波数をヘルツ (秒あたりのサイクル数) で示す長整数型 ( Long ) の値です。 |
このプロパティは、デザイン ビューでは値の取得および設定が可能です。他のビューでは値の取得のみ可能です。
プリンター ドライバーによって、DEVMODE 構造体の 94 バイトの直後に、装置独自のデータが追加されます。 したがって、前に解説した 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
サポートとフィードバック
Office VBA またはこの説明書に関するご質問やフィードバックがありますか? サポートの受け方およびフィードバックをお寄せいただく方法のガイダンスについては、Office VBA のサポートおよびフィードバックを参照してください。