PrtDevModeプロパティの使い方について

解決


れいこ  2006-01-27 17:06:54  No: 93856

度々お世話になりっぱなしで申し訳ありません。

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


れいこ  2006-01-27 22:21:31  No: 93857

自己レスです。
・用紙サイズは、指定したいサイズをPrinterコレクションで
  取得して、値を代入
・プリンタ名もPrintersコレクションで指定
で解決しました。
ご覧頂いた方ありがとうございました。


※作成する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。







   このエントリーをはてなブックマークに追加