生涯エンジニアの備忘録

アクセスカウンタ

zoom RSS エクセルVBAとアクセスDBの使い方(1)

<<   作成日時 : 2017/01/28 02:06   >>

ブログ気持玉 0 / トラックバック 0 / コメント 0

最近、ふとしたはずみでエクセルとアクセスを使ってアプリを組むという、エンジニアの私にとっては貴重な体験ができたので、備忘録として、記録しておきます。
もともとVBで、組込機器のUIを書くことは仕事でもたくさんあったので、抵抗はなかったのですが、こんなに簡単にDBが使えるとは、予想していなかったので、少し棚からボタ餅のうれしさです。

MOS(マイクロソフトオフィススペシャリスト)の試験では、マクロの使い方は試験にでるが、VBAは出てこないそうで、MOSを持っている女の子はVBAは知りませんでした。そこで、私としては、VBのほうが便利でしたが、その事業所では、エクセルでいろいろなデータをファイルしていたので、手っ取り早いVBAで組んでみました。
また、サーバからエクセルファイルを開けて複数の人間で使っていたので、2番目以降に開いても、読み取り専用でしか開けず、追加修正ができませんでした。そこでエクセルのデータをアクセスに移し、SQLでアクセスDBを操作する方式に変更しました。こうすると、見た目は、同時に使用できるようになります。アクセスDBにレコードを追加するなどの時だけは、排他的になり、同時に書き込みはできないですが、書き込みを1レコードに絞り、アクセスDBを開いてすぐ書き込み、すぐに閉じれば衝突する可能性も大幅に減ります。もちろん、アクセス内部では、キューでSQLのINSERT要求も処理しているので、エラーが出ることはないでしょうが。

一番簡単な応用例は、会議室予約です。
IBMロータスのNOTESを使えば、グループウェアなので、会議室予約などすぐ使えます。MSのOUTLOOKでも同様に共有DBを使い、会議室の予約ができます。まあ、しかし、すこし変わった使い方もしたいので、独立した会議室予約システムを作りました。

まずは、立ち上げフォームです。エクセルは開くと、すぐ表形式のデータテーブルが表示されますが、予約状況をみたり、予約するときは、専用のフォームを表示したほうが便利です。例えば、一覧フォームは下のようなものを用意します。
画像


ある日の会議室予約状況を一覧で見ることができます。エクセルVBAは、図の作成が苦手なので、Labelで時間帯の表示をします。Labelのプロパティで、TopとLeftを設定することで、右上角の位置を指定できます。HeightとWidthで、長方形の高さと幅が設定できます。これで時刻と時間の長さが、Labelの形に変換できるわけです。
予約時刻はComboBoxで選択できるように8時から18時まで30分ごとに決めます。使用時間は30分から4時間まで30分刻みで選択できます。会議は普通2時間以内というのが鉄則ですので、これで十分でしょう。
会議室が新設されたり、名前が変わったり、撤去されたりの変化にも対応できるように、設定フォームも用意しましょう。また予約者も同様に追加修正削除ができるうようにします。年月日の決定はComboBoxで選択するのは面倒でしょうから、カレンダフォームから該当日のLabelをクリックすれば、選択できるようにします。年と月はそのフォーム内でComboBoxで選択できます。
画像

予約するのは、予約フォームからします。先の状況フォームで会議室のLabelをクリックすると下の予約入力フォームが出てきます。
画像




会議室名、予約日、予約時間、使用時間、予約者、使用目的、入力日、入力者ぐらいが必要な項目でしょう。これをComboBoxを使い、選択しながら入力していきます。入力日、入力者は、フォーム内には現れませんが、システム情報から読み取り記録します。

アクセスDBは、下のものを作っておきます。

画像


次回は、エクセルVBAのコードについて説明します。

テーマ

関連テーマ 一覧


月別リンク

ブログ気持玉

クリックして気持ちを伝えよう!
ログインしてクリックすれば、自分のブログへのリンクが付きます。
→ログインへ

トラックバック(0件)

タイトル (本文) ブログ名/日時

トラックバック用URL help


自分のブログにトラックバック記事作成(会員用) help

タイトル
本 文

コメント(0件)

内 容 ニックネーム/日時

コメントする help

ニックネーム
本 文
エクセルVBAとアクセスDBの使い方(1) 生涯エンジニアの備忘録/BIGLOBEウェブリブログ
文字サイズ:       閉じる