掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
ActiveReportにて印刷を行うと、「給紙トレイの設定サイズと違う用紙がセットされています」のエラーがでる (ID:103377)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
その用途だと、コモンダイアログコントロールは不向きです。 プリンタのデフォルト用紙設定を、事前に目的のものに変えて おくくらいしか出来ません。 API を使ってゴリゴリ書いていくしかなさそうです。 ちょっとさわりの部分だけ書いてみます。 Private Sub Command1_Click() Dim hPrinter As Long Dim nRet As Long Dim nSize As Long Dim lpDevMode As Long Dim pd As typPRINTDLG Dim dev As typDEVMODE ' PRINTDLG 構造体の初期化 With pd .lStructSize = Len(pd) .Flags = PD_PRINTSETUP End With ' プリンタオープン nRet = OpenPrinter(Printer.DeviceName, hPrinter, 0) ' 必要なサイズを求め、DEVMODE を取得 nSize = DocumentProperties(0, hPrinter, vbNullString, 0, 0, 0) pd.hDevMode = GlobalAlloc(GHND, nSize) lpDevMode = GlobalLock(pd.hDevMode) nRet = DocumentProperties(0, hPrinter, vbNullString, lpDevMode, 0, DM_OUT_BUFFER) ' VB の構造体にコピー Call CopyMemory(dev, ByVal lpDevMode, Len(dev)) ' プリンタクローズ nRet = ClosePrinter(hPrinter) ' VB の構造体を使って値をセット With dev .dmPaperSize = vbPRPSA3 '用紙をA3にする End With ' 実際の DEVMODE ヘ書き戻す Call CopyMemory(ByVal lpDevMode, dev, Len(dev)) nRet = GlobalUnlock(pd.hDevMode) nRet = PrintDlg(pd) ' VB の構造体にセット lpDevMode = GlobalLock(pd.hDevMode) Call CopyMemory(dev, ByVal lpDevMode, Len(dev)) nRet = GlobalUnlock(pd.hDevMode) nRet = GlobalFree(pd.hDevMode) MsgBox dev.dmPaperSize 'セットされた用紙を表示 End Sub
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.