Windows 8 & Office 2013 Access 2013

フォームのフィルター実行後のデータをレポートへ出力する

投稿日:2017年6月18日 更新日:

Accessのフォームでフィルターを実行した後、そのフィルターのデータをそのままレポートへ出力する方法です。

フィルターが実行されていない場合は、メッセージを表示します。

コードビルダーとマクロビルダーで解説します。

フィルターで実行したデータをレポートへ出力

参考ここでのウィンドウの表示は、[ウィンドウを重ねて表示する]です。[ウィンドウを重ねて表示する]と[タブ付きドキュメント]の違いについては、以下の記事で解説しています。

[タブ付きドキュメント]と[ウィンドウを重ねて表示する]の違い

Access2007以降、オブジェクトを表示すると、タブ付きウィンドウで表示されるようになっています。 昔からAccessを使用している方に ...

続きを見る

[コードビルダー]と[マクロビルダー]を使用する方法を記していますが、どちらも動作は同じです。その相違については、以下の記事で解説しています。

マクロアクション(マクロビルダー)とVBA(コードビルダー)

Accessでは、マクロアクション(マクロの実行アクション)やVBA(Visual Basic for Applications)を使って一 ...

続きを見る

分割フォームの作成

テーブルやクエリを基に分割フォームを作成します。

ここでは、クエリ[Q_売上]を基に分割フォームを作成しています。

クエリ[Q_売上]を選択して、[作成]タブの[フォーム]グループにある[その他のフォーム]の▼ボタンをクリックします。

その中にある[分割フォーム]をクリックします。

ポップヒントには以下のように記されています。

注意ポップヒントでは上にデータシート、下にフォームが表示されるように記されていますが、上下が反対になる場合もあります。

分割フォーム

分割フォームを作成します。分割フォームの上のセクションにはデータシートが表示され、下のセクションにはデータシートで選択したレコードの情報を入力するためのフォームが表示されます。

分割フォームを選択

分割フォームは、Access2007からの機能ですがフォームビューとデータシートビューを同時に表示できるので、とても便利です。

分割フォームについては、以下の記事を参照してください。

分割フォーム(単票フォームとデータシートを同時に表示)の作成と使い方

Accessでは、画面を2つに分け[単票フォーム]と[データシート]を同時に表示できる[分割フォーム]というのがあります。Access200 ...

続きを見る

分割フォームでは、データシートビューのプルダウンからフィルターをかけることができます。

このフィルターで抽出したデータを、そのままレポートへ出力する方法を解説します。

プルダウンメニュー

フィルターボタンをクリックしてもリストが表示されない場合

レコード数が1000を超えているとフィルターボタンをクリックしても、リストが表示されない場合があります。

これは、[Accessのオプション]で設定を変更して解決できます。

フィルターリストが表示されない

[ファイル]タブをクリックした後、[オプション]をクリックして、[Accessのオプション]ダイアログボックスを表示します。

または、キーボードから[Alt]→[F]→[T]の順に押して表示します。これは、Word、Excel、PowerPointなどでも使用できます。

キーボード[Alt]→[F]→[T]

[現在のデータベース]の[レコード数が次の値を超えるとリストを表示しない]が既定では[1,000]になっていますので、この値をレコード数より大きい数値に変更します。

「Accessのオプション」ダイアログボックス

以下の記事でも解説しています。

テーブルのフィルターにリストが表示されない

レポートの作成

レポートは、フォームと同じレコードソースで作成しておきます。

レポートの名前は[R_売上一覧]とします。

レポートの作成

レポートへ出力ボタンの作成(コードビルダー)

フィルター実行後、レポートへ出力するためのボタンを作成します。

フォームをデザインビューで開きます。

[デザイン]タブにある[コントロールグループ]にある[ボタン]をクリックして、フォームヘッダーでドラッグしてボタンを作成します。

ウィザードが表示されたら[キャンセル]ボタンをクリックして閉じます。

コマンドボタンの作成

コマンドボタンのプロパティを表示します。

[すべて]タブをクリックして、コマンドボタンの[名前]と[標題]を入力します。

コマンドボタンの名前と標題を入力

[イベント]タブをクリックして、[クリック時]の[...]ボタンをクリックします。

クリック時イベント

[ビルダーの選択]ダイアログボックスが表示されたら、[コードビルダー]を選択して[OK]ボタンをクリックします。

ビルダーの選択

VBEが表示されたら、以下のように入力します。

フィルターを実行していないときは、「先にフィルターを実行してください!」というメッセージボックスを表示して、それ以外は、レポート[R_売上一覧]のレポートビューとして出力します。

参考印刷プレビューで表示したい場合は、[acViewPeport]を[acPreview]に変えてください。

また、MsgBox関数については以下で解説しています。いろいろ工夫してみてください。

MsgBox関数について

[Me.]は省略してもかまいません。

If Me.FilterOn = False Then

MsgBox "先にフィルターを実行してください!"

Else

DoCmd.OpenReport "R_売上一覧", acViewReport, , Me.Filter

End If

クリック時イベントへ入力

コマンドボタンのプロパティ[クリック時]には、[イベントプロシージャ]と表示されます。

コマンドボタンのプロパティ[クリック時]

レポートへ出力ボタンの作成(マクロビルダー)

埋め込みマクロで設定する方法です。

[レポートへ出力]ボタンの作成までは上記の解説と同じです。

[イベント]タブをクリックして、[クリック時]の[...]ボタンをクリックします。

クリック時イベント

[ビルダーの選択]ダイアログボックスが表示されたら、[マクロビルダー]を選択して[OK]ボタンをクリックします。

[ビルダーの選択]で[マクロビルダー]を選択

マクロツールが表示されます。

[新しいアクションの追加]の▼をクリックして、[If]を選択します。

[新しいアクションの追加]で[If]を選択

テキストボックスに以下を入力します。

[FilterOn]=False

そして、[新しいアクションの追加]に[メッセージボックス]を選択します。

[新しいアクションの追加]で[メッセージボックス]を選択

[メッセージボックス]の[メッセージ]に以下のように入力します。

先にフィルターを実行してください!

メッセージの種類やタイトルなどについては、以下を参考にしてください。

MsgBox関数について

マクロビルダーの[メッセージの種類]は以下の4つがあります。ここでは[なし]を選択しています。

メッセージの種類

メッセージのタイトルは、任意の文字を入力します。空白にした場合は、[Microsoft Access]と表示されます。

Accessのオプションでアプリケーションタイトルを入力している場合は、そのタイトルが表示されます。

そして、[Elseの追加]をクリックします。

[メッセージボックス]の[メッセージ]にテキストを入力

そして、[新しいアクションの追加]で[レポートを開く]を選択します。

[新しいアクションの追加]で[レポートを開く]を選択

[レポートを開く]の[レポート名]に[R_売上一覧]を選択します。

以下は、[ビュー]は[レポート]を選択していますが、印刷プレビューで表示したい場合は[印刷プレビュー]を選択してください。

[Where条件式]には、以下のように入力します。先頭に[=]を入力します。

角括弧は、自動で追加されます。

=filter

[レポートを開く]の[レポート名]に[R_売上一覧]を選択

上書き保存して[閉じる]ボタンをクリックして閉じます。

上書き保存して[閉じる]

再度、マクロツールを開いて以下のようになっていればOKです。

マクロツールのアクション

コマンドボタンのプロパティ[クリック時]には、[埋め込みマクロ]と表示されます。

コマンドボタンのプロパティ[クリック時]

[フィルター解除]ボタンの作成

もう1つフィルターを解除するためのボタンを作成します。

同じように[デザイン]タブにある[コントロールグループ]にある[ボタン]をクリックして、フォームヘッダーでドラッグしてボタンを作成します。

ウィザードが表示されたら[キャンセル]ボタンをクリックして閉じます。

コマンドボタンのプロパティを表示します。

[すべて]タブをクリックして、コマンドボタンの名前と標題を入力します。

フィルター解除ボタンの作成

コードビルダーで設定

[イベント]タブをクリックして、[クリック時]の[...]ボタンをクリックします。

[ビルダーの選択]ダイアログボックスが表示されたら、[コードビルダー]を選択して[OK]ボタンをクリックします。

今度は、以下のように入力します。

Me.FilterOn = False

クリック時イベント

マクロビルダーで設定

マクロビルダーで設定する場合は、[ビルダーの選択]ダイアログボックスで、[マクロビルダー]を選択します。

そして、[新しいアクションの追加]で[フィルター/並べ替えの解除]を選択します。

[新しいアクションの追加]で[フィルター/並べ替えの解除]を選択

以下のようになります。

マクロツールの設定

参考アクションは、[全レコードの表示]でもかまいません。

アクション[全レコードの表示]

ボタンをクリックして実行

これで実行してみてください。

フィルターを実行していないときは、下のようにメッセージウィンドウが表示されます。

メッセージウィンドウ

参考レポートでレコードを抽出して印刷する方法については、以下の記事で解説しています。

レポートビューでフィルターをかけて目的のレコードを抽出して印刷

Accessのレポートでフィルターをかけて、一部の情報のみを印刷したいことがあると思います。 レポートのフィルターを実行するには、レポートビ ...

続きを見る

印刷するレコードがない場合にメッセージを表示するには、レポートの[空データ時]イベントで設定します。

印刷するレコードがない場合はメッセージを表示して印刷を中止する

Accessのレポートで印刷を実行しようとしても、該当するデータがない場合があります。 印刷プレビューで確認すれば、印刷を実行せずに済むかも ...

続きを見る

検索

ほかの記事も検索してみませんか?

Access / Excel / PowerPoint / Word

関連記事30件

moneytizerPCのみ

Profile

執筆者/はま

-Windows 8 & Office 2013 Access 2013

Copyright © 2001-2024 初心者のためのOffice講座 All Rights Reserved.

Copyright© 初心者のためのOffice講座 , 2024 AllRights Reserved Powered by AFFINGER4.