しがないOLのはじめての「Microsoft Access」 ~Accessってなに?編~

2011.11.09

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

みなさん、こんにちは。 クニ吉です。

今回は、見よう見まねで触ったMicrosoftのAccessについて書いていこうと思います。 やりながら個人的に感じた・学んだレベルなので、参考程度に見ていただければと思います。

●なぜAccessを使おうと思ったのか?

私は仕事のひとつとして、売上や書類などの管理をやっています。 取引先コードの管理、売上管理に契約管理、書類管理・・色々あります。 私が入社した時には既にExcelの管理表がいくつかありましたが、後から必要性を感じて作った物もあり、 さらに管理表が増えてしまいました。

管理表が複数あることで、

  • 複数の管理表に同じ内容(会社名、案件名等)を入力することになるので、時間がかかる。
  • ひとつのアクションに対して複数の管理表を更新することがあり、更新漏れが発生しやすい。
  • 管理表を閲覧する際に一個一個ファイルを開けなければならないので、面倒。

というのが、当時の私が感じた問題でした。

簡単に言うと…

と に か く め ん ど く さ い (´Д`)=3

無駄なことに時間を使ってる暇があるなら、効率化を図ってもっと違う仕事をすべきと常々思っているので、管理表統合を決意しました。 そこで目を付けたのがAccess。しかし、データ管理が出来るんでしょ?位で正直なんも知らん状態。。。。 まあ、Officeだし他のもので作るより遙かに簡単だろうと思い、とにかくやってやれだ!!って感じでなんとなく始めました。

●Accessとは?

まずAccessについて簡単にご説明。 「Access」とは、マイクロソフト社からWindows向けに販売しているデータベース作成ソフトのことです。 Office Professionalにパッケージされていますが、Access単体での販売もされています。 ウィキペディアでは「データベース」のことを以下のように説明しています。

データベース(英: database, DB)は、特定のテーマに沿ったデータを集めて管理し、容易に検索・抽出などの再利用をできるようにしたもの。 (~省略)データベースをコンピュータ上で管理するためのシステムをデータベース管理システム (Database Management System, DBMS) という。

このデータベースというものには、格納するデータをどのように配置するかといった「データモデル」というものがいくつか存在し、 Accessは「リレーショナルデータモデル」に分類されます。

まあ小難しいことは置いておいて、Accessとはどういうものかをよく使うExcelと比較して見ていきましょう。

●Excelと比較してAccessのイメージをつかむ

まず、最初にAccessとExcelとで大きく違う点があります。それはデータの持ち方であり、「テーブル」という考え方です。 Excelはあらかじめ書き込めるシートが用意されており、データの入力・表示・保存が同じセル上で行われます。 それに対し、Accessはデータを保存するための箱を作らないと何もすることが出来ません。 その箱こそが「テーブル」と呼ばれるものです。 では、ExcelとAccessにおけるデータの持ち方を簡単なイメージ図で比較してみましょう。

◆ ExcelとAccessのデータ格納イメージ

このようにExcelとAccessではデータの持ち方が大きく異なります。 ゆえに戸惑う方も多いと思いますが、Accessはデータをいくつかに分割、分類しているだけだと思えば比較的とっつきやすいんじゃないかなと思います。しかしこの「どうテーブルを分割、分類していくか(テーブル設計)」が、Accessのアプリケーションを作成する上で一番大切なところだと私は考えています。

では、Accessのようにデータを分割して持つことのメリットは何かというと、私はとりわけ以下4点になると思います。

  1. 同じデータを入力する手間が省ける。(データの再利用が出来る)
  2. 入力ミスを防ぐことが出来る。
  3. 入力ミスによる集計ミスを防ぐことが出来る。
  4. 目的のデータを抽出し、様々な形式のレポートを容易に作成することが出来る。

例えばExcelだと、下図のように、担当者が違えば会社名や部署名など、同じ情報を入力していかなければなりません。 今回は省略していますが、もし住所情報の項目があったらとても面倒ですよね? もし入力ミスがあったり、全角半角など入力モードに違いがあれば、適切なデータ抽出を行うことも出来ません。 複数のデータで入力モードが異なり、データを修正したという経験はみなさんにも一度はあるはず。 何より、もしデータに変更が生じた場合(会社名等)、ひとつひとつ修正していかなければなりません。

一方Accessは、データ格納イメージ図の通り「AAA」という会社は1件、AAAという会社の中で「ソリューション営業部」という部署は1件しか存在しません。その1件同士を紐づけているため同じ情報を何度も入力する必要がないということです。 つまり入力ミスや入力モード違いによる集計ミスもなければ、会社名が変更になっても1件の会社情報を修正すればいいのです。

◆Accessでも悲劇は起こりうる?

答えは「Yes」です。 いいかげんなフィールド設定やテーブル分割によってはExcelのような悲劇も起こりえます。 もし下図のようなテーブル分割をしてしまうと、部署担当者テーブルのID4とID5のように何度も部署名を入力しなくてはいけません。

その結果、Excelと同じようなことが起こる可能性が高くなります。

このようなデータの重複をなくし、データ管理を容易にする方法を「データの正規化」と言います。 データベース構築の基本とも言われているようです。 しかし、何でもかんでも重複を排除すればいいというわけではありません。 あまりに分割されたものはかえって使いにくい場合もありますし、パフォーマンスの問題もあります。

つまり、どういったアプリケーションを作りたいのか、ユーザーは誰なのか、運用フローに合っているのか(運用フロー自体に問題はないのか)・・・etc、アプリケーションの全体構造や使用者、環境、様々な問題をきちんと把握・イメージしてテーブルを設計する必要があるんじゃないかと私は思います。 今回私が作ったアプリケーションのテーブルに関しては、自分が扱うデータ数や入力傾向など状況を鑑みた結果作成しました。 しかし、一般的にはテーブルをもっとまとめた方がいいのかもしれません。 そこは前述の通り、状況や将来的なイメージに合った作り方をするのが一番だと思います。

これから少しずつ簡単なAccessアプリケーションの作り方をご紹介していきたいと思っています。 大きな流れとしては、テーブルの作成→フォームの作成→閲覧・レポート用クエリ作成といった感じになります。 その中でAccessVBAについてもご紹介出来ればと思います。

では、今日はこの辺で。 Viso gero~( ´ _っ`)ノシ