度々お世話になりっぱなしで申し訳ありません。
Access2003でPrtDevModeプロパティを使用して、
プリンタ名、用紙サイズ、印刷の向きを指定して印刷プレビューを
表示したいと思い、以下のサイトを参考に試しているのですが、
http://www.accessclub.jp/samplefile/samplefile_58.htm
プリンタ名と用紙サイズの指定方法がわかりません。
①宣言部分でプリンタ名を代入すると思われるstrDeviceNameに
"NEC Multiinpact 700XX"と代入したいのですが、変数の文字列幅が16桁
しかなくて足らないので、宣言部分を strDeviceName As String * 32 に
変更して代入すると"NEC Multiinpact 700XX "と32文字分を
代入してしまいます。
②用紙サイズの指定でヘルプを見たところ、A4などの標準的なものは
数値で代入できるのですが、今回は、15×8 インチ などの用紙サイズ
を指定したいのです。
この場合どのような値を代入してあげればよいでしょうか?
解決策をご存知の方お返事いただけると幸いです。
以下に主なコーディング部分を掲載させて頂きます。
Private Type str_DEVMODE
RGB As String * 94
End Type
Private Type type_DEVMODE
strDeviceName As String * 16
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 * 16
lngPad As Long
lngBits As Long
lngPW As Long
lngPH As Long
lngDFI As Long
lngDFr As Long
End Type
strDevModeExtra = rpt.PrtDevMode
DevString.RGB = strDevModeExtra
LSet Dm = DevString
With Dm
'印刷の向きを指定 します。
If strPRmuki = "T" Then
.intOrientation = 1 '縦
Else
.intOrientation = 2 '横
End If
.intPaperSize = ? ← 15×8インチにしたい
.strDeviceName = "NEC Multiinpact 700XX" ←空白を加えてしまう
End With
自己レスです。
・用紙サイズは、指定したいサイズをPrinterコレクションで
取得して、値を代入
・プリンタ名もPrintersコレクションで指定
で解決しました。
ご覧頂いた方ありがとうございました。
| ツイート |
|