質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

Q&A

解決済

2回答

1486閲覧

ACCESSのレポートの改行した空白部分に印刷したい

kanda_ryuichi

総合スコア6

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

0グッド

0クリップ

投稿2020/10/22 12:43

こんにちは。
ACCESSでレポートで、箱に貼るシールを出力しています。
VBAを使いグループ設定で改行するようになっています。
印刷は、A4用紙に9枚印字されます。
イメージ説明

グループ設定で改行している関係で、図の①のみ印刷され、②③は空白となり、
次グループが④から始まることがあります。
また、最終グループの最終レコードが①で終われば、②~⑨は全て白紙となります。
この現象は、そのように指示しているのですから、当たり前なのですが、
空白が勿体ないと感じています。

例えばの話ですが、最終ページの②~⑨に会社のロゴ(jpeg)を印刷したい場合に、
何か方法はありますでしょうかか?
最終レコードの後になりますので、VBAにどのように書けばよいのか、さっぱりわかりません。
ヒントでも良いので、教えていただけないでしょうか?

宜しくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

案1

レコードがない場合も用紙の最後まで罫線を出力する - hatena chips

上記のサンプルの応用

概要

ページヘッダーにロゴを配置。
その上に詳細セクションを重ねて出力。

詳細設定

ページヘッダーに、イメージコントロールにロゴを表示させて9つ配置します。
レポートの幅は用紙の幅から左右余白を引いた幅にします。
ページヘッダーの高さは用紙の高さから上下余白を引いた高さにします。
どちらも計算値より少し小さめにしておいてください。


[ページ設定]-[レイアウト]の設定
行列設定
列数 3
行間隔 0cm
列間隔 0cm

サイズ
幅 (用紙幅 - 左右余白)÷ 3
高さ(用紙高 - 上下余白)÷ 3

実寸 チェックはずす


詳細セクション
背景色 #FEFEFE (白だと透過してしまうので限りなく白に近いグレー)

ページヘッダーのフォーマット時のイベントプロシージャに下記のコードを記述します。

vba

1Private Sub ページヘッダーセクション_Format(Cancel As Integer, FormatCount As Integer) 2 Me.MoveLayout = False 3End Sub

以上で、残りの余った部分にロゴが表示されます。
この方法のメリットは、前回の質問 の右側の列の余白の部分にもロゴが表示される点です。
これで用事が無駄なく使えます。

案2

レコードがない場合も用紙の最後まで罫線を出力する NextRecord版 - hatena chips
上記のページの応用

概要

レポートフッターにロゴ画像を配置して、Me.NextRecord = False で用紙の最後まで繰り返し出力する。

詳細設定

グループ化と並べ替えで、グループの追加 を追加して、グループ化は式を選択して、式を =1 という固定値にする。(固定値なら1でなくてもOK)
ヘッダーセクションなし
フッターセクション付き

グループフッターの高さは、詳細セクションの高さと同じにする。
イメージコントロールにロゴ画像を表示させて配置する。

vba

1Private Sub グループフッター1_Format(Cancel As Integer, FormatCount As Integer) 2 If Me.Left < 7000 Or Me.Top < 9000 Then 3 Me.NextRecord = False 4 End If 5End Sub

7000 と 9000 は前回の質問と同様に詳細セクションのフォーマット時で、
ebug.Print Me.Left, Me.Top
と記述してプレビューさせて表示させる数値を参考にして決めてください。
上記の数値でたいていいいと思います。

こちらの方法は、右側の列の余白の部分にはロゴは表示されないですが、
表示させる場合は、詳細セクションにロゴ画像を配置して、可視を切り替えて余白部のみ表示させるようにすれば可能です。

投稿2020/10/22 14:30

hatena19

総合スコア33620

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

自己解決

すいません。
空白行に罫線が引ける、という記事を見つけました。
もう少し勉強してみます。
その上で、どうしても出来ない場合は、改めて質問させていただきます。
閲覧いただいた方、ありがとうございました。

投稿2020/10/22 13:06

kanda_ryuichi

総合スコア6

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hatena19

2020/10/22 14:35

あらー、回答を書いているうちに解決済みになっちゃいましたか。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問