以下の過去記事のように、以前ExcelVBAエキスパートスタンダードについて書きました。この資格を取得する理由や目的は過去記事にいろいろと書いていきましたが、この次は「AccessVBA」を取得しようと思っていました。
しかし自分はこれまでの仕事で、そもそも「Access」というデータベースソフト自体をほとんど触ったことすらありません。ですからAccessVBAの前に、まずはAccessを勉強しなければいけないということで、最近はAccessについて勉強していました。
Accessを勉強し始めてまだそれ程時間は経っていないのですが、「Accessってこんなことまでするの?」とか「Excelと比べるとこういった部分が便利かもしれない」などいくつか気づいたことがありました。
自分はまだ会社の業務などでAccessを使ったことはなく、勉強した範囲内でしか書けませんが、その中で気づいたことを自分なりに簡単にまとめていってみようかと思います。
データベースソフトであるAccessの概要
そもそもデータベースソフトとは何か、Accessとは何かについては以下の過去記事で簡単にまとめてあります。
もう少し具体的にどういった機能があるかというと、大きく分けて以下の4つがあります。
- テーブルによるデータの格納
- クエリによるデータの加工
- フォームによるデータの入力
- レポートによるデータの印刷
これらについて順番に説明していきます。
テーブルによるデータの格納
Accessにおけるテーブルによるデータの格納とは『よくわかる Microsoft Access 2013 基礎 (FOM出版のみどりの本)』において以下のように書かれています。
p.42
「テーブル」とは、特定のテーマに関するデータを格納するためのオブジェクトです。Accessで作成するデータベースのデータは、すべてテーブルに格納されます。特定のテーマごとに個々のテーブルを作成し、データを分類して蓄積することにより、データベースを効率よく構築できます。
AccessにはExcelでいうところの行にあたるレコードと、列にあたるフィールドと表であるテーブルをつくっていく必要があります。
Excelともうひとつ違うところは、Accessには「主キー」というものがあります。これは、マスタとなるテーブルと別のもうひとつのテーブルにおいて、「商品コード」など2つのテーブルで対応するコードがあれば「リレーションシップ」という形で結びつけることが出来ます。
この機能によって別のテーブルで商品コードを入力すれば、マスタとなるテーブルの商品コードを参照して、マスタのテーブルにある商品名や商品単価も、別のもう一方のテーブルに自動的に入力される、という仕組みです。他にもリレーションシップによってExcelにはないメリットがいくつもあります。
クエリよるデータの加工
クエリよるデータの加工とは、要はExcelでいうところの検索機能みたいなものです。例えばExcelで表があったとして、フィルターをかけて表の一番上の項目の部分で文字列を入力したり、「1,000以上」といった比較演算子を使って特定の行を表示させる時ってたくさんあるのではないでしょうか。
Accessでもそういった形で特定の条件で意図するレコードを表示させる方法はあるのですが、Excelと異なる点は「複数のテーブル間で特定の条件で特定のフィールドを1つのテーブルにして抽出できる」といったことや「既存のフィールドを元に演算フィールドを作成できる」機能があるところです。
クエリというのは、Excel以上に様々な条件で検索できるということと、それは複数のテーブル間でもいろんな形で抽出できるということです。
フォームによるデータの入力
フォームというのは、日頃からExcelを使っている人にはあまり馴染みがないかもしれません。ExcelVBAなどを勉強すると、この使い方はたくさん出てきます。フォームについては『よくわかる Microsoft Access 2013 基礎 (FOM出版のみどりの本)』に以下のように書かれています。
p.118
「フォーム」とは、効率よくデータを入力したり、更新したりするためのオブジェクトです。フォームを利用すると、1レコードを1画面に表示したり、帳票形式で表示したりできるので、データの入力が容易になります。
例えばExcelの場合だと表に直接数値や文字列を入力していくことが多いですが、Accessだと表であるテーブルに入力する前に、ある程度固定された入力項目があるフォームを使うことにより、ワンクッションおいてわかりやすい形で入力することができるということです。
Accessにおけるフォームというものは、ただ単純にわかりやすい入力項目があるという形になっているだけではなく、いくつかのレイアウトや項目ごとにプロパティを通して書式や入力できる範囲などを設定することもできます。
レポートによるデータの印刷
Accessでできるレポートによる印刷とは、Excelでいうところの表の印刷形式の設定にあたるかと思います。Excelでは印刷する前に「改ページ」の設定や表をどれくらいの大きさで印刷するかの倍率を設定したりすることができますが、Accessだとそれ専用の画面があってさらに細かく設定できる感じです。
Accessでテーブルを印刷できるレポートという機能を使うと、それまでに作成してきたテーブル、クエリから印刷したい特定のフィールドを選択することができます。また印刷形式において
- 単票形式
- 帳票形式
- 表形式
といったレイアウトを選択することもできます。
またデザインビューという画面を使うと、テキストボックスやラベルなどを通して、自分の意図したものを表示させたい所に表示させることができます。
例えばレポートのヘッダーの部分に担当者コードやそれに対応する担当者名を表示できるようにしたり、レポートのフッターの部分に取引先ごとに売上金額の合計を自動で表示させることができるように設定できます。
AccessとExcelの大きな違い
Accessの勉強については、次の2冊を使いました。
- 『よくわかる Microsoft Access 2013 基礎 (FOM出版のみどりの本) 』
- 『よくわかる Microsoft Access 2013 応用 (FOM出版のみどりの本) 』
勉強し始めてまず最初に感じたのは、Accessというのは「やたら設定が多い」ということです。この理由はなんとなくわかります。その大きな理由のひとつは、
- 「ユーザーに入力ミスをさせない」ため
であり、さらにその理由は
- 「入力ミスなどがあるとデータベースとして正しく機能しない」
ということがあるのではないでしょうか。
これはExcelと比較するとわかりやすいです。例えばExcelで、ある列に「金額の数値」を入力しようとしたとします。Excelの場合は特に何か制限があるわけではなくテンキーなどで「2,280」と入力するだけです。もしくは「,」(カンマ)や「通貨」の書式を列につけるぐらいではないでしょうか。
先にも書きましたが、Accessを勉強すると、まず「テーブル」という概念が出てきます。Excelでいうところの「表」にあたります。これがAccessになるとフィールドひとつひとつに「データ型」というものを設定していく必要があります。例えば以下のような感じです。
○ データ型 : 説明
- 短いテキスト:文字(計算対象にならない郵便番号などの数字を含む)に使用する
- 数値型:数値(整数、小数を含む)に使用する
- Yes/No型:二者択一の場合に使用する
上記以外にもデータ型はあるのですが、わかりやすいものをピックアップしてみました。基本的にはその列に定めたデータ型以外のデータは入力できなくなります。数値型であれば文字列は入力できなくなりますし、Yes/No型であればチェックマークをつけるかつけないかしかできなくなります。
ExcelVBAで、この「データ型」というルールはたくさん見てきたので「あぁ、あれか」という感じでそれほど抵抗なく入っていけました。そういった概念がなく初めてAccessを勉強する人は、Excelではあまり見かけない様々な新しいルールに戸惑ってしまうかもしれません。
以前は、Accessというのは「Excelの延長」みたいなイメージがありました。単純に扱う数値やデータの量がExcelの時より多くなるだけみたいに思っていました。そういった部分ももちろんあるのでしょうが、実際に勉強してみて思ったのは、ここまで書いてきたように、ひとつひとつの入力ごとに「非常に設定が多い」ということです。
Accessを勉強するようになってExcelに対していくつか気づくこともありました。そのなかのひとつは「入力に対して自由度が高すぎる」ということです。ここまでAccessのたくさんあるルールのひとつに触れましたが、それは「設定が多い」ということでした。
ここから「Excelは入力の自由度が高すぎる」という逆の見方もできるわけです。もちろんExcelでも以下の「入力規則」という機能のようにデータを入力する際にいろいろと制限をかけることができます。
Excelにはそういった機能はあるのですが、業務上で頻繁に入力規則を使う機会ってあるでしょうか。自分の今までの経験からたぶんそこまで意識することってないと思います。今まで働いてきた会社で「入力規則でこういった設定にした方がいい」と言われたこともありませんでした。また、「この列は数値しか入れられないようにする」とか「この列は10文字までしか入れられないようにする」といったことを上長から指示されたこともなかったです。
今までExcelの方しか使ったことがなかったのでほとんど意識していませんでしたが、Accessを勉強するようになって思ったのは、以上のようにひとつひとつの入力に対して「設定が多い」ということです。
ユーザーフォーム設計におけるヒントテキストとアプリケーション開発用ソフト
ここまでAccessというものは「設定が多い」といったことを書いてきました。Accessの中の機能にはそういった部分がたくさん見受けられるのですが、その中のひとつに「ヒントテキスト」といった機能もあります。
Accessを勉強する際に役立つ教材のひとつとして立山秀利さんの『Accessのデータベースのツボとコツがゼッタイにわかる本 2013/2010対応』という本があります。本書はAccessを勉強する前にまずAccessの基礎的な部分を学ぶうえで入りやすいかと思います。
その本書の中で次のような部分があります。
p.232
Accessのフォームでは、入力を補助するさまざまな機能を追加できます。ここではその1つである「ヒントテキスト」を追加してみます。「ヒントテキスト」とは、フィールドにマウスポインタを重ねると、メッセージポップアップで表示される機能です。たとえば、そのフィールドに入力するデータの制限事項などをメッセージに表示するなどして、ユーザーの入力作業を手助けします。
ExcelVBAでいうところのコメント機能といったところでしょうか。Accessにはこういった入力を補助する「設定」もあるんですね。業務で普通にExcelを使っていた時はこういった概念はなかったですね。
みんなExcelについてある程度の知識はあって当たり前みたいな感覚が無意識のうちに共有されていたのかもしれません。冒頭でも書きましたが、こういった所が「Accessってこんなことまでするの?」と感じた部分です。
要はAccessを使うのはユーザーにとってはいろいろと難しい、ということを設計・開発した人も結構認識していたのではないでしょうか。この「ユーザーにとってはいろいろと難しい」のがより理解できる部分が『Accessマクロ&VBAのプログラミングのツボとコツがゼッタイにわかる本』に次のように書かれています。
p.14
また、Accessでは通常通り作成したアプリケーションは、他にユーザーに優しくない点として、テーブル構造の編集やフォームのレイアウト作成などを行うリボンのタブや、オブジェクトの並んだナビゲーションウィンドウなど、アプリケーション開発用の機能が表示されたままになっています。そのため、Accessに詳しくないユーザーが誤って操作してしまい、アプリケーションを壊してしまう可能性があります。
Accessってアプリケーションを開発するためのソフトだったんですか・・・(汗)
「開発用のソフト」ってSEとかプログラマーのようなその道の専門家の人がさらに専門的に仕事をする上で使うような道具、といったイメージがあります。ここまでAccessというのは、設定が多いといったことを書いてきたように、やっぱりなんとなくの難しさは感じていました。
今までExcelばかり使っていて、Accessというほとんど触ったことがなかったソフトを勉強するから難しく感じるんだろうと思っていましたが、たぶんもっと根本的にわかりづらいというか難しいんじゃないかなと思います。
Accessを勉強する前にExcelVBAを勉強しておくとスムーズに入れるかもしれない
ここまでExcelと比較してAccessはどういったものかについて自分なりの視点で書いてきました。まだそれほどしっかりと勉強してきたわけではないのですが、Excelと比較するとExcelにはない機能や設定が多々あるので、その点は戸惑うかもしれません。
ではどうすればいいのかということなんですが、ここまでの文章でも軽く触れてきましたが、Accessを勉強する前にExcelVBAを勉強しておくといいかもしれない、ということです。というのも今まで学んできたExcelVBAの知識に似たような用語がAccessにはたくさん出てきたからです。
ここまでにもいくつか書いてきましたが、例えば
- コントロール
- フォーム
- オブジェクト
- データ型
- 比較演算子
- DateSerial関数
- DateDiff関数
などです。これらはExcelVBAを勉強すると出てくる用語です。
もちろんExcelVBAを勉強しなくても全然構わないのですが、Accessに出てくる新しいルール、用語を理解するうえでExcelVBAを勉強しておくとそれほど抵抗なく入れる感じがします。
Accessを学ぶ前にExcelVBAを学ぶことは全然損ではないと思いますし、AccessVBAを勉強することも考えている人がいれば、ExcelVBAの勉強は非常に有効ではないかと思います。
コメント