Form.PrtDevMode プロパティ (Access)

[印刷] ダイアログ ボックスでフォームまたはレポートに指定された印刷デバイス モード情報を設定または返すには、PrtDevMode プロパティを使用します。 値の取得と設定が可能なバリアント型 (Variant) の値です。

構文

PrtDevMode

expressionForm オブジェクトを表す変数です。

注釈

PrtDevModePrtDevNames、および 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 のサポートおよびフィードバックを参照してください。