既存の Access アプリケーションの Access 2007 への移行

  

Jan Fransen (A23 Consulting)
Ken Getz (MCW Technologies (英語), LLC)

2006 年 12 月

適用対象:
   Microsoft Office Access 2007
   Microsoft Office Access 2003
   Microsoft Access 2002
   Microsoft Access 2000

要約: Access 2007 の新しい機能と、その機能を利用して既存の Access アプリケーションを拡張する方法を学習します。ご使用のデータベースを新しい ACCDB 形式に変換するときに考慮すべき点について説明します。

目次

Access 2007 へのアプリケーション移行についての概要
Access 2000、Access 2002、または Access 2003 のアプリケーションを Access 2007 で開く
データベース形式の変換についての判断
表示およびユーザー インターフェイスの変更
コードおよびサード パーティ コントロールの変更
データ処理の変更
まとめ
追加情報

Access 2007 へのアプリケーション移行についての概要

これまでに、2007 Microsoft Office system の新しいユーザー インターフェイスについては、記事を読んだり、目にしたり、または実際に操作されたことがあると思います。しばしば耳にするのは、リボンやクイック アクセス ツール バーなどの機能です。これらは、Office システムを実際に操作するユーザーに対して、使いやすいアプリケーションを提供することを目的としています。Microsoft Office Access チームでは、開発者向けに複数の機能を追加しています。新しい機能の多くは、たとえば Microsoft Office Access 2007 に含まれるサンプル データベースやテンプレートで確認できます。こうした機能はすべて Access 2007 用に設計されたものです。Access の以前のバージョン用に開発されたアプリケーションを Access 2007 で最初に開くときに、そのアプリケーションが機能するかどうか、また、正しく表示されるかどうかがわからない場合もあると思います。あるいは、アプリケーションを書き直さずにこれらの新機能を使用できるかどうかについて、懸念されているかもしれません。

この記事では、既存のアプリケーションに関する以下のような検討事項について説明します。

  • 従来のバージョンの Access で書かれたアプリケーションを Access 2007 で開くときに注意する機能。
  • 既存の Access データベースを新しい Access 2007 形式に変換する場合と、変換しない場合についての判断。
  • 新しい Access 2007 の機能を利用して既存アプリケーションの UI と表示効果を変更する方法。
  • 不要な Microsoft Visual Basic for Applications (VBA) コードまたは ActiveX コントロールをアプリケーションから削除するための変更。

この記事では、既存のアプリケーションを書き直さずに Access 2007 の新しい機能を有効に使用する方法についての説明を主に行います。そのほか、既存のアプリケーションを変更する、または新しいアプリケーションを作成するときに検討する機能についても指摘します。

既存のアプリケーションを移行して、Access 2007 の新機能を活用する方法についての説明では、Microsoft Access 2000 の Northwind サンプル データベースを使用します。このデータベースは、Access 2000、Microsoft Access 2002、Microsoft Office Access 2003 に含まれていましたが、Access 2007 では新しいバージョンのデータベースに変更されています。

Access 2000、Access 2002、または Access 2003 のアプリケーションを Access 2007 で開く

従来のバージョンの Access で書かれたアプリケーションは Access 2007 で開くことができます。アプリケーションは、基本的に Access 2003 と同様に動作しますが、いくつかの例外があります。Access 2003 と比較すると、Access 2007 ではナビゲーション ウィンドウやリボンなどの明らかな UI の変更に加えて、セキュリティ メッセージの表示やカスタム メニューの表示方法が異なっています。また Access 2007 では、これまでの Access の DataAccessPage オブジェクトはサポート外となっています。

セキュリティに関する変更

Access 2003 でアプリケーションを開くと、セキュリティに関するダイアログ ボックスが表示される場合があります。ダイアログ ボックスとオプションの数は、Access のインストールの状況と、開いているデータベースがデジタル署名されているかどうかによって異なります。Access 2007 の場合、データベースを開くときにダイアログ ボックスは表示されませんが、署名のないデータベースを開くと、図 1. で示すようなセキュリティの警告が表示されることがあります。この警告はリボンの下の "ビジネス バー" と呼ばれる領域に表示されます。

図 1. Access 2003 のダイアログ ボックスに代わるセキュリティの警告

Bb203849.bb203849_fig1(ja-jp,office.12).gif

セキュリティの警告が表示されるかどうかは、Access 2003 の [セキュリティ警告] ダイアログ ボックスと同様に、マクロの設定によって異なります。Access 2007 でマクロの設定を変更するには、画面の左上隅にある新しい Microsoft Office ボタン (図 2. 参照) をクリックして、メニュー下部の [Access のオプション] ボタンをクリックします。Microsoft Office ボタンでは、ファイルに関する操作が実行できるほか、Access の設定に関するオプションにアクセスできます。

図 2. Microsoft Office ボタン

Bb203849.bb203849_fig2(ja-jp,office.12).gif

[Access のオプション] ダイアログ ボックスの [セキュリティ センター] タブをクリックして [セキュリティ センターの設定] をクリックします。[セキュリティ センター] ダイアログ ボックスの [マクロの設定] タブをクリックします。オプションは図 3. のとおりです。

図 3. マクロを実行するかどうか、およびマクロが無効の場合に通知を表示するかどうかについてのオプション

Bb203849.bb203849_fig3(ja-jp,office.12).gif

**メモ:   **Access の以前のバージョンと同様に、Microsoft Office セキュリティに関して使用される "マクロ" という用語は VBA コードのことであり、Access マクロのことではありません。

[警告を表示してすべてのマクロを無効にする] オプションは最も便利なオプションです。このオプションを選択すると、Access 2007 で表示されるセキュリティの警告画面から、データベースを読み込んだ後に 2 種類の方法で簡単にコードを有効にすることができます。現在のセッションでのみコードを有効にするには、セキュリティの警告メッセージの横に表示される [コンテンツの有効化] をクリックします。[Office のセキュリティ] ダイアログ ボックスが表示されます (図 4. 参照)。[このコンテンツを有効にする] を選択して [OK] をクリックすると、このセッションでのみコードを有効化します。

図 4. [Office のセキュリティ] ダイアログ ボックスによるコンテンツの一時的な有効化

Bb203849.bb203849_fig4(ja-jp,office.12).gif

このデータベース、または任意のデータベースを読み込むときの動作を指定し、その設定値を保持する場合は、セキュリティの警告メッセージの横に表示される [セキュリティ センター] をクリックして [セキュリティ センター] ダイアログ ボックスを開きます。セキュリティ センターでは、マクロのセキュリティ設定を変更するだけでなく、信頼済みの発行元または信頼済みの場所を Access に追加することもできます。

作成したスタートアップ フォーム以外のセキュリティ警告がエンド ユーザーに対して表示されることを懸念する場合は、信頼済みのデータベースでなければ実行可能な Access マクロのアクションは制限されるという点を利用します。起動時にマクロを使用してセキュリティの状態を確認し、その状態に応じたアクションを適用することができます。

Access 2007 では、従来のバージョンの Access と同様に AutoExec マクロがサポートされています。データベース内に AutoExec という名前の Access マクロが存在する場合、データベースを開くときにそのマクロが自動的に実行されます。Access 2007 では、CurrentProject オブジェクトの新しいプロパティとして IsTrusted プロパティが提供されています。開発者は、これによってアプリケーションの他の要素を読み込めるかどうかを確認でき、その後、ユーザーがアプリケーションを実行するために行う操作を通知するメッセージ (コードを含まないフォーム、またはメッセージ ボックスを使用) を表示できます。マクロの定義は図 5. のようになります。

図 5. データベースが信頼済みでない場合でも多くのマクロ アクションの実行が可能

Bb203849.bb203849_fig5(ja-jp,office.12).gif

カスタム メニュー バー

従来のバージョンの Access では、独自にカスタム メニュー バーを作成できます。また、既定のメニュー バーの代わりにカスタム メニュー バーを使用することもできます。Access 2007 では、カスタム メニューの動作は既存の起動オプションに応じて変わります。たとえば、カスタム メイン メニュー バーが含まれており、かつ、組み込みのツール バーが非表示に設定されているデータベースを開くと、Access 2007 の標準のリボンの代わりにカスタム メニューが表示されます。また、組み込みのツール バーがデータベースの起動オプションで無効になっていない場合、[アドイン] という名前の新しいタブがリボンに追加されます。カスタム メニューは、その [アドイン] タブに表示されます (図 6. 参照)。

図 6. [アドイン] タブに表示されるカスタム メニュー

Bb203849.bb203849_fig6(ja-jp,office.12).gif

カスタム メニュー バーのオプションとその他の起動オプションは、[Access のオプション] ダイアログ ボックスの [カレント データベース] タブにあります。

データ アクセス ページ

従来のバージョンの Access では、データ アクセス ページを使用して、Access データを表示するブラウザ ベースのページを作成できます。Access 2007 では、アプリケーションにデータ アクセス ページが含まれている場合はナビゲーション ウィンドウにその内容が表示されます。ただし、Access 2007 にはデータ アクセス ページ デザイナは含まれていません。Access 2007 でデータ アクセス ページを開くと Internet Explorer が起動され、ページが開かれます。ページのデザインを変更する場合は、Access 2003 を使用する必要があります。

データベース形式の変換についての判断

Access の最近のいくつかのバージョンでは、バージョンごとに新しいデータベース形式が採用されてきましたが、それらをバージョンアップの都度最新の形式にアップグレードする必要はありませんでした。Access 2007 でも同様に、データベースをアップグレードする必要はありません。新しい Access 2007 データベース形式の拡張子は、.mdb ではなく、.accdb になりますが、.mdb 拡張子のデータベースは、Access 2007 で開いても正常に実行できます。.mdb データベースを新しい .accdb 形式に変換した場合、一部の機能は使用できますが、使用できなくなる機能もあります。.accdb 形式に移行する必要があるかどうかは、データベース アプリケーションや環境によって異なります。

ACCDB 形式に変換を行う際の検討事項

.accdb 形式では、優れた新機能を使用できます。ここでは、ご使用のアプリケーションでの変換を検討する際の参考として、ごく簡単に一部の機能について説明します。

Access 2007 に用意されている複雑なデータ型 (例: "添付ファイル"、"列の履歴"、"複数値" などの各種フィールド) を利用する場合は、.accdb 形式を使用する必要があります。

UI レベルでは、.accdb 形式では新しい Access テーマとして、Luna (Microsoft Windows XP の青のテーマ) および Obsidian (Windows Vista の黒のテーマ) がサポートされています。.accdb データベースでは、フォーム デザイナにある色の作成に [Access テーマの色] が表示されます (図 7. 参照)。

図 7. 色の作成での Access テーマの色

Bb203849.bb203849_fig7(ja-jp,office.12).gif

[Access のオプション] ダイアログ ボックスの [データシート] ページで Office のテーマを変更できます。色の作成の [Access テーマの色] セクションから色を選択すると、フォームを開くときに現在使用されている Office テーマに基づく色が表示されます。

.accdb データベースでテーマの色を使用して .mdb 形式で保存を行った場合は、[Access テーマの色] パレットで設定した色はすべて、青か黒のいずれかで表示されます。

ACCDB 形式に変換すべきではない場合

Access 2003 より前のバージョンの Access を使用しているユーザーがデータベースを開いて操作する必要がある環境では、そのデータベースを .accdb 形式に変換しないでください。Access 2007 では Access 2000、Access 2002、Access 2003 の .mdb ファイルを読み書きすることができますが、以前のバージョンの Access では .accdb 形式を読み込むことはできません。

Access のレプリケーション機能を使用してデータベースを同期している場合も変換は実行しないでください。レプリケーションは .accdb 形式ではサポートされていません。マスタとレプリカを作成して同期を行うための各種ツールは、Access 2007 で .mdb データベースを操作する際に引き続き使用できます。これらのツールはリボンの [データベース ツール] タブにあります。

ユーザー レベルでセキュリティを適用している場合は、データベースの変換は実行しないでください。Access 2007 ではレプリケーションと同様、.mdb データベースでのユーザー レベルのセキュリティはサポートしていますが、.accdb データベースでのサポートは行っていません。データベース アプリケーションでユーザー レベルのセキュリティを適用し、特定のユーザーに対してデータの表示/編集やオブジェクトのデザイン変更を許可しないように設定していたり、ユーザーごとにアプリケーションでの操作方法を変えている場合は、新しい形式への変換を実行する前にアプリケーションを再設計する必要があります。

新しいデータベース プロパティ

従来のバージョンの Access では、Access アプリケーションの機能や各データベースの機能を変更する場合は、[ツール] メニューの [オプション] ダイアログ ボックスを使用します。Access 2007 では、アプリケーションのプロパティ、データベースのプロパティ、起動に関するオプションが [Access のオプション] ダイアログ ボックスに配置されています。これは画面の左上隅にある Microsoft Office ボタンをクリックすると使用できます。Access 2003 の使い慣れたオプションに加えて、新しい Access 2007 機能を活用するための新しいオプションが複数追加されています。Access 2007 で既存のデータベースを操作する場合、既定のオプションのままでも使用できますが、オプションの動作方法を少し変更すると、エンド ユーザーにとって使いやすくなります。エンド ユーザーがこれらの設定値を変更するケースについても考慮してください。次のセクションでは、こうしたオプションの変更がアプリケーションに与える影響について説明します。

レイアウト ビュー

Access 2007 では、フォームやレポート用に "レイアウト ビュー" という新しいビューが導入されています。レイアウト ビューは、フォーム ビューとデザイン ビューを組み合わせたビューです。フォームまたはレポートにライブ データが表示され、デザイン ビューのようにコントロールの追加と削除、コントロールの移動、プロパティの変更が可能です。レイアウト ビューは開発者が設計するときに役立つビューですが、アプリケーションを展開した後にユーザーが使用できないようにする必要が生じる場合があります。[Access のオプション] ダイアログ ボックスの [カレント データベース] ページで [このデータベースのレイアウト ビューを使用可能にする] チェック ボックスをオフにすると、データベース全体のレイアウト ビュー機能を無効にできます。

数値の表示

Access の以前のバージョンでは、大きい数を表示するときに問題が発生することがあります。たとえば、フォームやレポートの小さなコントロールで、非常に大きな数の表示が切り捨てられることがあります。通常、値全体が表示されることはありませんが、混乱の原因になる可能性があります。たとえば、図 8. の Access 2003 データシートの右側にある [Extended Price (増値)] 列では、列幅が調整され、増値の一部だけが表示されています。

図 8. 数値全体が表示されているかどうかを判断できない可能性がある

Bb203849.bb203849_fig8(ja-jp,office.12).gif

既定では、Access 2007 も従来のバージョンと同じ動作をします。しかし、[Access のオプション] ダイアログ ボックスの [カレント データベース] ページで [数値フィールドの文字切れをチェックする] チェック ボックスをオンにすると、この動作を変更できます。このオプションをオンにすると、切り捨てられた数値の代わりに数字記号 (#) が表示されます。図 9. に、Access 2007 の同様のデータシートでこのオプションを選択した場合の例を示します。

図 9. 切り捨てられた数値の代わりに # 記号を表示

Bb203849.bb203849_fig9(ja-jp,office.12).gif

ナビゲーション ウィンドウとデータベース ウィンドウ

アプリケーションのユーザーに対してデータベース ウィンドウの表示を許可する場合も許可しない場合も、新しいナビゲーション ウィンドウが役立ちます。データベース ウィンドウは前面に表示される他のウィンドウによって隠されてしまうことがありますが、ナビゲーション ウィンドウは画面の左側に常に表示されます。複数のさまざまなオブジェクトを操作する場合、このウィンドウを常に開いておくことができます。ナビゲーション ウィンドウを一時的に隠す場合は、F11 キーを押すか、右上隅の [シャッター バーを開く/閉じる] ボタンをクリックし、ウィンドウで使用するスペースを最小化できます。もう一度同じ操作を行うと、ナビゲーション ウィンドウは元のサイズに戻ります。

ナビゲーション ウィンドウは、すべてのデータベース オブジェクトを種類別に整理して表示するという点で、データベース ウィンドウと同様の機能を持っています。既定では、一度にすべてのオブジェクトが表示されますが、グループごとに表示を折りたたんだり展開することができます。また、データベース ウィンドウと同じように、一度に 1 種類 (テーブルのみ、クエリのみ、フォームのみなど) に表示を制限することもできます。図 10. は、ナビゲーション ウィンドウのセクションを示しています。ここでは、データベース内のすべての Access オブジェクトを、オブジェクトの種類ごとにグループ化して表示する設定になっています。

図 10. スクロール可能な一覧ですべてのオブジェクトを表示

Bb203849.bb203849_fig10(ja-jp,office.12).gif

作成日付や変更日付、テーブルと関連ビュー、定義したカスタム グループなどの基準でグループ化を行って表示することもできます。他の並べ替えオプションを選択するには、ナビゲーション ウィンドウ上部のドロップダウン ボタンをクリックします (図 11. 参照)。

図 11. ナビゲーション ウィンドウでのオブジェクトのグループ化やフィルタ処理

Bb203849.bb203849_fig11(ja-jp,office.12).gif

カスタム グループを定義する、またはナビゲーション ウィンドウに検索バーを追加するには、[Access のオプション] ダイアログ ボックスの [カレント データベース] ページを開いて [ナビゲーション オプション] をクリックします。図 12. に [ナビゲーション オプション] ダイアログ ボックスを示します。このダイアログ ボックスを使用して、Access 2003 のデータベース ウィンドウと同様に、非表示オブジェクトやシステム オブジェクトの表示/非表示を切り替えることができます。

図 12. ナビゲーション ウィンドウの表示設定のカスタマイズ

Bb203849.bb203849_fig12(ja-jp,office.12).gif

作成したアプリケーションで、ユーザーに対してナビゲーション ウィンドウを完全に非表示にする場合は、設定を非表示にすることができます。ウィンドウを非表示にするオプションは、[Access のオプション] ダイアログ ボックスの [カレント データベース] タブに配置されています (図 13. 参照)。

図 13. チェック ボックスをオフにして起動時にナビゲーション ウィンドウを非表示にする

Bb203849.bb203849_fig13(ja-jp,office.12).gif

タブ付きドキュメント

Access 2007 の既定の設定では、各オブジェクトは従来のバージョンと同様に独立したウィンドウとして開かれ、並べられます。アプリケーションによっては、フォームやレポートを閉じずに別のフォームなどを開くと、ウィンドウが重なってユーザーが操作に迷ってしまうことがあります (図 14. 参照)。

図 14. 既定ではオブジェクトは独立したウィンドウとして開かれる

Bb203849.bb203849_fig14(ja-jp,office.12).gif

タブを使用して、開いているオブジェクトを単一のウィンドウで表示することができます。この場合、[Access のオプション] ダイアログ ボックスの [カレント データベース] ページにある [ドキュメント ウィンドウ オプション] で変更を行います (図 15. 参照)。

図 15. 各オブジェクトを個別ウィンドウで表示する/タブを使用して単一のウィンドウで表示する

Bb203849.bb203849_fig15(ja-jp,office.12).gif

図 16. では、タブを使用して、図 14. と同じオブジェクトを単一のウィンドウで表示しています。すべてのタブを含むウィンドウ内で、オブジェクトは最大化され、ウィンドウいっぱいに表示されます。

図 16. タブを使用して単一のウィンドウでオブジェクトを開く

Bb203849.bb203849_fig16(ja-jp,office.12).gif

Access 2007 のダイアログ フォームの処理は、Access の従来のバージョンと同じです。フォームをダイアログ ボックスとして開くと、Access 2007 では [ドキュメント ウィンドウ オプション] の設定に関係なく、それぞれ個別のウィンドウにフォームを表示します。

表示とユーザー インターフェイスの変更

Access 2007 では、フォームに新しいプロパティが複数導入され、視覚的な面で大幅な向上が図られたほか、使いやすいアプリケーションをきわめて簡単に作成できるようになりました。既存のアプリケーションを変更する場合は、"アンカー" に関するプロパティ、分割ビューのオプション、新しいオートフォーマット スタイルを利用できます。

画面サイズが予測できない場合の設計

開発者は、使用可能なスペースを活用する一方で、ユーザー画面のサイズがわからない場合でもフォームの見栄えを良くするにはどうすればいいのか、という問題について苦労してきました。タブ付きドキュメントを単一のウィンドウに表示するオプションでは、こうした問題に新たに取り組む必要があります。従来は、フォームの実行時に画面の解像度を検出するコードを使用し、フォームを開いたときにプログラムでコントロールのサイズを調整していました。Access 2007 では、設計時に利用できる新しいコントロール プロパティがサポートされています。このプロパティを使用すると、実行時の状況によってコントロールのサイズと位置が Access によって自動的に判断されます。ただし、Access 2007 でも、画面サイズに合わせたフォント サイズの変更は行われません。フォームの端からの距離を維持するためにコントロールのサイズが調整されるだけである点に注意してください。

例として、図 17. に示す Categories (カテゴリ) フォームについて検討してみましょう (縮小された例)。このフォームの情報は、ウィンドウ内で使用可能なスペースの 4 分の 1 しか使用していません。

図 17. 効率的に使用されていない画面スペース

Bb203849.bb203849_fig17(ja-jp,office.12).gif

Categories フォームおよびそのサブフォームである Product List (製品リスト) フォームは、800 x 600 の画面解像度が一般的となり、かつ 640 x 480 の画面解像度がまだ使用されていた頃に作成されたものと考えられます。これらの解像度は現在ではめったに使用されないため、フォームではより大きなレイアウトを使用できます。このフォームの見栄えを良くするため、製品リストを広げ、各行の内容を 1 行にします。Access 2003 では、このような変更を行うには、マウスと配置ツールを使用して数分かかります。Access 2007 では、次の手順によって変更を行います。

  1. ナビゲーション ウィンドウで製品リストを右クリックし、[デザイン ビュー] を選択します。

  2. フォームの空白の領域をクリックし、ドラッグで四角形を描くように範囲選択を行い、フォーム内のすべてのコントロールを選択します。

  3. リボンの [配置] をクリックします。

  4. [コントロールの配置] グループの [表形式] をクリックします。フォームは図 18. のように調整されます。

    図 18. 目標とするレイアウトに近い表形式レイアウト

    Bb203849.bb203849_fig18(ja-jp,office.12).gif

  5. [ProductName] は、一番左に配置する必要があります。このコントロールを選択し、配置バーが [QuantityPerUnit] の左に来るまで左方向にドラッグします。

    ドロップすると、テキスト ボックスは QuantityPerUnit コントロールに重なることなく、左側に配置されます。また、テキスト ボックスのラベルは、ラベルとテキスト ボックスがフォームの異なるセクションにある場合でも一緒に移動します。

    続いて、従来の方法によって新しいレイアウトを完成させます。

  6. すべてのコントロールを選択して左にドラッグします。

  7. 最後のコントロールの右側のスペースを削除します。

  8. [詳細] セクションのコントロールのみを選択して、セクションの上までドラッグします。

  9. 移動したコントロールの下にある [詳細] セクションのスペースを削除します。

  10. [フォーム フッター] セクションのスペースを削除します。

  11. [ProductName] のラベルを左に揃えます。ラベルを選択し、リボンの [デザイン] をクリックします。

  12. リボンの [フォント] グループで [左揃え] をクリックします。

    新しいレイアウトは図 19. のように表示されます。

    図 19. 使い慣れたレイアウト ツールと配置ツールのすべてを使用することが可能

    Bb203849.bb203849_fig19(ja-jp,office.12).gif

製品リストの変更内容を保存して Categories フォームを開くと、サブフォームは前と同じ大きさのスペースに表示されています。サブフォームの開始位置の右側と下のスペースも使ってレイアウトを表示するには、次の手順を実行します。

  1. Categories フォームを右クリックして [デザイン ビュー] を選択します。

  2. Product List サブフォームを選択して右クリックします。[アンカー設定] をポイントして [上下左右に引き伸ばし] を選択します (図 20. 参照)。サブフォームの [プロパティ] ウィンドウを確認すると、[上下左右に引き伸ばし] オプションによって、サブフォームの "水平アンカー" プロパティと "垂直アンカー" プロパティが "両方" に設定されていることがわかります。

    図 20. コントロールの "アンカー" プロパティを設定するアンカー設定オプション

    Bb203849.bb203849_fig20(ja-jp,office.12).gif

  3. フォーム ビューに切り替えます。サブフォームは、図 21. のようにウィンドウがどのような大きさであっても下方向および水平方向に引き伸ばされるようになりました。

    図 21. 利用可能なスペースをすべて使用しているサブフォーム

    Bb203849.bb203849_fig21(ja-jp,office.12).gif

ナビゲーション ウィンドウを表示してサイズを変更すると、サブフォームのコントロール サイズが自動的に変更されることが確認できます。フォームのその他のコントロールでも、使用可能なスペースいっぱいにレイアウトが表示されるように "アンカー" プロパティを変更することができます。フォームの右側に写真を移動して Category Name コントロールと Description コントロールを広げるには、次の手順を実行します。

  1. Categories フォームをデザイン ビューに切り替えます。

  2. Picture コントロールを選択します。

  3. "水平アンカー" プロパティを "右" に変更します。

  4. CategoryName コントロールおよび Description コントロールを選択します (ラベルは選択しません)。

  5. "水平アンカー" プロパティを "両方" に変更します。

  6. フォーム ビューに切り替えます。空いていたスペースがコントロールによって埋められています (図 22. 参照)。

    図 22. "アンカー" プロパティを設定して空いていたスペースをコントロールで埋める

    Bb203849.bb203849_fig22(ja-jp,office.12).gif

オートフォーマット

Access で使用できるオートフォーマットは数年間変更されず、International テーマ (地球の絵が描かれたテーマ) は繰り返し使用されてきました。Access 2007 では、新しいオートフォーマットのテーマが 25 種類追加されています。このオートフォーマットを使用して、フォームを更新したり、アプリケーション間で一貫性を持たせることができます。

オートフォーマットは、リボン、フォーム デザイナの [レイアウト]、またはレポート デザイナの [レイアウト] から使用できます (図 23. 参照)。

図 23. Access 2007 の新しいオートフォーマット

Bb203849.bb203849_fig23(ja-jp,office.12).gif

分割ビュー

Access 2003 でフォームにデータを表示する場合、単票、帳票、データシート、ピボットテーブル、ピボットグラフという方法があります。Access 2007 では、さらに分割フォーム ビューが追加されました。これらのビューは、すべて、フォームの "既定のビュー" プロパティの値として使用できます。新しい分割フォーム ビューは、開発者がごくわずかな処理によってユーザーに対して大きな影響を与えられる機能です。

分割フォーム ビューはその名前のとおり、フォームを 2 つに分割し、一方にフォーム ビュー、もう一方にデータシート ビューと類似のビューを表示する機能です。分割フォームの例として、図 24. に Qrders フォームを示します。

図 24. フォーム ビューとデータシート ビューが組み合わされた分割フォーム ビュー

Bb203849.bb203849_fig24(ja-jp,office.12).gif

分割フォーム ビューの双方のビューにあるデータは同期しています。データシート側でユーザーがある行から別の行に移動を行った場合、フォーム側でもデータシートで選択された行への移動が行われます。また、フォーム側でユーザーがあるフィールドから別のフィールドに移動を行った場合、データシート側のフォーカスも対応する列に移動します。

データベースのフォームで分割フォーム機能を使用するには、デザイン ビューでフォームを開き、プロパティ ウィンドウで "既定のビュー" プロパティを探します。続いて、"既定のビュー" プロパティを "分割フォーム" に変更します。分割フォームをさらにカスタマイズできる新しいプロパティも、複数用意されています。たとえば、データシートを編集可能にするかどうかを選択できます。また、フォームに対するデータシートの方向を指定したり、ユーザーが分割バーで 2 つのフォームのサイズを変更できるかどうかを設定することもできます。

コードおよびサード パーティ コントロールの変更

読者の皆さんは、Access の開発者として、これまでさまざまなプロジェクトで使用する標準的なツール セットや技術を開発されてきたことと思います。Access 2007 の設計チームでは、Access 2007 に追加する機能の一覧をまとめる際に、開発者によって繰り返し使用されるコードや ActiveX コントロールを調査しました。Access 2007 を使用する場合、リッチ テキスト、PDF 印刷、および日付選択のためのツールは必要ありません。レポートやフォームの網掛け行を変更したり、ユーザーが動的にルックアップ データを編集するためのコードも不要となります。一方、グローバル変数を扱う新しい方法として、TempVars コレクションが追加されることになりました。

こうした新機能については、Access 2007 データベースの設計に新たに取り組むまでは、考慮する必要はありません。展開済みのアプリケーションで使用中のコードは変更しないことをお勧めします。すべてのユーザーが Access 2007 に移行し、開発者側でも Access 2007 アプリケーションを管理するようになったら、既に使用していないコードやコントロールを排除する時期と考えられます。

フィールドへのリッチ テキストの保存

Access 2007 の "テキスト型" フィールドおよび "メモ型" フィールドでは、オプションとして、書式設定されていないテキストを保存 (従来の Access と同様) したり、太字や斜体などの書式が設定されたリッチ テキストを保存することができます。リッチ テキストを保存するには、フォームのテキスト ボックス コントロールで、"文字書式" プロパティに "リッチ テキスト" を設定する必要があります (図 25. 参照)。

図 25. "文字書式" プロパティを "リッチ テキスト" に設定

Bb203849.bb203849_fig25(ja-jp,office.12).gif

フォームを使用してデータを編集する場合、[リッチ テキスト] テキスト ボックスではリボンのフォント ツールを使用できます。これらのツールを使用すると、テキストに太字、斜体、下線の書式を設定したり、フォントの色を変更できるほか、蛍光ペンを追加することができます (図 26. 参照)。

図 26. 太字、斜体などの書式設定が可能なリッチ テキスト

Bb203849.bb203849_fig26(ja-jp,office.12).gif

Access 内部では、書式設定されたテキストを HTML 形式として格納します (図 27. 参照)。

図 27. リッチ テキストは内部的には HTML として格納される

Bb203849.bb203849_fig27(ja-jp,office.12).gif

**メモ:   **Access 2007 では、複数のサード パーティ コントロールで使用されているリッチ テキスト形式 (RTF) ではなく HTML 形式でリッチ テキストを格納するため、ActiveX コントロールを同等の機能を持つ Access 2007 コントロールに単純に置き換えることはできません。現在、サード パーティ コントロールを使用し、データベースに既に RTF データが格納されている場合は、既存のコントロールを継続して使用する必要があります。リッチ テキストのサポートをアプリケーションに追加する場合は、置き換えを行うのではなく、新しいテキスト ボックス オプションを使用します。

PDF へのレポート出力

PDF (Portable Document Format) はドキュメントを配布するときの標準的な形式です。多くの開発者は、Access レポートやその他の Office システムのドキュメントから PDF ファイルを生成するソフトウェアを購入してインストールしています。Access 2007 では、PDF 形式で出力を行うために別途ソフトウェアを購入する必要はありません。

**メモ:   **PDF 形式で出力を行うには、PDF に関する DLL ファイルをダウンロードしてインストールする必要があります。該当の機能を初めて使用するときに、ダウンロード情報が表示されます。

レポートをプレビューして PDF に出力する場合、リボンの [データ] グループで [PDF] または [XPS] を選択できます (図 28. 参照)。

図 28. PDF 形式でのレポートの保存

Bb203849.bb203849_fig28(ja-jp,office.12).gif

**メモ:   **XPS 形式とは、Microsoft の配布可能なドキュメント形式です。現在 PDF ほど広くは使用されていませんが、その用途は同じです。

名前やその他のオプションの入力を求めるメッセージが表示されます (図 29. 参照)。

図 29. ファイル サイズの選択とファイルを開くかどうかの指定

Bb203849.bb203849_fig29(ja-jp,office.12).gif

ダイアログ ボックスの [オプション] ボタンを使用すると、出力するページを指定したり、ドキュメント構造タグを含めるかどうかを指定できます。[発行] をクリックすると PDF ドキュメントが作成されます。その後、異なるダイアログ ボックス (図 30. 参照) が表示され、エクスポートの手順を保存できます。手順を保存した場合は、次に同じレポートを PDF 形式で保存する際にウィザードを操作する手間が省けます。

図 30. エクスポート手順の保存

Bb203849.bb203849_fig30(ja-jp,office.12).gif

レポートを PDF に出力する前にプレビューを行う必要はありません。ナビゲーション ウィンドウでレポートを右クリックし、[エクスポート] をポイントして [PDF] または [XPS] をクリックします。

OutputTo メソッドを使用すると、レポートを Visual Basic コードで PDF にエクスポートできます。エクスポートを実行するには、OutputFormat 引数を acFormatPDF に設定します。PDF ドキュメントを電子メール メッセージに添付する場合は、SendObject メソッドを使用できます。

日付選択カレンダー コントロールの操作

データベースでユーザーが日付を入力する必要がある場合、多くの開発者は通常 ActiveX コントロールのフォームでポップアップ カレンダーを使用します。Access 2007 では、独立したコントロールやポップアップ フォームを使用しなくても、ユーザーは日付を選択できます。特別な処理は必要ありません。

既定では、ユーザーがデータシートの "日付/時刻" フィールドまたは "日付/時刻" フィールドに連結されたテキスト ボックスに移動した場合、テキスト ボックスの隣に小さなカレンダー アイコンが表示されます (図 31. 参照)。

図 31. 日付形式のテキスト ボックスにカーソルを合わせると日付選択カレンダー コントロールが表示される

Bb203849.bb203849_fig31(ja-jp,office.12).gif

アイコンをクリックするとカレンダーが表示されます (図 32. 参照)。

図 32. 日付選択カレンダー コントロールをクリックし、カレンダーを表示して日付を選択

Bb203849.bb203849_fig32(ja-jp,office.12).gif

この日付選択カレンダー コントロールを表示しない場合は、テーブル デザイナのフィールド プロパティで設定を無効化します。"日付選択カレンダーの表示" プロパティは、各 "日付/時刻" フィールドごとに割り当てられています (図 33. 参照)。

図 33. 特定のフィールドで日付選択カレンダー を無効にする

Bb203849.bb203849_fig33(ja-jp,office.12).gif

データシートやフォームで日付選択カレンダー を表示しない場合は、"日付選択カレンダーの表示" フィールドの値を "日付" から "なし" に変更します。テーブルのプロパティ設定を保持し、現在のフォームに対する設定のみを変更する場合、フォーム レベルで表示を無効にすることができます。この場合はテキスト ボックス コントロールの "日付選択カレンダーの表示" プロパティを使用します。

レポート行の網掛けの変更

行の多い表形式のレポートは、一行おきに薄い網掛けが設定されていると読みやすくなります。この機能を従来のバージョンの Access で実現するには、[詳細] セクションの Format イベント用にコードを記述し、セクションの BackColor プロパティを切り替えます。Access 2007 で同等の処理を行うには、[詳細] セクションの "代替の背景色" プロパティ (図 34. 参照) を変更するだけで済みます。

図 34. "代替の背景色" プロパティを変更して 1 行おきに色を付けたレポートを作成

Bb203849.bb203849_fig34(ja-jp,office.12).gif

色の作成機能を使用して、"代替の背景色" に適切な色を指定します (この色は、BackColor プロパティとは異なる色にする必要があります)。レポートをプレビューして網掛けの効果を確認します。

1 行おきの網掛けが可能なのはレポートに限りません。フォームの [詳細] セクションにも [代替の背景色] 設定があります。図 35. に、1 行おきの網掛けを適用した Product List フォームを示します。

図 35. フォームではレポートと同様に 1 行おきの網掛けが適用可能

Bb203849.bb203849_fig35(ja-jp,office.12).gif

"リスト外入力" フォームを使用する

多くの場合、コンボ ボックス コントロールは静的なリストに基づいています。つまり、一度入力された値がその後変更されることはほとんどありません。状況によっては、ユーザーがメイン テーブルにデータを追加するときに、ルックアップ テーブルへの新しい値の追加が必要になる場合があります。従来のバージョンの Access では、この機能を実現するために Combo Box オブジェクトの NotInList イベントにコードを追加して、ルックアップ フォームを開くか、またはルックアップ テーブルに新しい値を入力するようユーザーに求めます。

Access 2007 では、ルックアップ テーブルを編集するフォームを作成する必要がありますが、コードを記述する必要はありません。Combo Box オブジェクトの "リスト項目編集フォーム" プロパティを編集して、ルックアップ テーブルのフォーム名を参照します (図 36. 参照)。

図 36. "リスト項目編集フォーム" プロパティでフォーム名を指定

Bb203849.bb203849_fig36(ja-jp,office.12).gif

以上により、ユーザーがルックアップ テーブルにない値をコンボ ボックスに入力すると、Access 2007 ではリスト内のアイテムの編集をユーザーに求めるダイアログを表示します (図 37. 参照)。

図 37. 名前がリストに含まれていない場合にユーザーに対して入力を求める

Bb203849.bb203849_fig37(ja-jp,office.12).gif

ユーザーが [はい] をクリックして編集を選択すると、モーダル フォームとして、指定済みのフォームが開きます (図 38. 参照) 。

図 38. リスト項目の編集中は他のタブは無効化される

Bb203849.bb203849_fig38(ja-jp,office.12).gif

ユーザーがフォームを閉じると、Access ではコンボ ボックスのリストを更新します。ユーザーはそれ以上の入力は求められず、次のフィールドに進むことができます。

ボタン機能の拡張

ボタン コントロールは Access で最もよく使用されるコントロールの 1 つです。Access のこれまでのバージョンでは、ボタンは、機能性から見て最も限定的なコントロールでもありました。

たとえば、ボタンにピクチャを追加することはできましたが、ピクチャと共に標題を表示することは問題外でした。ポインタがボタンの上に置かれた際にポインタを変更したり、Microsoft Windows API を呼び出す Visual Basic コードを作成したり、透明色を使用することもできませんでした。また、ボタンの標題の配置では、中央揃えなどの指定も、思いどおりには表示できませんでした。Access 2007 のボタン コントロールでは、これらの制約を解消するための新しいプロパティが複数追加されました。

"ピクチャの標題の配置" プロパティを使用すると、ボタンに追加したピクチャと共に標題を表示できます。"ピクチャの標題の配置" プロパティに、既定値である "ピクチャの標題なし" 以外の値を設定すると、Access ではボタンの "標題" プロパティの内容が表示されます。

標題は、選択した "ピクチャの標題の配置" の値に基づき、ピクチャに合わせて配置されますが、その際、ピクチャおよび標題全体の配置は設定されません。たとえば、あるボタンの "ピクチャの標題の配置" プロパティを "左" に設定し、そのボタンの "配置" プロパティ を "右" に設定すると、標題はピクチャの左に表示されますが、標題とピクチャ全体はボタンの右側に表示されます。

"ポイントしたときのカーソル" プロパティを使用すると、ボタンの上をポイントしたときに表示されるポインタを簡単に変えることができます。"ポイントしたときのカーソル" では、[既定] と [ハイパーリンクの手] が設定できます。"ポイントしたときのカーソル" プロパティに "ハイパーリンクの手" を設定すると、Access ではハイパーリンク上をポイントしたときに表示される見慣れた手のマークが表示されます。

**メモ:   **"ポイントしたときのカーソル" プロパティでは、[コントロール パネル] の [マウスのプロパティ] の [リンクの選択] 設定は使用されません。

"透明" プロパティに "はい" を設定すると、ボタンはユーザーに対して非表示になりますが機能は維持されます。たとえば、複数の透明なボタンをイメージ コントロールに表示されたピクチャの上に配置し、ユーザーがクリックするピクチャの部分によってさまざまなマクロまたは Visual Basic イベント プロシージャを実行することができます。

ボタン コントロールには BackStyle プロパティも追加されています。これは従来のバージョンの Access では、他のコントロールの一部の要素で使用可能でした。ボタンの BackStyle プロパティに "この部分のみ透明" を設定すると、ボタンの標題またはピクチャの一方が非表示になりません。

"配置" プロパティでは、ボタンの標題またはピクチャの配置を調整できます。

TempVars: 新しい開発者ツール

グローバル変数は、起動時に情報を設定してその値をアプリケーション全体で使用するのに便利な変数ですが、その一方で問題になることもあります。グローバル変数で一番やっかいな問題となるのは、アプリケーションがエラーを引き起こすと、Access ですべてのグローバル変数の値がクリアされてしまうという点です。

Access 2007 には、グローバル変数を格納するための TempVars という名前のコレクションが用意されています。このコレクションの主な目的は、Access マクロの使用経験が豊富なユーザーが、非表示フォームのテキスト ボックスを使用することなく、値の格納や取得を実行できるようにすることです。マクロのアクションを使用して、コレクションから値を設定して、取得できます。

TempVars は、次のような点で、経験豊富なユーザーだけでなく開発者にとってもメリットのある機能です。

  • エラーが発生したときに Access がコレクションをクリアしません。
  • TempVars はコレクションであるため、割り当てられたすべてのグローバル値の検索を、必要に応じて繰り返し実行できます。

TempVars コレクションを使用すると、値を設定するだけで、値の新規追加や変更が簡単に実行できるようになります。値が存在しない場合には、コレクションに自動的に値が追加されます。

TempVars("varDBName").Value = CurrentDb.Name

TempVars の値の作成後、データベース内のすべてのプロシージャまたは Access マクロで、その値を読み込み、使用することが可能になります。

Me.Caption = TempVars("varDBName").Value

コレクションを繰り返し使用して、すべてのグローバル値を参照することもできます。

Public Sub DisplayTempVars()
Dim tv As Variant
For Each tv In TempVars
Debug.Print tv.Name & " = " & tv.Value
Next tv
End 

データ処理の変更

Access 2007 では、データ処理に関するいくつかの機能が新たにサポートされています。そうした機能のほとんどは、新しい ACCDB データベース形式を使用します。データ関連の多くの機能が新たにサポートされましたが、この記事ではアプリケーションの移行時に考慮すべき 2 つの機能を主に取り上げています。1 つは、ACCDB 形式で使用する、Access 2007 でのイメージの保存方法に関する機能です。そしてもう 1 つは、MDB と ACCDB の両形式で使用でき、データベースに埋め込まれたイメージではなく、ファイル システムに保存されたイメージを参照する機能です。

ネイティブ形式でのイメージの保存

従来のバージョンの Access では、フォームまたはレポートでイメージ コントロールに追加されたイメージは、ビットマップ (BMP) としてデータベースに保存されます。BMP イメージ ファイルは、JPEG、GIF などのイメージ ファイル形式とは異なり、圧縮されていません。このため、データベースの容量は必要以上に大きくなります。また、他の形式によって提供される透過などの機能は変換時に失われます。

Access 2007 では、イメージを変換せずにネイティブ形式で保存します。ここでのイメージとは、イメージ コントロールの "ピクチャ" プロパティとして指定されたイメージです。

ネイティブ イメージ形式のプロパティの保持

既定では、MDB データベースは、バージョン間の互換性を維持するため、イメージを BMP 形式で保存します。データベースにアクセスするのが Access 2007 クライアント アプリケーションのみであることが確認されており、新しいイメージ保存形式を利用したい場合は、次の手順で [Picture プロパティの保存形式] を変更します。

  1. Microsoft Office ボタンをクリックしてから、[Access のオプション] を選択します。
  2. [カレント データベース] を選択して [元の画像形式を保存する (ファイル サイズが小さくなります)] を選択します。

"添付ファイル" フィールド型の使用

Northwind Traders アプリケーションには、各従業員のピクチャが含まれています。Access 2000 では、これらのピクチャを Employees テーブルの OLE オブジェクト フィールドとして埋め込まずに、データベースと同じフォルダに保存します。その後、Employee フォームの Current イベントで VBA コードを実行して、ユーザーのフォームの移動に応じてそれぞれのピクチャを表示します。

Access 2007 では、このコードの代わりに新しいフィールド型の 1 つである Attachment 型を使用できます。"添付ファイル" 型を使用すると、現在のレコードに任意の数のファイルをリンクさせることができます。

"添付ファイル" フィールド型を有効に利用するには、まずデータベースを ACCDB 形式に変換する必要があります。データベースを変換するには、Microsoft Office ボタン メニューの [変換] を選択します。

データベースを変換した後、現在の "テキスト型" フィールドの代わりに "添付ファイル" フィールドを追加して、それぞれの写真イメージ名を保存できます。手順は次のとおりです。

  1. ナビゲーション ウィンドウで Employees テーブルを右クリックし、[デザイン ビュー] を選択します。

  2. "PhotoAttach" という名前のフィールドを新たに追加します (図 39. 参照)。

    図 39. 添付ファイル用の新しいフィールドを追加

    Bb203849.bb203849_fig39(ja-jp,office.12).gif

  3. データシート ビューに切り替えます。

  4. PhotoAttach フィールドに移動して、先頭のレコードのクリップ アイコンをダブルクリックします。

  5. [添付ファイル] ダイアログ ボックスで、元のデータベースと同じフォルダにある EMPID1.bmp ファイルを添付します。

  6. 残りの行で同じ操作を繰り返します。このテーブルの場合は容量が小さいため、すべての添付ファイルを追加しても短時間で済みます。大きなテーブルで作業をする場合は、この処理を自動的に実行するコードを記述することができます。

  7. ナビゲーション ウィンドウで、Employees フォームを右クリックします。

  8. [デザイン ビュー] を選択します。

  9. Photo フィールドで参照されるファイルの表示に使用されている OLE オブジェクトと他のコントロールを削除します。

  10. Alt + F11 キーを押して Visual Basic Editor を開きます。

  11. Form_Current プロシージャを検索して、コメントアウトするか削除します。

  12. リボンの [ツール] グループで、[既存のフィールドの追加] をクリックします。

  13. [フィールド リスト] で [PhotoAttach] を選択してフォームにドラッグします。

  14. フォーム ビューに切り替えて該当するフォームを探し、写真が変更されていることを確認します。

まとめ

この記事では、Access 2007 の新機能のすべてを取り上げているわけではありません。この記事の目的は、既存のアプリケーションを Access 2007 に移行する際に、直接的な影響がある機能について説明することです。Access 製品チームは Access の開発者が直面する課題について検討し、ここで説明した新機能によって標準的な作業にかかる負担を大きく減らしました。コントロールのアンカーや固定が可能になっただけでも、作成するフォームの完成度には大きな差が生じます。さらに、リスト外入力の処理、イメージ形式のネイティブ サポート、新しいオートフォーマットなどの Access 2007 のさまざまな新機能を存分にご活用いただけると思っています。

執筆者について

Jan Fransen 氏は、マイクロソフト製品に関する執筆、トレーニング、コンサルティングの職に携わっています。ライターとして、同氏は AppDev (英語) のトレーニング コースウェアの策定、Microsoft Office アプリケーションに関する書籍への寄稿、MSDN のホワイト ペーパーの執筆、寄稿、MSDN のホワイト ペーパーの執筆、および開発者が新しいマイクロソフト製品や機能を短期間で理解できるようにするためのサンプルの作成に従事しています。

Ken Getz 氏は MCW Technologies (英語) のシニア コンサルタントであり、AppDev (英語) のコースウェアの開発にも携わっています。また、『ASP.NET Developers Jumpstart』(Addison-Wesley、2002 年)、『Access Developer's Handbook』(Sybex、2002 年)、および『VBA Developer's Handbook』(第 2 版、Sybex、2001 年) の共著者でもあります。

追加情報

この記事に記載されている製品やテクノロジの詳細については、以下の情報を参照してください。