目次
伊川の過去の動画で、どこまで作成できる?
こんにちは。伊川(@naonaoke)です。
今回は、上の記事の続きになります。
私のこれまでの動画で、どこまでできるのか?
今回は、上記の内容を紹介します。
問題提起
(株)IKAWAの阿久 世子男(アク セスオ)は上司から下記の依頼を受けました。
発送伝票を作成するときに、もっと効率を上げることはできないか?
ACCESSのどのような機能を使えばいいのか?
解決策

ACCESSといえば、
リレーションとクエリです。スキルをフル回転で作成しましょう。
ACCESSの機能
ACCESSを苦手としている人にACCESSの機能の素晴らしさを伝えたいと思います。
Excelと違い、関数やVBAを使わなくても、ACCESSが有している機能で作成できます。
ACCESSを開くと、このようにフォームを起動するように設定するとこころから始めます。
伝票発行システム作成 作成手順その1 ACCESSを開くとフォームが起動
オプションから、フォームを起動する設定になります。
上の記事を参照してください。
伝票発行システム作成 作成手順その2 顧客リストを一瞬で入力
顧客リストは、オートルックアップクエリで入力します。
MT_顧客リスト
荷物を届ける発送先のリストです。
MT_発送元
発送元の会社です。
MT_発送印字リスト
この内容を、送り状に印字します。
F_発送入力
下記のフォームに、情報を入力します。
動画では、6:56の場所で確認できます。
ブログでは、この感動を伝えることはできないので、動画で確認をお願いします。
リレーションの設定
一対多のリレーションを設定します。
伝票発行システム作成 作成手順その3 配達の時間指定を入力
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 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 |
Private Sub 顧客ID_AfterUpdate() Me.日時 = Date End Sub Private Sub 午前中_AfterUpdate() Select Case True Case Me.[午前中] = True Me.[時間_14時] = False Me.[時間_16時] = False Me.[時間_18時] = False Me.[時間_19時] = False Me.[時間指定無し] = False Dim a As Variant, b As Variant a = Me.[入力用品名] Me.[配達時間] = "" Me.[配達時間] = "配達時間:午前中" Me.[品名] = a & vbCrLf & vbCrLf & Me.[配達時間] End Select End Sub Private Sub 時間_14時_AfterUpdate() Select Case True Case Me.[時間_14時] = True Me.[午前中] = False Me.[時間_16時] = False Me.[時間_18時] = False Me.[時間_19時] = False Me.[時間指定無し] = False Dim a As Variant a = Me.[入力用品名] Me.[配達時間] = "" Me.[配達時間] = "配達時間:14時~16時" Me.[品名] = a & vbCrLf & vbCrLf & Me.[配達時間] End Select End Sub Private Sub 時間_16時_AfterUpdate() Select Case True Case Me.[時間_16時] = True Me.[午前中] = False Me.[時間_14時] = False Me.[時間_18時] = False Me.[時間_19時] = False Me.[時間指定無し] = False Dim a As Variant a = Me.[入力用品名] Me.[配達時間] = "" Me.[配達時間] = "配達時間:16時~18時" Me.[品名] = a & vbCrLf & vbCrLf & Me.[配達時間] End Select End Sub Private Sub 時間_18時_AfterUpdate() Select Case True Case Me.[時間_18時] = True Me.[午前中] = False Me.[時間_14時] = False Me.[時間_16時] = False Me.[時間_19時] = False Me.[時間指定無し] = False Dim a As Variant a = Me.[入力用品名] Me.[配達時間] = "" Me.[配達時間] = "配達時間:18時~20時" Me.[品名] = a & vbCrLf & vbCrLf & Me.[配達時間] End Select End Sub Private Sub 時間_19時_AfterUpdate() Select Case True Case Me.[時間_19時] = True Me.[午前中] = False Me.[時間_14時] = False Me.[時間_16時] = False Me.[時間_18時] = False Me.[時間指定無し] = False Dim a As Variant a = Me.[入力用品名] Me.[配達時間] = "" Me.[配達時間] = "配達時間:19時~21時" Me.[品名] = a & vbCrLf & vbCrLf & Me.[配達時間] End Select End Sub Private Sub 時間指定無し_AfterUpdate() Select Case True Case Me.[時間指定無し] = True Me.[午前中] = False Me.[時間_14時] = False Me.[時間_16時] = False Me.[時間_18時] = False Me.[時間_19時] = False Dim a As Variant a = Me.[入力用品名] Me.[配達時間] = "" Me.[配達時間] = "配達時間:時間指定無し" Me.[品名] = a & vbCrLf & vbCrLf & Me.[配達時間] End Select End Sub |
伝票発行システム作成 作成手順その4 更新クエリ
発送印字リストは顧客IDしか入力されていません。
発送印字リストは更新クエリを利用して、空白を埋めます。
全部の画面を記載できないので、一部抜粋で掲載します。
ボタン一発で更新されます。
実行結果です。
1 2 3 4 5 6 7 |
Private Sub コマンド2_Click() DoCmd.OpenQuery "更新Q_発送リスト", acViewNormal, acEdit MsgBox "印字リスト更新完了" DoCmd.OpenReport "R_送り状印", acViewPreview End Sub |
MT_発送印字リストも埋まりました。
ここがポイント

カンタンな、VBAのコードでシステムは作成できるのが、ACCESSのスゴイところです。オートルックアップクエリと、クエリを理解することがACCESSを理解する第一歩です。
まとめ
ここまでが前半になります。
後半は、もっと業務を効率化するように細工をします。
今回のサンプルファイルは、ありません。

わからない事を延々と考えるのは、無駄です。
- なんで作動かないの?
- もうやだ!VBAなんか嫌い!
- ネットで調べても情報がない!
必ず作動するコードが、ここにあります。