Microsoft Access 2002 でのプリンタ設定のプログラミングMark Roberts 日本語版最終更新日 2001 年 6 月 8 日 概要 : この記事では、新しい Printers コレクションと Printer オブジェクトを使って、Access Version 2002 でプログラムからプリンタ設定を変更する方法を説明しています。 目次 はじめに はじめに以前のバージョンの Access で、プログラムからフォームとレポートのプリンタ設定を取得し、それを使って作業する唯一の方法は、PrtDevMode プロパティ、PrtDevNames プロパティ、および PrtMip プロパティを使用することでした。さらに、これらのプロパティはフォームまたはレポートがデザイン ビューで開かれているときのみ利用できました。PrtDevMode プロパティと PrtDevNames プロパティは、プリンタ設定に関する情報を提供するために Microsoft Windows® が内部的に使用する DEVMODE データ構造体と DEVNAMES データ構造体のコピーを使って機能します。PrtMip プロパティは、プリンタ設定がデータベース オブジェクトと共に保存されるとき、Access がフォームやレポートと共に格納するデータ構造体を使って機能します。これらのプロパティは高度な詳細や制御を提供しますが、作業のために標準の Visual Basic® オブジェクト モデルを提供するのではなく、各プロパティはコードで注意深く解析する必要のあるバイトの単一配列としてすべてのメンバを返すので、使用するのは困難です。これらのプロパティも依然としてサポートされていますが、プリンタ設定を使って作業する場合に、より最適なオブジェクト モデルを用意して欲しいという開発者の要請に応えて、Access Version 2002 ではプリンタ情報の取得および設定のためにプロパティの豊富なセットを持つ新しい Printers コレクションと Printer オブジェクトを提供します。これらのプロパティを使った作業は、PrtDevMode、 PrtDevNames、および PrtMip プロパティを使用するよりもはるかに簡単になっています。 さらに、PrtDevMode、PrtDevNames、および PrtMip プロパティは、フォームまたはレポートがデザイン ビューで開かれているときにしか利用できないので、.mde または .ade ファイルとして保存された Access アプリケーションまたは Access ランタイム アプリケーションからはこれらのプロパティは使用できません。これらのファイルの種類は、デザイン ビューで開かれているフォームやレポートをサポートしません。しかし、新しい Printers コレクションと Application.Printer オブジェクトは、Access またはデータベース アプリケーションがすべてのデータベース オブジェクトの通常使うプリンタの設定を使って作業するように開かれているときは常に利用できます。また、フォームやレポートの Printer オブジェクトはすべてのビューで使用できます。 Printers コレクションApplication オブジェクトの Printers コレクションには、現在システムにインストールされている各プリンタを表す Printer オブジェクトが含まれています。 次の表は、Printers コレクションに対して使用できるプロパティをまとめたものです。
Application オブジェクトの Printers プロパティを使用して、 Printers コレクションを返します。その後 For Each...Next ステートメントを使用して、Printers コレクション内の各 Printer オブジェクトを列挙できます。ダウンロードした PrinterDemo.mdb サンプル ファイルの frmPrinter の Open イベントから抜粋した以下のコードは、For Each...Next ステートメントと新しい AddItem メソッドを使用して、インストールされているプリンタのリストを cboPrinter コンボ ボックスに設定しています。 Dim prt As Printer
...
For Each prt In Application.Printers
Me!cboPrinter.AddItem Item:=prt.DeviceName
Next prt
以下の構文形式のいずれかを使用して、Printers コレクション内の特定の Printer オブジェクトへの参照を返すことができます。
コードを使って、Printers コレクションに Printer オブジェクトを追加または削除できません。Printer オブジェクトは、ユーザーまたはユーザーのシステムがプリンタをインストールするたびに Printers コレクションに追加されます。同様に、ユーザーがシステムからプリンタを削除したときに、Printer オブジェクトが Printers コレクションから削除されます。 以下の表は、現在のシステムで利用できるプリンタに関する情報を返すために使用できる Printer オブジェクトのプロパティをまとめたものです。これらのプロパティはすべて読み取り専用です。
Printer オブジェクトの残りのプロパティの一覧については、この記事の最後にある「Printer プロパティの補足事項」を参照してください。 Printer オブジェクトPrinters コレクションの Printer オブジェクトを使って作業する以外に、 Printer オブジェクトを Application オブジェクトから、および Form オブジェクトと Report オブジェクトから直接使用できます。Application オブジェクトからの Printer オブジェクトを使って作業することにより、アプリケーション全体が通常使うプリンタの設定を取得でき、現在のセッションが通常使うプリンタの設定を一時的にオーバーライドできます。Form オブジェクトおよび Report オブジェクトからの Printer オブジェクトを使って作業することにより、フォームやレポートが通常使うプリンタの設定を一時的または永久的にオーバーライドできます。 Application Printer オブジェクトApplication オブジェクトの Printer オブジェクトを使って、Access アプリケーションが通常使うプリンタの設定を取得または設定できます。これらのプリンタの設定は、テーブルやクエリのデータシート、デザイン ビューのマクロやモジュール、Access プロジェクト .adp ファイルのデータベース ダイアグラムなど、アプリケーションで印刷可能なすべてのオブジェクトに影響します。さらに、特に指定しない限り、すべてのフォームとレポートも通常使うプリンタの設定を使用します。フォームまたはレポートが通常使うプリンタの設定を使用しているかどうかを判断する方法、およびこれらの設定をオーバーライドする方法の詳細については、この記事の後半の「Form と Report Printer オブジェクト」を参照してください。 システム情報および通常使うプリンタの設定を読み取る構文は以下のとおりです。 Application.Printer.PrinterProperty この構文で、PrinterProperty は Printer オブジェクトの任意の有効なプロパティです。 たとえば、以下のコードは DeviceName プロパティを使用して、現在の通常使うプリンタの名前を返します。 Application.Printer.DeviceName 注意 システムにプリンタがインストールされていない場合に、コードが Application.Printer オブジェクトを参照すると、Access は以下のエラー メッセージを返します。 実行時エラー '2205': 通常使うプリンタ用のプリンタ ドライバが正しくセットアップされていません。 既定では、Application.Printer オブジェクトの LeftMargin、 RightMargin、TopMargin、BottomMargin、DataOnly、 ItemsAcross、RowSpacing、ColumnSpacing、 DefaultSize、ItemSizeWidth、ItemSizeHeight、および ItemLayout プロパティは通常 0 を返します。これは、これらの値が Windows DEVMODE および DEVNAMES データ構造体の一部としてプリンタ ドライバから利用できないためです。ただし、これらの値はフォームとレポートと共にのみ保存される Access 固有の MIPS データ構造体の一部です。Application.Printer オブジェクトのこれらの値は設定可能で、これらの値が適用される任意のデータベース オブジェクトの印刷に影響します。さらに、プリンタ設定がフォームまたはレポートと共に保存された場合は、対応するフォームまたはレポートの Form オブジェクトまたは Report オブジェクトの Printer オブジェクトからこれらの値を読み取ることができます。 Application Printer オブジェクトの設定のオーバーライドAccess のセッションを最初に起動したときは、Windows の通常使うプリンタを使用します。Application. Printer オブジェクトに変更を加えない限り、Access は引き続き Windows の通常使うプリンタを使用し、プリンタ設定が保存されているフォームとレポートを除いて、すべての印刷可能なデータベース オブジェクトに対してこの設定が使われます。以下の構文を使用して、現在のセッション中に Application.Printer オブジェクトの読み取り/書き込みのプロパティ設定を一時的にオーバーライドできます。 Application.Printer.PrinterProperty = PropertyValue この構文で、PrinterProperty は現在のプリンタに適用可能な Printer オブジェクトの任意の読み取り/書き込みプロパティです。PropertyValue は、現在のプリンタの任意の有効な設定です。設定可能なプロパティは、DeviceName、 DriverName、または Port プロパティ以外のすべてのプロパティです。これらの Printer プロパティの要約は、この記事の後半の「 Printer プロパティの補足事項」を参照してください。 Application.Printer オブジェクトを Windows の通常使うプリンタ以外のプリンタに切り替える場合、またはいくつかのプロパティ設定を一度に変更する場合、以下の構文を使用して、Application.Printer オブジェクトを設定することにより、これを行うことができます。 Set Application.Printer = PrinterObject PrinterObject は、オーバーライドするプロパティが設定されている Printer オブジェクト変数、または切り替えるプリンタの Printer オブジェクトを返す式です。たとえば、ダウンロードした PrinterDemo.mdb サンプル内の frmPrinter 上の cmdChangeDefaultPrt ボタンの Click イベントからの以下のコードは、通常使うプリンタをユーザーが cboPrinter コンボ ボックスから選択したプリンタに切り替えます。 Dim prt As Printer ' 選択したプリンタの Printer オブジェクトを取得します。 Set prt = Application.Printers(Me!cboPrinter.Value) ' 選択したプリンタをこのセッションで通常使うプリンタとして設定します。 Set Application.Printer = prt このコードを実行後、通常使うプリンタを使用していた任意のデータベース オブジェクトの印刷要求は、選択したプリンタに印刷されます。 Application Printer 設定の保存と復元Application.Printer オブジェクトの設定をオーバーライドし、この設定を再度変更しない場合、Application オブジェクトが有効な間はこれらの設定がそのまま使用されます。つまり、これらの設定はコードが Application オブジェクトの Quit メソッドを呼び出すまで、またはユーザーが Access の現在のセッションを終了するまで有効です。現在のセッション内で Windows の通常使うプリンタの設定と一致するように Application.Printer オブジェクトのすべての設定を復元する場合は、Application.Printer に Nothing を設定します。 Application.Printer = Nothing または、以下のコードで示すように、設定を変更する前に Application.Printer オブジェクトの設定をパブリックの Printer オブジェクト変数に保存しておくことによりその設定に復元できます。 Public prtOriginalPrinter as Printer Sub cmdUsePrinter_Click() ' 元のプリンタをグローバル変数に保存します。 prtOriginalPrinter = Application.Printer ' プリンタを切り替えます。 Set Application.Printer = _ Application.Printers(cboPrinters.Value) End Sub コードの適切な位置で、以下のコードを使用してアプリケーションのプリンタの設定を元の値にリセットできます。 Application.Printer = prtOriginalPrinter 重要 Application.Printer オブジェクトまたはその他の Access コードを使用して、 Access で通常使うプリンタを永久的に変更することはできません。ユーザーが Access のセッションを起動するとき、またはコードで Access Application オブジェクトを作成するとき、常に Windows の通常使うプリンタがそのセッションの通常使うプリンタになります。ただし、通常使うプリンタとプリンタの設定をオーバーライドでき、以下の「Form と Report Printer オブジェクト」セクションで説明するように、特定のフォームやレポートにこれらの設定を保存できます。 Form と Report Printer オブジェクトForm オブジェクトと Report オブジェクトに関連付けられた Printer オブジェクトは、Application.Printer オブジェクトと同じプロパティとプログラミング技法をサポートします。特定のフォームまたはレポートのプリンタ設定を取得または設定するときに、Form または Report オブジェクトの Printer オブジェクトを使用します。フォームとレポートのプリンタ設定を一時的に変更できます。また、これらの設定をフォームやレポートと共に保存できます。 以下のコードは、[印刷プレビュー] で [Customer Labels] レポートを開き、そのレポートのプリンタを Label Printer という名前のプリンタに設定します。 Dim rpt As Report DoCmd.OpenReport ReportName:="Customer Labels", View:=acViewPreview Set rpt = Reports("Customer Labels") rpt.Printer = Application.Printers("Label Printer") 重要 Access Version 2002 では、レポートの Activate イベントで実行しているイベント プロシージャ コードからレポートが開かれているとき、レポートのプリンタ設定を変更できますが、これは行わないでください。レポートを開いているときに起動されたイベントからプリンタの設定が変更された場合、Access はレポートのレイアウトをやり直す機能を現在持っていません。このため Open イベントなど、その他すべてのレポート イベントからレポートのプリンタ設定の変更を試みると実行時エラーが返ります。レポートのプリンタ設定を変更するためには、プリンタの設定を変更し、レポートを印刷する前に、[印刷プレビュー] やデザイン ビューでレポートを開いているのとは別のフォームやモジュールで実行されるコードを使用する必要があります。 また、印刷が開始された後に、フォームやレポートのプリンタのプロパティを変更することもできません。これを試みると以下の実行時エラーが表示されます。 実行時エラー '2191': 印刷が開始した後は、Printer プロパティを設定することはできません。 フォームやレポートと共にプリンタの設定を保存するフォームやレポートがアプリケーションが通常使うプリンタの設定 (Application.Printer オブジェクトが管理する設定) を使用するかどうかは、そのフォームやレポートが以前にプリンタの設定を保存していたかどうかによって決まります。フォームやレポートのプリンタ設定は次の 2 つの方法で保存できます。
frmPrinters フォームの cmdSaveSettings ボタンの Click イベントからの以下のコードは、現在プレビューされているレポートの設定を保存します。 If CurrentProject.AllReports(Me!lstSelectReport).IsLoaded Then ' プレビューされているレポートの設定を読み込みます。 With Reports(Me!lstSelectReport).Printer .PaperSize = modPrinters.GetPaperSize(Me) .PaperBin = modPrinters.GetPaperBin(Me) .Orientation = Me!fraOrientation End With ' 設定をレポート共に保存します。 DoCmd.Save ObjectType:=acReport, ObjectName:=Me!lstSelectReport Else MsgBox "まず、レポートをプレビューしてください。" End If 注意 プリンタの設定がフォームやレポート共に保存されるとき、Access はそのフォームやレポート用に保存する設定を保持する新しいデータ構造体を作成します。この新しいデータ構造体は、初期値として通常使うプリンタのすべての設定のコピーを持ちます。ユーザーまたはコードがオーバーライドする任意の設定がこのデータ構造体に保存されます。Access は、通常使うプリンタの設定とフォームやレポートと共に保存された設定間でどのような種類の継承も管理しません。フォームやレポートの設定を保存した後に、通常使うプリンタの設定を変更しても、フォームやレポートに保存されている設定が有効になったままです。 フォームやレポートがプリンタの設定を保存したかどうかを調べるフォームやレポートがプリンタの設定を保存したかどうかを調べるために、次の構文を使用して、Form または Report オブジェクトの UseDefaultPrinter プロパティを読み取ることができます。 expression.UseDefaultPrinter expression は、Form または Report オブジェクトを返す式です。UseDefaultPrinter プロパティはデザイン ビューで読み取り/書き込みを行えますが、その他のビューではすべて読み取り専用です。 UseDefaultPrinter プロパティはブール値を返します。プリンタの設定が変更されておらず、フォームやレポートと共に保存されていない場合は True を返します。プリンタの設定がフォームやレポートと共に保存されている場合は False を返します。 保存されているプリンタ設定の消去UseDefaultPrinter プロパティの値を True に設定することにより、フォームやレポートから保存されている設定を消去するメソッドのように UseDefaultPrinter プロパティを使用できます。これは、[ページ設定] ダイアログ ボックスを開き、[ページ] タブで [通常使うプリンタ] を選択することと等価です。 フォームやレポートがデザイン ビューで開かれているときのみ、UseDefaultPrinter プロパティを設定できます。ダウンロードした PrinterDemo.mdb サンプルの ClearFormReportSettings プロシージャからの以下のコードは、現在のプロジェクトの各レポートを開き、設定が保存されているすべてのレポートの設定を消去します。 For Each obj In CurrentProject.AllReports DoCmd.OpenReport ReportName:=obj.Name, View:=acViewDesign If Not Reports(obj.Name).UseDefaultPrinter Then Reports(obj.Name).UseDefaultPrinter = True DoCmd.Save ObjectType:=acReport, ObjectName:=obj.Name End If DoCmd.Close Next obj 注意 デザイン ビュー以外のビューでフォームやレポートの UseDefaultPrinter プロパティの設定を試みると、Access は "馴染みのある" Access エラーではなく、以下のオートメーション エラーを返します。 実行時エラー '-2147467259 (80004005)': オブジェクト '<フォームまたはレポート名>' のメソッド 'UseDefaultPrinter' が失敗しました Form と Report Printer の設定の保存オブジェクトがデザイン ビュー以外の任意のビューにあるときに、プログラムからフォームやレポートのプリンタ プロパティの設定を変更すると、ユーザーが対話的にフォームやレポートを閉じる場合に、これらの変更は自動的に保存されます。ダウンロードした PrinterDemo.mdb サンプルの modPrinters モジュールからの以下のコード サンプルは、レポートのプリンタ設定を保存し、復元する方法を示しています。 Sub RestoreReportPrinter() Dim rpt As Report Dim prtOld As Printer Dim prtNew As Printer ' [印刷プレビュー] で Invoice レポートを開きます。 DoCmd.OpenReport ReportName:="Invoice", View:=acViewPreview ' rpt 変数を初期化します。 Set rpt = Reports!Invoice ' レポートの現在のプリンタ設定を prtOld 変数に ' 保存します。 Set prtOld = rpt.Printer ' レポートの現在のプリンタ設定を prtNew 変数に ' 読み込みます。 Set prtNew = rpt.Printer ' レポートの Orientation プロパティを変更します。 prtNew.Orientation = acPRORLandscape ' その他の Printer プロパティを変更し、印刷または ' その他の操作をここで実行します。 ' 以下のコード行をコメントにし、ユーザーが対話的に ' レポート プレビューを閉じると、レポートの Printer ' オブジェクトに対して行われたすべての変更は、 ' レポートが閉じられるときに保存されます。 Set rpt.Printer = prtOld ' 保存しないで、レポートを閉じます。 DoCmd.Close ObjectType:=acReport, ObjectName:="Invoice", Save:=acSaveNo End Sub プリンタ機能の取得Printers コレクションと Printer オブジェクトは、プリンタの設定を取得または設定できるだけです。サポートしている用紙の種類や給紙トレイなどの、プリンタの機能を調べるには、Windows API DeviceCapabilities 関数を呼び出す必要があります。これについてここで詳しく説明することはこの記事の対象範囲外です。しかし、ダウンロードした PrinterDemo.mdb サンプルの modPrinters モジュールの以下のコード サンプルに、プリンタがサポートしている給紙トレイの ID を取得する方法を示しています。 ' DeviceCapabilities 関数 API 呼び出しの宣言。 Private Declare Function DeviceCapabilities Lib "winspool.drv" _ Alias "DeviceCapabilitiesA" (ByVal lpsDeviceName As String, _ ByVal lpPort As String, ByVal iIndex As Long, lpOutput As Any, _ ByVal lpDevMode As Long) As Long ' DeviceCapabilities 関数の定数。 Private Const DC_BINNAMES = 12 Private Const DC_BINS = 6 Private Const DEFAULT_VALUES = 0 Sub GetBinList(strName As String) Dim lngBinCount As Long Dim lngCounter As Long Dim hPrinter As Long Dim strDeviceName As String Dim strDevicePort As String Dim strBinNamesList As String Dim strBinName As String Dim intLength As Integer Dim strMsg As String Dim aintNumBin() As Integer ' 通常使うプリンタの名前とポートを取得します。 strDeviceName = Application.Printers(strName).DeviceName strDevicePort = Application.Printers(strName).Port ' プリンタがサポートする給紙トレイの数を取得します。 lngBinCount = DeviceCapabilities(lpsDeviceName:=strDeviceName, _ lpPort:=strDevicePort, _ iIndex:=DC_BINNAMES, _ lpOutput:=ByVal vbNullString, _ lpDevMode:=DEFAULT_VALUES) ' 給紙トレイの数で配列を再確保します。 ReDim aintNumBin(1 To lngBinCount) ' 各トレイ名を 24 バイトで受け取る変数をトレイ数分確保します。 strBinNamesList = String(Number:=24 * lngBinCount, Character:=0) ' プリンタがサポートする給紙トレイ名の文字列バッファ取得します。 lngBinCount = DeviceCapabilities(lpsDeviceName:=strDeviceName, _ lpPort:=strDevicePort, _ iIndex:=DC_BINNAMES, _ lpOutput:=strBinNamesList, _ lpDevMode:=DEFAULT_VALUES) ' プリンタがサポートする給紙トレイ番号の配列を取得します。 lngBinCount = DeviceCapabilities(lpsDeviceName:=strDeviceName, _ lpPort:=strDevicePort, _ iIndex:=DC_BINS, _ lpOutput:=aintNumBin(1), _ lpDevMode:=DEFAULT_VALUES) ' 使用できる給紙トレイ名を一覧します。 strMsg = "Paper bins available for " & strDeviceName & vbCrLf For lngCounter = 1 To lngBinCount ' 文字列バッファから給紙トレイ名を解析します。 strBinName = Mid(String:=strBinNamesList, _ Start:=24 * (lngCounter - 1) + 1, _ Length:=24) intLength = VBA.InStr(Start:=1, _ String1:=strBinName, String2:=Chr(0)) - 1 strBinName = Left(String:=strBinName, _ Length:=intLength) ' トレイ名と番号をメッセージ ボックスのテキスト文字列に追加します。 strMsg = strMsg & vbCrLf & aintNumBin(lngCounter) _ & vbTab & strBinName Next lngCounter ' 給紙トレイ番号と名前をメッセージボックスに表示します。 MsgBox Prompt:=strMsg End Sub 通常使うプリンタがサポートする用紙の一覧を取得するために、DeviceCapabilities API 関数を使用するコード サンプルを参照するには、ダウンロードした PrinterDemo.mdb サンプルの modPrinters モジュールの GetPaperList プロシージャをご覧ください。 Printer プロパティの補足事項この補足事項の表は、この記事の前半の「Printers コレクション」セクションで説明した DeviceName、DriverName、および Port プロパティを除く、 Printer オブジェクトのすべてのプロパティを説明しています。 注意 Printer オブジェクトのプロパティの効果は、プリンタの製造元が提供するドライバおよびプリンタがサポートする機能によって異なります。一部のプロパティ設定の効果がないことや異なるプロパティが同じ効果を持つこともあります。 以下の表は、指定したプリンタの出力設定を返すため、または設定するために使用できる Printer オブジェクトのプロパティをまとめたものです。
以下の表は、指定したプリンタの出力設定を返すため、または設定するために使用できる Printer オブジェクトのプロパティをまとめたものです。
|
Private Sub Report_Open(Cancel As Integer)
'MsgBox "レポート"
With Me.Printer
' Debug.Print "TopMargin = "
& .TopMargin
' Debug.Print "BottomMargin =
" & .BottomMargin
' Debug.Print "LeftMargin =
" & .LeftMargin
' Debug.Print "RightMargin =
" & .RightMargin
'
' Debug.Print "ColumnSpacing =
" & .ColumnSpacing
' Debug.Print "RowSpacing =
" & .RowSpacing
'
' Debug.Print "ColorMode = "
& .ColorMode
' Debug.Print "DataOnly = "
& .DataOnly
' Debug.Print "DefaultSize =
" & .DefaultSize
' Debug.Print "ItemSizeHeight =
" & .ItemSizeHeight
' Debug.Print "ItemSizeWidth =
" & .ItemSizeWidth
' Debug.Print "ItemLayout =
" & .ItemLayout
' Debug.Print "ItemsAcross =
" & .ItemsAcross
'
' Debug.Print "Copies = "
& .Copies
' Debug.Print "Orientation =
" & .Orientation
' Debug.Print "Duplex = "
& .Duplex
' Debug.Print "PaperBin = "
& .PaperBin
' Debug.Print "PaperSize = "
& .PaperSize
' Debug.Print "PrintQuality =
" & .PrintQuality
End Sub
Option Compare Database
Option Explicit
'http://support.microsoft.com/kb/210283/JA/
Type zwtDevModeStr
RGB As String * 94
End Type
Type zwtDeviceMode
dmDeviceName As String * 16
dmSpecVersion As Integer
dmDriverVersion As Integer
dmSize As Integer
dmDriverExtra As Integer
dmFields As Long
dmOrientation As Integer
dmPaperSize As Integer
dmPaperlength As Integer
dmPaperWidth As Integer
dmScale As Integer
dmCopies As Integer
dmDefaultSource As Integer
dmPrintQuality As Integer
dmColor As Integer
dmDuplex As Integer
dmResolution As Integer
dmTTOption As Integer
dmCollate As Integer
dmFormName As String * 16
dmPad As Long
dmBits As Long
dmPW As Long
dmDFI As Long
dmDRr As Long
End Type
Sub CustomPage(strPrt As String, dblTop As Double, dblBot As Double, dblLef
As Double, dblRig As Double, lonSiz As Long, lonSou As Long)
Dim DevString As zwtDevModeStr
Dim DM As zwtDeviceMode
Dim DevModeExtra As String
Dim rpt As Report
DoCmd.OpenReport strPrt, acViewDesign, , , acHidden
Set rpt = Reports(strPrt)
DevModeExtra = rpt.PrtDevMode
DevString.RGB = DevModeExtra
LSet DM = DevString
DM.dmPaperSize = lonSiz
'用紙設定
DM.dmDefaultSource = lonSou
'給紙設定
With rpt.Printer
.TopMargin = Round(dblTop * 56.7, 2)
'上余白
.BottomMargin = Round(dblBot * 56.7,
2) '下余白
.LeftMargin = Round(dblLef * 56.7, 2)
'左余白
.RightMargin = Round(dblRig * 56.7,
2) '右余白
End With
LSet DevString = DM
Mid$(DevModeExtra, 1, 68) = DevString.RGB
rpt.PrtDevMode = DevModeExtra
Set rpt = Nothing
DoCmd.Close acReport, strPrt, acSaveYes
End Sub
Private Sub ページヘッダーセクション_Format(Cancel As Integer, FormatCount As Integer)
With Me.Printer
Me.テキスト1 = _
"TopMargin = " & Round(.TopMargin / 56.7, 2) & vbCrLf & _
"BottomMargin = " & Round(.BottomMargin / 56.7, 2) & vbCrLf & _
"LeftMargin = " & Round(.LeftMargin / 56.7, 2) & vbCrLf & _
"RightMargin = " & Round(.RightMargin / 56.7, 2) & vbCrLf & _
"PaperBin = " & .PaperBin & vbCrLf & _
"PaperSize = " & .PaperSize
End With
End Sub