〜Access2007データベース移行レポート(その1)〜#44Access2007データベース移行レポート(その1)拙著「商売繁盛!アクセスで販売顧客管理」の最新版執筆に伴い、Access2000〜2003対応の販売顧客管理データベースを「Access2007+Vista」対応に移行する作業を行いました。その作業で行ったこと・気付いたことなどについてレポートします。「.accdb」への変換と起動時の画面まずはじめに行ったことは、Access2000形式の「.mdb」ファイルを、2007形式である「.accdb」に変換する作業です。それには次のような操作を行います。Access2000形式の販売顧客管理データベースをAccess2007で開きます。Officeボタンより[変換]を選択します。「名前を付けてダイアログ」が表示されたら、「ファイルの種類」が”Access2007データベース(.accdb)”であることを確認して[保存]ボタンをクリックします。この作業はエラーなど出ることなく終わりました。問題は、起動したときの状態です。これは従来の「.mdb」のときはかなり異なっています。Accessインストール後のデフォルト設定ではセキュリティが効いているので、VBAのコードを含むファイルはそのままでは実行されず、警告メッセージが出ます。その都度コンテンツを許可してVBAを有効にするか、セキュリティセンターで実行の許可を設定しなければなりません(詳細は後述)。販売顧客管理データベースの旧版ではメインメニュー画面というものがなく、すべてカスタムメニューバーから各処理・画面を起動するようになっています。Access2003等のオプション設定で「組み込みツールバー」が”非表示”に設定されている場合、2003形式のままそれをAccess2007で開くと、従来通り、オリジナルのメニューバーやツールバーが表示されるとともに、リボンも表示されません。それを2007形式に変換すると、カスタムメニューバーおよびツールバーは、リボンの中の[アドイン]というタブの中に表示されます。accdbでは、リボンを非表示にすることも、従来の形式・外観でメニューバーを表示させることもできないようです。画面の起動用としてカスタマメニューバーがある場合、せめてデータベース起動直後のデフォルトタブが選択できて、[アドイン]タブを真っ先に表示できればまだよいのですが、それも無理なようです。Access2007では[アドイン]タブに表示されているメニューバーをカスタマイズすることすらできません。よって、これからカスタムメニューをアレンジしたいといった場合には、常にAccess2003等でメニューバーをカスタマイズしたあと、2007形式に変換するという作業が必要なのかもしれません。Access2007のセキュリティAccess2007でもイベントプロシージャの作り方は今までとまったく同じです。新規にデータベースを作った場合でも、コマンドボタンにクリック時イベントプロシージャを作ったあと、ボタンをクリックしても何も起こりません。セキュリティの設定の関係で、既定のフォルダ以外の場所に作ったデータベースファイルに関しては、自分で作ったデータベースでさえVBAは動作しないようです。その対処方法としてはいくつかの方法があります。センター]画面において設定変更を行う。次のいずれかの設定を一度行えば、以降その対象コンテンツはセキュリティに掛からないようになります。ひとつの手段として「すべてのマクロを有効にする」を選択します。注意書きではこの設定は”推奨しません”と書いてありますが、自分で作ったデータベースを動かすだけなら問題ないはずです。ひとつの手段は、データベースに対してデジタル署名をして、その発行元を「信頼できる発行元」に追加登録する方法です。ひとつの手段は、データベースファイルがあるフォルダを「信頼できる場所」に追加登録する方法です。Windowsのログインユーザーのドキュメントフォルダでさえそこには初期登録されていませんので、よく使うフォルダや、開発用に使うフォルダを丸ごと登録しておけば警告メッセージは表示されなくなります。旧版の.mdb形式のファイルサイズは約10MBありました。それを「.accdb」に変換しただけでファイルサイズは約7MB未満まで減りました。Access2007形式のデータベースファイルの方が、ファイルサイズは小さくなるようです。Access2007を使って、.mdbファイルをそのままの形式で最適化してみると、約5MBまでサイズが下がっています。このことから、Access2007自体の最適化の圧縮率が従来のバージョンよりも高い(ファイルサイズが小さくなる)ことが分かると思います。Accessの起動時の設定やオプション設定Access2003までにあった「起動時の設定」は、Accessのオプション設定に包含されました。Officeボタンから表示される「Accessのオプション」ダイアログの「カレントデータベース」画面にてその設定を行います。Access2007のフォームに関するビューAccess2007では、フォームに関するビューが「フォームビュー」、「デザインビュー」、「レイアウトビュー」の3種類になりました。レイアウトビューを使うと、実行状態と同じビューでありながらデザインを変更することができます(従来のようにプロパティシートからだけでなく、直接コントロールの位置などを変更できる)。リボン上の表示される[表示]ボタンでは、フォームビューとレイアウトビューがオルタネイトに切り替わるため、デザインビューに変更するにはさらにドロップダウンリストからの選択という操作が必要です。レイアウトビューに慣れればデザインビューの使用頻度は減るかもしれませんが、新規にコントロールを挿入できないなど、完全にフォームビューとデザインビューの機能を統合・踏襲しているわけではありません。従来通りフォームビューとデザインビューの2つを中心に使いたい人は、「Accessのオプション」ダイアログの「カレントデータベース」画面の設定において、[レイアウトビューを使用可能にする]オプションのチェックを外すことで対処できます。今回の販売顧客管理データベースの変換作業においては、変換後はデフォルトでチェックは外れていますが、そのままの設定で進めることにしました。VBEを開いてみるフォームのデザイン中にVBEに画面を切り替えるには、以前と同様にAlt+F11キーが使えるし、プロパティシートの各イベントからも呼び出すことができます。ツールバーがなくなりリボンとなったAccess2007の場合、[データベースツール]タブをクリックしてさらにそこからVBEのボタンをクリックする必要があります。これはVBAを多用する人にとっては不便に違いありません。この場合、リボン上のボタンを右クリックして[クイックアクセスツールバーに追加]を実行、クイックアクセスツールバーにもそのボタンを配置しておくとよいでしょう。VBEも当然のことながら外観としてはVistaのウィンドウデザインの影響は受けていますが、操作性や機能については、この時点で感じた限りでは、メニューバーやツールバーをはじめとして、おそらくまったく変更はされていないように思います。VBEの設定変更これはデータベース変換作業ということではなく、Access2007を新規導入したことによるものですが、自分の場合、毎度のことながら、以下のようなVBEのカスタマイズを行っています。engine」になりました。Library」の項目にチェックが付いていることからも分かります。今回の変換作業では、.mdbのときはDAOに参照設定のチェックが付いていたのですが、.accdbの変換によって自動的にそのチェックが外され、代わりに上記ライブラリにチェックが付きます。engine』であり、『DAOのプログラムは新しいそのライブラリでそのまま正常に動作することが保証されている』といってよいかもしれません。engineは、多少オブジェクトなどが追加されているものの、基本的には従来のJETデータベースを継承しているような情報を得ていますが、実際にDAOで使っていたコードを実行してみると、DAOのライブラリを参照していなくても、すべてのコードはうまく動きました。変換した販売顧客管理のデータベースのプログラムでは、コンパイルエラーも発生しません。engine”のようなライブラリは表示されておらず、ライブラリ一覧には”DAO”と表示されています。実体はDAOであり2007はそのバージョンアップ版のような扱いになっているように思われます。互換性は相当高いということでしょうか。