
No.6ベストアンサー
- 回答日時:
さきほどの回答で説明が一部間違えていましたので、訂正します。
>フォームで編集中の 例)『請求書ID』が【1】のレコードだけ印刷したい時って、どんな条件式?を書けばでできますか?
それぞれのレポートを開くときのイベントで、次のような処理を入れます。
レポートの元のレコードソースが商品テーブル、フォームが商品フォームと仮定して、
Private Sub Report_Open(Cancel As Integer)
Me.RecordSource = "SELECT * FROM [商品テーブル] WHERE [商品ID]=" & Forms![商品フォーム].商品ID
End Sub
としてください。
これは現在のフォームでアクティブなレコード(カレントレコード)の商品IDのレコードだけをレポートのレコードソースにする処理です。
あと、いきなり印刷されるのを防ぐため一時的に
印刷をプレビューにコードを修正してみることも一法です。
DoCmd.OpenReport stDocName, acNormalを
DoCmd.OpenReport stDocName, acPreview
に一時的に修正して確認してみてください。
ご参考になれば幸いです。m(__)m
No.5
- 回答日時:
>フォームで編集中の 例)『請求書ID』が【1】のレコードだけ印刷したい時って、どんな条件式?を書けばでできますか?
それぞれのレポートを開くときのイベントで、次のような処理を入れます。
レポートの元のレコードソースが商品テーブル、フォームが、商品テーブルと仮定して、
Private Sub Report_Open(Cancel As Integer)
Me.RecordSource = "SELECT * FROM [商品テーブル] WHERE [商品ID]=" & Forms![商品フォーム].商品ID
End Sub
としてください。
これは現在のフォームでアクティブなレコード(カレントレコード)の商品IDのレコードだけをレポートのレコードソースにする処理です。
ご参考になれば幸いです。m(__)m
No.4
- 回答日時:
四たびShadowMoonです。
No.1,No.2の回答で、Public変数の宣言をクラスモジュール(フォームやレポート単位のプログラム群)ではなくて、標準モジュールで宣言しないとだめなようでした。どうもすみません。(^_^;)
もしNo.1、2の回答を試したければ、VBEの画面から挿入メニュー~標準モジュールで標準モジュールを挿入できますので、ここにPublic変数を宣言するコードを入れかえてください。
なお蛇足ですがNo.3の回答例のレポートの名称は、いいかげんなのでちゃんとご自分で付けてださいね。
あと、この方法を使えば、それぞれのページ設定を変える事も簡単にできますのでそれぞれのページ設定を変えて印刷したい場合にも有用な方法のひとつです。
今回No.2~3では、AccessでVBAを使用することのとっかかりになればということで回答いたしました。また不明な点があれば、教えてください。m(__)m
この回答への補足
できました!!!できました!!!感動です(>_<)
が、もう一つお聞きしたいことが出てきました。
フォームで編集中の 例)『請求書ID』が【1】のレコードだけ印刷したい時って、どんな条件式?を書けばでできますか?
今、作成中のデータベースは既に、何件かレコードが入力されているんですが、【請求書を印刷しますか?】の後で【はい】のボタンをクリックしたら、全レコードの請求書が印刷されてしまわないですか?
そうなってしまってはやばいから、まだ【はい】ボタンをクリックできずにいます。
お願いします。お手数をおかけしますが教えて下さいませ。
No.3
- 回答日時:
ふたたびShadowMoonです。
No.1,No.2の回答は1つのレポートを使いまわす方法ですので、初心者の方にはちょっと難しかったかもしれません。
もっと簡単な方法としては、
(1)同じレポートをコピーして、3つ作成し、それぞれタイトルだけ異なるようにラベルを入れておく。
(2)印刷するためのフォームにボタンを作り、ボタンをクリックすると、3つのレポートを印刷するようにする。(この部分がVBA)
とすることもできます。
(1)「同じレポートをコピーして、3つ作成し、それぞれタイトルだけ異なるようにラベルを入れておく。」方法の例
データベースウインドウで元になるレポートを選択
(レポートの名前は仮に”レポート1納品書”とします。)
Ctrlキーを押しながら、空いているところにドラッグ&ドロップ
コピーされたレポートの名前を修正
(コピーして修正したレポートの名前を仮に”レポート2納品書”とします。)
同様にもうひとつコピーして名前を修正
(コピーして修正したレポートの名前を仮に”レポート3納品書控え”とします。)
(2)「印刷するためのフォームにボタンを作り、ボタンをクリックすると、3つのレポートを印刷するようにする。(この部分がVBA)」方法の例
(1)ボタンを作成したいフォームをデザイン表示します。
(2)フォームデザインのツールバーからコマンドボタンをクリックします。
(3)マウスポインタをフォーム上に移動し、任意の大きさでドラッグします。
(4)コマンドボタンウイザードが表示されたら、種類はレポートの操作、ボタンの動作はレポートの印刷を選択し、次へのボタンをクリックします。
(5)印刷するレポートを選択し、次へのボタンをクリックします。
(6)絵と文字列がありますが、文字列の方が分かりやすいので、文字列の方に●をつけてください。
(7)文字列を”レポートの印刷”から”納品書と請求書の印刷”に変えてみましょう。
(変え終わったら請求書の印刷部分をドラッグして、Ctrlキーを押しながらCキーを叩いてください。)
(8)次へをクリックすると”コマンド何とか”が反転していますので、Ctrlキーを押しながらVキーを叩いてください。ボタン名が”請求書の印刷”と変わります。
(9)完了をクリックするとボタンができます。
VBAの表示
(1)作成したボタンを右クリックし、プロパティを選択します。
(2)イベントタブか、すべてのタブを選択します。
(3)クリック時というところに[イベントプロシージャ]と表示されています。
(4)[イベントプロシージャ]の欄をクリックすると、欄の右に▼と・・・のボタンが出ます。
(5)・・・をクリックするとボタンクリック時のプログラムコードが表示されるVBE(VisualBasicEditor)画面が表示されます。
Private Sub 納品書と請求書の印刷_Click()
On Error GoTo Err_納品書と請求書の印刷_Click
Dim stDocName As String
stDocName = "レポート1納品書"
DoCmd.OpenReport stDocName, acNormal
Exit_納品書と請求書の印刷_Click:
Exit Sub
Err_納品書と請求書の印刷_Click:
MsgBox Err.Description
Resume Exit_納品書と請求書の印刷_Click
End Sub
上記のVBAの修正を行います。
(1)stDocName~と入力されているところから3行分選択します。(ドラッグして色を反転させます。)
(2)Ctrlキーを押しながらCキーを叩いて選択部分をコピーします。
(3)Exit_納品書と請求書の印刷_Click:と入力されている前の行をクリックしてカーソルを表示します。
(4)Ctrlキーを押しながらVキーを2回叩きます。
(5)レポートの名前を修正します。(下記にサンプルを示します。)
Private Sub 納品書と請求書の印刷_Click()
On Error GoTo Err_納品書と請求書の印刷_Click
Dim stDocName As String
stDocName = "レポート1納品書"
DoCmd.OpenReport stDocName, acNormal
stDocName = "レポート2請求書"
DoCmd.OpenReport stDocName, acNormal
stDocName = "レポート3請求書控え"
DoCmd.OpenReport stDocName, acNormal
Exit_納品書と請求書の印刷_Click:
Exit Sub
Err_納品書と請求書の印刷_Click:
MsgBox Err.Description
Resume Exit_納品書と請求書の印刷_Click
End Sub
(6)デバッグメニューから***のコンパイルを選択して、入力したコードに問題ないか確認します。
(7)上書き保存ボタンをクリックし、保存します。
(8)フォームをデザインビューから通常の表示に戻し、ボタンをクリックしてください。
また、コードを下記のように修正すれば、ボタンをクリックしていきなり印刷されるのを防ぐことができます。
Private Sub 納品書と請求書の印刷_Click()
On Error GoTo Err_納品書と請求書の印刷_Click
If MsgBox("印刷しますか?", vbYesNo + vbDefaultButton1, "確認") = vbYes Then
Dim stDocName As String
stDocName = "レポート1納品書"
DoCmd.OpenReport stDocName, acNormal
stDocName = "レポート2請求書"
DoCmd.OpenReport stDocName, acNormal
stDocName = "レポート3請求書控え"
DoCmd.OpenReport stDocName, acNormal
End If
Exit_納品書と請求書の印刷_Click:
Exit Sub
Err_納品書と請求書の印刷_Click:
MsgBox Err.Description
Resume Exit_納品書と請求書の印刷_Click
End Sub
ご検討を祈ります。m(__)m
ShadowMoonさん何度もありがとうございます。
No.1.2でやってみたら、エラーは出ないのですが三つのタイトルが同時に表示されるレポートが3枚印刷されてしまって、困っていたんですよ(^_^;)
初心者向けの方法にチャレンジしてみますね。
No.2
- 回答日時:
>(2)次にフォームのボタンをクリックしたら3回印刷するような処理を入れておきます。
(1)ボタンを作成したいフォームをデザイン表示します。
(2)フォームデザインのツールバーからコマンドボタンをクリックします。
(3)マウスポインタをフォーム上に移動し、任意の大きさでドラッグします。
(4)コマンドボタンウイザードが表示されたら、種類はレポートの操作、ボタンの動作はレポートの印刷を選択し、次へのボタンをクリックします。
(5)印刷するレポートを選択し、次へのボタンをクリックします。
(6)絵と文字列がありますが、文字列の方が分かりやすいので、文字列の方に●をつけてください。
(7)文字列を”レポートの印刷”から”請求書の印刷”に変えてみましょう。
(変え終わったら請求書の印刷部分をドラッグして、Ctrlキーを押しながらCキーを叩いてください。)
(8)次へをクリックすると”コマンド何とか”が反転していますので、Ctrlキーを押しながらVキーを叩いてください。ボタン名が”請求書の印刷”と変わります。
(9)完了をクリックするとボタンができます。
VBAの表示
(1)作成したボタンを右クリックし、プロパティを選択します。
(2)イベントタブか、すべてのタブを選択します。
(3)クリック時というところに[イベントプロシージャ]と表示されています。
(4)[イベントプロシージャ]の欄をクリックすると、欄の右に▼と・・・のボタンが出ます。
(5)・・・をクリックするとボタンクリック時のプログラムコードが表示されるVBE(VisualBasicEditor)画面が表示されます。
VBAの修正
3回印刷を行うには、
DoCmd.OpenReport stDocName, acNormal
の部分を
DoCmd.OpenReport stDocName, acNormal
DoCmd.OpenReport stDocName, acNormal
DoCmd.OpenReport stDocName, acNormal
と3回記述(コピー)すればいいです。
現在のプログラムコードを次のように修正してください。
Public pub印刷回数 As Variant 'パブリック変数を宣言
Private Sub 請求書の印刷_Click()
On Error GoTo Err_請求書の印刷_Click
Dim stDocName As String
stDocName = "ここはレポートの名前になっています"
pub印刷回数 = 1
DoCmd.OpenReport stDocName, acNormal
pub印刷回数 = 2
DoCmd.OpenReport stDocName, acNormal
pub印刷回数 = 3
DoCmd.OpenReport stDocName, acNormal
Exit_請求書の印刷_Click:
Exit Sub
Err_請求書の印刷_Click:
MsgBox Err.Description
Resume Exit_請求書の印刷_Click
End Sub
>(3)最後にレポートのフォーマット時のイベントで、
どこにラベルを作成しているかわかりませんが、レポートヘッダーとしておきます。
(1)印刷するレポートをデザインで開いてください。
(2)レポートヘッダーと表示されているところをダブルクリックします。
(3)イベントタブのフォーマット時の欄をクリックします。
(4)欄の右にある▼をクリックし、イベントプロシージャをクリックします。
(5)欄の右にある・・・をクリックするとレポートヘッダーフォーマット時のプログラムコードが表示されます。
(6)ここに次のコードを入力します。
Private Sub レポートヘッダー_Format(Cancel As Integer, FormatCount As Integer)
On Error GoTo Err_レポートヘッダー_Format
If pub印刷回数=1 Then
Me.納品書.visible=True
Me.請求書.visible=False
Me.納品書(控).visible=False
EndIf
If pub印刷回数=2 Then
Me.納品書.visible=False
Me.請求書.visible=True
Me.納品書(控).visible=False
EndIf
If pub印刷回数=3 Then
Me.納品書.visible=False
Me.請求書.visible=False
Me.納品書(控).visible=True
EndIf
Exit_レポートヘッダー_Format:
Exit Sub
Err_レポートヘッダー_Format:
MsgBox Err.Description
Resume Exit_レポートヘッダー_Format
End Sub
あとは、VBEのデバッグ~コンパイルで、エラーが無いのを確認します。
がんばってくださいね。m(__)mう~疲れました・・・
No.1
- 回答日時:
VBAを使った方法ですが、
(1)まず、納品書レポートに、、【納品書】【請求書】【納品書(控)】ラベルを作成します。(ラベルは重なってもかまいません。)それぞれのラベルは、納品書、請求書、納品書(控)としておきます。
(2)次にフォームのボタンをクリックしたら3回印刷するような処理を入れておきます。(VBA)
パブリック変数(例えば、pub印刷回数)を宣言しておいて、
1回目印刷前にpub印刷回数=1とします。
2回目印刷前にpub印刷回数=2とします。
3回目印刷前にpub印刷回数=3とします。
(3)最後にレポートのフォーマット時のイベントで、
pub印刷回数=1なら
Me.納品書.visible=True
Me.請求書.visible=False
Me.納品書(控).visible=False
pub印刷回数=2なら
Me.納品書.visible=False
Me.請求書.visible=True
Me.納品書(控).visible=False
pub印刷回数=3なら
Me.納品書.visible=False
Me.請求書.visible=False
Me.納品書(控).visible=True
でできますので、ご参考まで。m(__)m
この回答への補足
さっそくの回答ありがとうございます。しかし、access初心者の私にはレベルが高すぎるのか、(2)(3)ができません(^_^;) 一体、どこの画面に何を入力したらいいのでしょうか?こんな私に詳しく教えてくれませんか?
補足日時:2002/08/23 17:56お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(NTTサービス) エフティコミュニケーションズってどういった会社ですか? 家族にパソコンでわからない事があると言われ、 2 2022/09/10 19:59
- Visual Basic(VBA) VBAでPDFのアクティブページ番号取得 1 2023/05/25 12:41
- スーパー・コンビニ セブンイレブンのネップリで、書き忘れたレポートの1枚を印刷したくて登録したんですが、画質が悪くて文字 1 2022/05/18 09:45
- Access(アクセス) お世話になっています 下記データがクエリにあります。 商品名 A A B B B B B C C C 1 2022/09/11 21:07
- Access(アクセス) 【アクセス】レポート テキスト枠線が消えた 1 2022/07/02 17:40
- 数学 画素数の計算 中高レベルの計算で申し訳ないのですが、下記の問題が分かりません 比率が4:3のA4の横 3 2022/12/17 22:41
- 年賀状作成・はがき作成 Wordによる宛名印刷 2 2023/01/04 15:36
- Excel(エクセル) 請求書と領収書の作成 4 2022/11/10 16:13
- 固定電話・IP電話・FAX 業務用ファックスについて 5 2022/09/28 19:08
- PDF 2つのPDFを重ねる方法はありますか? 4 2023/01/30 14:04
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Access レポート印刷するときに...
-
ACCESS フォームをそのまま印刷...
-
アクセスで特定のレコードのみ...
-
Accessのフォームで、画面表示...
-
アクセスのレポート合成(複数...
-
ACCESS チェックしたも...
-
アクセスのレポートの印刷につ...
-
ACCESSでレポート印刷時、決ま...
-
アクセスで希望のレポートを1枚...
-
ACCESSの複数レポートの印刷に...
-
accessのフォームをレポートに...
-
アクセスのフォーム画面の印刷...
-
ACCESS チェックしレポ...
-
Access2016 レコード印刷時に入...
-
Accessのレポートで1レコード...
-
Access[イベント プロシージャ]...
-
アクセスのフォームとレポート
-
Access2013 レポートを印刷する...
-
データベースのINT型項目にNULL...
-
passwordが入れられません・・・・
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Access レポート印刷するときに...
-
アクセスのレポート合成(複数...
-
ACCESS フォームをそのまま印刷...
-
Accessのフォームで、画面表示...
-
Access2013 レポートを印刷する...
-
アクセスで特定のレコードのみ...
-
ACCESSの複数レポートの印刷に...
-
【Access】フォームのプロパテ...
-
Access レポート印刷時のイベン...
-
accessのフォームをレポートに...
-
ACCESS チェックしたも...
-
Accessフォームからパラメータ...
-
アクセスで希望のレポートを1枚...
-
ACCESSのレポートで、指定した...
-
ボタン1つで1度に複数枚印刷す...
-
アクセスでチェックボックスの...
-
アクセスのフォーム画面の印刷...
-
アクセスのフォーム印刷で不要...
-
Access 宛名ラベル レポートの...
-
Accessのフォーム単票印刷で印...
おすすめ情報