PrtDevMode プロパティ

対象

Form オブジェクト

Report オブジェクト

[印刷] ダイアログ ボックスでフォームまたはレポートに対して指定された、印刷のためのデバイス モードの情報を示します。値の取得および設定が可能です。バリアント型 (Variant) の値を使用します。

expression.PrtDevMode

expression 必ず指定します。このトピックの [対象] の一覧のオブジェクトのうちの 1 つを返すオブジェクト式を指定します。

解説

PrtDevMode プロパティ、PrtDevNames プロパティ、および PrtMip プロパティの詳細については、『Win32 Software Development Kit』を参照してください。

PrtDevMode プロパティの設定値は、『Win32 Software Development Kit』で定義されている DEVMODE 構造体を複製する 94 バイトの構造体です。PrtDevMode プロパティのメンバの詳細については、『Win32 Software Development Kit』を参照してください。

PrtDevMode プロパティのメンバは次のとおりです。

メンバ

説明

DeviceName

最大 32 バイトの文字列で、ドライバがサポートする装置の名前を示します (たとえば、指定されたプリンタが Hewlett-Packard LaserJet IIISi の場合は、"HP LaserJet IIISi" が装置名です)。各プリンタ ドライバには、固有の文字列の名前が付いています。

SpecVersion

『Win32 Software Development Kit』の DEVMODE 構造体のバージョン番号を指定する整数データ型 の値です。

DriverVersion

プリンタ ドライバの開発者によって割り当てられたプリンタ ドライバのバージョン番号を指定する整数型 (Integer) の値です。

Size

DEVMODE 構造体のサイズをバイト数で指定した整数型 (Integer) の値です。この値には、この構造体の後に任意に続けることができる、装置独自のデータを格納する dmDriverData メンバのサイズは含まれません。データのデバイス依存の部分のみがアプリケーションによって操作される場合は、このメンバを使って、バージョンの違いを考慮せずに、構造体のサイズを調べることができます。

DriverExtra

装置独自のデータを格納するオプションの dmDriverData メンバのサイズを、バイト数で指定した整数型 (Integer) の値です。このメンバは、この構造体の後ろに続けることができます。装置独自の情報がアプリケーションによって使われない場合は、このメンバを 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

プリンタの解像度を指定する整数型 (Integer) の値です。指定できる値は 4 (高)、3 (中)、2 (低)、および 1 (ドラフト) です。

Color

整数型 (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

特定のモードの表示装置の周波数を hertz (秒あたりのサイクル数) で示す長整数型 (Long) の値です。


注: PrtDevMode プロパティを設定するには、Visual Basic for Applications (VBA) コードを使用します。

このプロパティは、デザイン ビューまたはレイアウト ビューで値の取得および設定が可能です。他のビューでは値の取得のみ可能です。

プリンタ ドライバによって、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
' レポートをデザイン ビューで開きます。
DoCmd.OpenReport rptName, acDesign
Set rpt = Reports(rptName)
If Not IsNull(rpt.PrtDevMode) Then
strDevModeExtra = rpt.PrtDevMode
' 現在の DEVMODE 構造体を取得します。
DevString.RGB = strDevModeExtra
LSet DM = DevString
If DM.intPaperSize = 256 Then
' ユーザー定義のサイズを表示します。
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
' 現在はユーザー定義のサイズではない場合の処理を指定します。
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
' 設定の変更が選択されました。フィールドを初期化します。
DM.lngFields = DM.lngFields Or DM.intPaperSize Or _
DM.intPaperLength Or DM.intPaperWidth
' カスタム ページを設定します。
DM.intPaperSize = 256
' 長さと幅を設定します。
DM.intPaperLength = InputBox("Please enter page length in inches.") * 254
DM.intPaperWidth = InputBox("Please enter page width in inches.") * 254
' プロパティを更新します。
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
' レポートをデザイン ビューで開きます。
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
' フィールドを初期化します。
If DM.intOrientation = DM_PORTRAIT Then
DM.intOrientation = DM_LANDSCAPE
Else
DM.intOrientation = DM_PORTRAIT
End If
' プロパティを更新します。
LSet DevString = DM
Mid(strDevModeExtra, 1, 94) = DevString.RGB
rpt.PrtDevMode = strDevModeExtra
End If
Set rpt = Nothing
End Sub
スキルを磨く
トレーニングの探索
新機能を最初に入手
Office Insider に参加する

この情報は役に立ちましたか?

ご意見をいただきありがとうございます。

フィードバックをお寄せいただき、ありがとうございます。Office サポートの担当者におつなぎいたします。

×