Access 2003 のランタイムでMDEファイルとしてシステム稼働させたいと思います。印刷時、用紙設定やマージン設定をした上で印刷するようにしたいのですが、デザインモードが使用できないので動きません。B6サイズの伝票サイズの印刷がうまくできません。下記のプロシージャーを組んであります。ランタイムでうまく印刷する方法をご教示ください。
Public Sub SetCustomPage(rptName As String, MyPaperSize As Integer, MyOrientation As Integer, MySource As Integer, MyTop As Long, MyBot As Long, MyLeft As Long, MyRight As Long)
Dim DevString As str_DEVMODE
Dim DM As type_DEVMODE
Dim strDevModeExtra As String
Dim rpt As Report
Dim intResponse As Integer
Const DM_PAPERSIZE = &H2
Const DM_PAPERLENGTH = &H4
Const DM_PAPERWIDTH = &H8
' デザイン ビューでレポートを開きます。
DoCmd.OpenReport rptName, acDesign
Set rpt = Reports(rptName)
rpt.Visible = False
Call SetPageSize(rpt, MyPaperSize, MyOrientation, MySource) 'ページ設定:用紙サイズ、トレイ
Call SetMargins(rpt, MyTop, MyBot, MyLeft, MyRight) 'ページ設定:余白
Set rpt = Nothing
DoCmd.Close acReport, rptName, acSaveYes
End Sub
Private Sub SetPageSize(rpt As Report, MyPaperSize As Integer, MyOrientation As Integer, MySource As Integer)
Dim DevString As str_DEVMODE
Dim DM As type_DEVMODE
Dim strDevModeExtra As String
Dim intResponse As Integer
Const DM_PAPERSIZE = &H2
Const DM_PAPERLENGTH = &H4
Const DM_PAPERWIDTH = &H8
If Not IsNull(rpt.PrtDevMode) Then
strDevModeExtra = rpt.PrtDevMode
' 現在の DEVMODE 構造体を取得します。
DevString.RGB = strDevModeExtra
LSet DM = DevString
' 設定の変更が選択されました。
' フィールドを初期化します。
DM.lngFields = DM.lngFields Or DM_PAPERSIZE Or DM_PAPERLENGTH Or DM_PAPERWIDTH
DM.intPaperSize = MyPaperSize '指定の用紙サイズを設定します。A4かユーザー指定B6紙。
DM.intOrientation = MyOrientation
'PaperSizeが9ならA4サイズそれ以外は、B6サイズ
DM.intPaperLength = IIf(MyPaperSize = 256, 18.2, 29.7) * 100
DM.intPaperWidth = IIf(MyPaperSize = 256, 12.8, 21) * 100
'A4なら自動トレイ、それ以外なら手差しトレイ
DM.intDefaultSource = MySource '4:手差し、7:自動選択
LSet DevString = DM ' プロパティを更新します。
Mid(strDevModeExtra, 1, 94) = DevString.RGB
rpt.PrtDevMode = strDevModeExtra
End If
End Sub
Private Sub SetMargins(rpt As Report, MyTop As Long, MyBot As Long, MyLeft As Long, MyRight As Long)
Dim PrtMipString As str_PRTMIP
Dim PM As type_PRTMIP
PrtMipString.strRGB = rpt.PrtMip
LSet PM = PrtMipString
PM.xLeftMargin = CLng(MyLeft / 10 * 567) ' 余白を設定します。
PM.yTopMargin = CLng(MyTop / 10 * 567)
PM.xRightMargin = CLng(MyRight / 10 * 567)
PM.yBotMargin = CLng(MyBot / 10 * 567)
LSet PrtMipString = PM ' プロパティを更新します。
rpt.PrtMip = PrtMipString.strRGB
End Sub
No.1ベストアンサー
- 回答日時:
早速適切な情報を頂き有難う御座います。
Printerオブジェクトを使用すれば、レポートをデザインモードにすることなく、用紙設定、印刷方向、余白設定等を行えるということですね。
早速、試してみます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 数式が消える 1 2023/03/19 16:55
- Excel(エクセル) 【マクロ】スクショ印刷がうまく動かない件 5 2022/12/06 17:37
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Excel(エクセル) VBAの指示の内容 昨日こちらでご教示頂いたのですが初心者な為、一つ一つの指示が何をやっているのかわ 2 2022/10/25 18:08
- Visual Basic(VBA) VBAで質問ですが、皆さんはどの様に導き出しているのでしょうか? 6 2022/05/03 21:53
- Visual Basic(VBA) VBA 請求書自動作成 3 2022/04/24 01:58
- Visual Basic(VBA) 稀に1円合いません? Sheet1から金額と個数を貼り付ける下記コードで、金額を切り上げるコードを何 3 2022/09/05 15:11
- Visual Basic(VBA) VBA処理追加 こちらでご教示頂いたのですが回答完了させてしまいましたのでこちらからまた質問させてく 2 2022/10/27 09:57
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 6 2022/06/08 12:55
- Visual Basic(VBA) ①ExcelVBAでカレンダーを作り、別のユザーフォームで日付を入力したいのですがエラーになります。 1 2023/02/17 18:39
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ワードでA3用紙(方向横横書...
-
ワードで、B5を並べてB4で印刷...
-
ワード、一枚を二分割する方法
-
Adobe PDF A4縦2枚を A3横1枚...
-
Wordでつくった文字を熨斗袋の...
-
IllustratorでB1サイズの書類...
-
EXCELで漢字1文字をA3...
-
ワードのページ罫線の下が切れ...
-
Word2010縦書き文書(A4)を袋...
-
イラストレーターでの複数レイ...
-
イラストレーターでページを増...
-
Wordで見開き縦書き2段組
-
Wordで用紙に三つ折り用の線を...
-
WORDで常に用紙幅中央に縦...
-
A4用紙1ページ1000字にするには...
-
Inkscapeの縦向きの用紙を横向...
-
エクセルで特殊サイズの用紙を...
-
往復はがきに印刷したいのに・・
-
Wordを使って…
-
ワードで紙の向きを横にしたい...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ワードでA3用紙(方向横横書...
-
Adobe PDF A4縦2枚を A3横1枚...
-
ワード、一枚を二分割する方法
-
ワードで、B5を並べてB4で印刷...
-
EXCELで漢字1文字をA3...
-
タイムカードに印刷したい
-
Wordで用紙に三つ折り用の線を...
-
Wordの書類を90度回転
-
Wordを使って…
-
IllustratorでB1サイズの書類...
-
Wordでつくった文字を熨斗袋の...
-
エクセルでA6の印刷用に設定を...
-
ワードで紙の向きを横にしたい...
-
ワードのページ罫線の下が切れ...
-
A5原稿を2枚並べて印刷する方法
-
ワードで2ページを1ページに...
-
WordでB5版用紙に設定したい。
-
イラストレーターでの複数レイ...
-
Excell, Word プリントアウト...
-
「Word」を開いた時、ページの...
おすすめ情報