やっちまいました(笑)
Accessを開いたときに印刷し、閉じるという動作をするプログラムを入れたのですが、データが何もない場合は閉じるようにIf文を入れたんです。
…ということは…どちらにしても最後には『閉じる』んです!
プラグラムを修正しようとしても『閉じる』んです。
プラグラム修正しようにも開けなじゃん!!ってなっちゃったんですが、そんなおバカなプログラムを組んだやつのためにも、ちゃんとマクロやVBAを実行させずにファイルを開く方法があるので、ご紹介したいと思います。
マクロやVBAを実行させないでAccessを開く方法
shiftキーを押しながら、Accessのファイルを開く。
これだけでした。簡単♪
これだけなんですが、プログラムを止めることができます。
今日のお話はこれだけなのですが、どんだけアホなことをしたのかお話したいと思いますので、お時間がある方はお付き合いください。
VBAでファイルを開いたときに実行するプログラム
最初に書いたことなのですが、VBAでファイルを開いたときに実行するプログラムを作りました。
ファイル開いたときは特定のフォームを表示するように指定していますので、ファイルを開いた瞬間プログラムが実行される仕組みになっています。
これが私が書いたコードです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
If DCount("*", "商品リスト クエリ") = 0 Then Application.Quit Else Me.最終印刷日 = DMax("[最終印刷日]", "最終日付取得", "ID") Me.日付抽出 = Date - 1 DoCmd.Close acQuery, "商品リスト クエリ" DoCmd.OpenReport "商品リスト クエリ" Dim Rst As DAO.Recordset Set Rst = CurrentDb.OpenRecordset("最終日付取得", dbOpenTable) With Rst .AddNew .Fields("最終印刷日") = Me!日付抽出 .Update End With Rst.Close Set Rst = Nothing End If Application.Quit |
解説
『商品リスト クエリ』の抽出したデータが0(ない)場合は、何もせずにAccess自体を閉じる。
データがある場合は『最終日付取得』テーブルより『最終印刷日』のラストを『最終印刷日』テキストボックスに表示。
『日付抽出』テキストボックスには昨日の日付を表示。
『商品リスト クエリ』で最終印刷日から昨日までのデータを抽出する。
『商品リスト クエリ』のデータをレポートにて印刷。
最終日付が更新されるように昨日の日付を『最終日付取得』テーブルへ書き込みAccessを閉じる。
こういうプログラムを組んだので、データがあってもなくても最後には『Accessのアプリケーションを閉じる』ので、駄目だったんですね。
こういう変なプログラムを組んだ時に使えるのが『Shiftを押しながらファイルを開く』ですね。
この方法を知らなかった時は、また作らなきゃいけないかと思ってちょっと焦りました。
マクロを使ったり、プログラムを組む方なら知っておいて損はないと思います!
今回は余談が多かったので結論から述べてしまいました。
最後までお読みいただきありがとうございます。