PrtDevMode プロパティ

適用対象

Form オブジェクト

Report オブジェクト

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

expression.PrtDevMode

expression は必須です。[対象] の一覧のオブジェクトのうちの 1 つを返す式です。

解説

PrtDevModePrtDevNames、および PrtMip プロパティの詳細については、Win32 のソフトウェア開発キットを参照してください。

PrtDevMode プロパティの設定値は、Win32 のソフトウェア開発キットで定義されている DEVMODE 構造体を複製する 94 バイトの構造体です。PrtDevMode プロパティのメンバーの詳細については、Win32 のソフトウェア開発キットを参照してください。

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

メンバー

説明

DeviceName

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

SpecVersion

Win32 のソフトウェア開発キットの DEVMODE 構造体のバージョン番号を指定する整数型の値です。

DriverVersion

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

Size

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

DriverExtra

装置独自のデータを格納するオプションの dmDriverData メンバーのサイズを、バイト数で指定した整数型の値です。このメンバーは、この構造体の後に続けることができます。アプリケーションが装置独自の情報を使わない場合は、このメンバーは 0 に設定します。

Fields

DEVMODE 構造体の残りのメンバーのうち、初期化されているメンバーを示す長整数型の値です。

Orientation

用紙の方向を指定する整数型の値です。1 (縦方向) または 2 (横方向) を指定できます。

PaperSize

印刷する用紙のサイズを指定する整数型の値です。このメンバーに 0 から 256 までを設定した場合は、用紙の長さと幅は、それぞれ PaperLength メンバーと PaperWidth メンバーによって指定されます。それ以外の場合は、PaperSize メンバーに、あらかじめ値を定義できます。

PaperLength

1/10 mm 単位で用紙の長さを示す整数型の値です。このメンバーの値は、独自の用紙サイズに対して、または多様な用紙サイズに印刷できるドット マトリックス方式のプリンターなどの装置に対して PaperSize メンバーで指定した用紙の長さが優先されます。

PaperWidth

1/10 mm 単位で用紙の幅を指定する整数型の値です。PaperSize メンバーで指定された用紙の幅よりも、このメンバーが優先されます。

Scale

印刷の出力が拡大または縮小される係数を指定する整数型の値です。見た目のページ サイズは、scale/100 の係数で実際のページ サイズから拡大または縮小されます。たとえば、Scale の値を 50 にした 8.5 x 11 インチのレター サイズの用紙には、出力されるテキストとグラフィックスが元の高さと幅の半分であるので、17 x 22 インチの用紙と同じ量のデータを含めることができます。

Copies

印刷装置が複数ページの複写をサポートしている場合に、部数を示す整数型の値です。

DefaultSource

用紙を供給する既定の用紙トレイを示す整数型の値です。

PrintQuality

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

Color

整数型の値です。カラー プリンターに対して、出力をカラーで印刷するかどうかを示します。指定できる値は、1 (カラー) および 2 (モノクローム) です。

Duplex

整数型の値です。両面印刷できるプリンターに対して、出力が用紙の両面に印刷されるかどうかを示します。指定できる値は、1 (片面)、2 (水平)、および 3 (垂直) です。

YResolution

プリンターの y 軸の解像度をインチあたりのドット数 (dpi) で指定する整数型の値です。プリンターがこのメンバーを初期化する場合、PrintQuality メンバーは、プリンターの x 軸の解像度を dpi で示します。

TTOption

TrueType フォントがどのように印刷されるかを示す整数型の値です。

Collate

印刷部数が複数ある場合に、照合を行う必要があるかどうかを示す整数型値です。データはプリンターに 1 回だけ送られるので、照合を行わない方が、速く効率的に印刷できます。

FormName

用紙のサイズを示す 16 字までの文字列です。たとえば、"レター" や "標準" があります。

Pad

将来のバージョン用にスペース、文字、値などを埋めるために使う長整数型の値です。

Bits

ディスプレイ装置のカラー解像度をピクセルあたりのビット数で示す長整数型の値です。

PW

表示装置の表面 (画面またはプリンター) の幅をピクセルで示す長整数型の値です。

PH

表示装置の表面 (画面またはプリンター) の高さをピクセルで示す長整数型の値です。

DFI

装置の表示モードを示す長整数型の値です。

DFR

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


注: 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
' 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 Insider に参加する

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

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

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

×