Q.Accessで作ったシステムをお客様に配りたいのですが、MDB ファイルから EXE を作ることってできますか?

残念ながら、MDB ファイルは MDB ファイルですので、ここから EXE を作ることはできません

そもそも、Accessとは、MDB ファイルの内容を読み取り、解析してくれる「MSACCESSS.EXE」と、各種 DLL が動作して一連の動きを実現しています。決してMDB ファイルが動いているわけじゃないんですね。
ですから、配る先のパソコンに、開発したのと同じバージョンの Access 本体がインストールされていれば、MDB ファイルだけをコピーすれば何の問題もなく動作します。(ODBCだのActiveXだのといった問題はまた別ですが)

では、配る先のお客様には、絶対にAccess 本体を購入してもらわなければ駄目なのか、というとそうでもありません。Access には、ランタイム という考え方があります。
この「ランタイム」というものの考え方(とライセンス)は、Accessのバージョンで大きく異なるので注意が必要です。

16ビット時代の Access では、ランタイムとは Access 本体とは物理的に違うものでした。ADK とか ADT といった製品がこれに当たります。
msarn11j.exe、msarn20j.exe といったランタイム専用の exe が、MSACCESS.EXEの代わりに動いてくれるというものでした。
Access95 ~Access 2002(多分)では、「MSACCESS.EXEがランタイムモードで動作する」という考え方に変わりました。ランタイム配布のライセンスさえ購入すれば、いくらでも MDB と Access ランタイムを配布できる、というものです。
だからといって、自分で買ったAccess本体OfficeのCD-ROMをお客さんのところへ持っていってインストールしていいのか、というとそれは駄目です。
ランタイムとして、セットアップキットを作成して、それをインストールしなければ立派なライセンス違反です。配布できるのはランタイムであって本体ではないからです。

そのために、Access97 では「Office97 Developer's Edision」(ODE)、Access2000 では「Office2000 Developper」という製品があります。これには、ランタイムセットアップ作成ツールと、Accessランタイム配布ライセンスが含まれています。

Access 2003 になりますとまた少々事情が変わって、「ランタイムエンジン」という考え方が新たに登場しました。(昔に戻っただけ?)
ランタイム作成には「Microsoft Visual Studio Tools for the Microsoft Office System」とやらに入ってる「Access 2003 Developer Extensions」とかなんとかいうモノを使うようです。どうやらこいつ(Access 2003 Developer Extensions)に配布ライセンスが含まれている模様。
くわしくはこちらをどうぞ。しかし、文書内のそこかしこが英語だ。

ランタイム配布を前提としてパッケージ購入する場合は充分注意してください。Edition によって(というか、ほとんどのパッケージには)配布ライセンスが含まれていません。
その他、ランタイム配布に関する詳しい情報は、下記ページを見るとしあわせがやってくるとおもいます。(そうでもないかも)

Access 2003 ランタイムを入手して展開する
http://office.microsoft.com/ja-jp/access/HA011208861041.aspx?pid=CH011228281041

Access ランタイム アプリケーションを開発する
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/modcore/html/detskDevelopingAccessRuntimeApplications.asp


Access 2007 になりますとまたさらに事情が変わって、ランタイム作成&配布キット?が無料でダウンロードできるようになったらしいです!
なんと、無料ダウンロードのツールをダウンロードしてしまえば、配布のライセンスを購入する必要がないんだそうです!!!
...なんで、「らしい」だの「だそうです」だのと言ってるのかというと、まだ英語の文書しか公開されてないからです orz

Introducing the Access 2007 Developer Extensions and Runtime
http://msdn2.microsoft.com/en-us/office/bb229700.aspx

文書だけじゃなくツールも全部英語。われと思わん勇気のある方は、ぜひダウンロードして試してみてくださいまし。私にゃ無理だ。


2008/11/6 追記:なんといつのまにか、といっても今年の3月ですが、日本語版が出てました!!!!

Access 2007 ダウンロード: Access Runtime
http://www.microsoft.com/downloads/details.aspx?FamilyID=D9AE78D9-9DC6-4B38-9FA6-2C745A175AED&displaylang=ja

やっと日本語情報をご紹介でき、うれしい限りです。っていうか早く気づけ自分。
ついでに、いろいろ公開されてた(過去形)Access 2007 情報も書いておきます。

Access 2007 Developer Extensions および Runtime の概要
http://office.microsoft.com/ja-jp/access/HA102188681041.aspx?pid=CH102222081041

Access 2007 アプリケーションを展開する
http://office.microsoft.com/ja-jp/access/HA102188641041.aspx
ソース コード管理を使用してアプリケーションを開発する場合のヒントと注意点
http://office.microsoft.com/ja-jp/access/HA102146101041.aspx?pid=CH102209801041


よく、「Access ランタイムは MS のサイトからダウンロードできないのか」という質問がありますが、冷静に考えればできるはずがないのはお解りいただけると思います。配布ライセンスを含んでいるのですから、気軽にダウンロードして誰もが使えるという種類のものではありませんよね。

↑ なんて文章をずーーっと公開してた私の立場も少しは考えてほしいもんです。
...まぁ、これでAccessが普及するようになるのであればまぁいいか、と考えなくもないけどそれは単なる勘違いだろうな。


ランタイムで使用することを前提に MDB を配布するには、注意しなければならない点がいくつかあります。

  • ランタイムはデータベースウィンドウを表示できない

    ランタイムでは、データベースウィンドウが表示できません。ということは、スタートアップフォームなりAutoExecなりで最初にメニューとなるフォームを表示してあげないと、真っ黒なAccess本体の画面が現れてなにをすることもできない、という事態になります。

  • ランタイムはデザインが表示できない

    それでいいんじゃん、そのためのランタイムでしょ?と思うでしょうが、それが結構つまづく元なのです。
    もしモジュール実行時にエラーが起こり、それをトラップしていないと、「実行時エラーが発生しました このモジュールを見る権限はありません」とかなんとか言われて、どんなエラーがどこで起きたのか、これからどうしたらいいのかまったくわかりません。
    どんなモジュールでも、必ずエラートラップするように心がけましょう。

  • ランタイム環境では Access をCreateObjectできない

    Access ランタイム環境では msaccess.exe だけを起動することはできませんので、CreateObject してもエラーになってしまいます。起動したい mdb を指定して、GetObjectで対応しましょう。
    OLE で Access を使おうと思ってる人は、必ずランタイム環境でのテストを充分行うことをお勧めします。



ランタイム環境でのテストは /runtime オプションをつけて起動することで比較的簡単にできますが、実は /runtime では問題なかったのに いざ実際にランタイム作ってセットアップしたらそっちではダメだった てな話はいやはやマジデ腐るほど聞きます。
/runtime オプションを使ってじっくりテストをし、石橋を叩き壊す最終確認として、実際にランタイムを作ってセットアップした環境での動作確認も「絶対」やっといたほうがいいです。
お客さんに渡してから動きませんでした じゃシャレになりませんので、自己保身のためにもぜひ。


まったく別の方法で、ランタイムと似ているのですが「MDE ファイルを作り配布する」という方法もあります。Access95以降でしたら、この方法がもっとも手軽です。客先が Access 本体を購入していさえすれば、ランタイム配布ライセンスを取得(つまり ODE を買うこと)しなくてもいいし、モジュールをお客様に見せないようにすることもできます。
MDE ファイルは、MDE ファイル内に追加・変更したデータを保管することはできますが、(もちろん削除も)オブジェクトをデザインビューで開くことはできません
つまり、テーブルデザインの変更、新規テーブルの作成、クエリーデザインの変更、モジュールをデザインで開く、フォームを新しく作る、といったことがまったくできません。データベースウィンドウは開けるのですが、デザイン関連のボタンが無効化されていてさわれないようになっています。

↑...と、長い間書いておりましたが、実はテーブルとクエリーのデザインは変更できますね(汗)
当時はちゃんと動作確認をして書いていたはずなので途中で仕様が変わった...とも思えないな(大汗)
申し訳ない、斜体の部分はだいぶウソです。MDEでできないことについては下記ページで確認を。

MDEファイルについて
http://office.microsoft.com/ja-jp/access/HP052393021041.aspx

ADEファイルについて
http://office.microsoft.com/ja-jp/access/HP052579041041.aspx


ここで困っちゃうのがレポートなのですが、レポートには設計時のプリンタ情報がデザインとして埋め込まれています。
デザインが変更できないとなると、設計時のプリンタ情報(余白とか)を変更してもそれを保存することはできませんので、このあたり充分に配慮する必要があります。
単純に、「MDB ファイルを配るのはいいけど、デザインを開かれて中を見られるのは困るな」といっただけの場合には MDE ファイルを配布するのが一番の得策と言えます。
ただ、Access の入ってる Office って高いんですよね。使いもしないのにAccessを持ってる って人は相当少ないと思いますので、社内システムぐらいしか用途はないのもしれないですな。

ただし、MDEでもデータの更新はできますから、最適化しなければ当然MDE ファイルのサイズは大きくなります。最適化のしくみを作る際には、MDE ファイルを最適化することを意識して作りましょう。


ちなみに、ランタイムにはソースコード(デザイン情報含め)保護の機能はありません。
なんの対策もせずにランタイムと同梱で配布したMDBは、そのユーザーがAccess本体を持っていれば簡単に中身を見ることができてしまいます。
単にランタイムで配布しただけでは、ソースコード保護にはならないことに注意してください。
(ランタイムを作るときに適切なセキュリティ対策をするようにウィザードが動いたような気もしましたが、内容を理解して使わなければ意味が無いので過信しないように!)

ソースコードを保護することが目的だという方は、ついでにこちらもご確認を。

Access2003 セキュリティとプライバシー - セキュリティ - コードを保護する
http://office.microsoft.com/ja-jp/access/CH010106091041.aspx


また、「Accessは起動も動作も全部遅いから、もし EXE にできたら速くなるかと思ったんだけど・・」という意味でのご質問だとしたら、それは完全に無理ですので、ごめんなさい。

 

*そんなあなたにお勧め書籍*
Microsoft Office Access2007 ビジネス問題集 (セミナーテキストスキルアップ)

私こういう本大好きwwwww
 

↓こっちと一緒に読むと効果倍増?かも。
Microsoft Office Access セミナーテキスト データベース設計入門編 (マイクロソフト公式解説書) 

トラックバック(0)

トラックバックURL: http://www.naboki.net/movabletype/mt-tb.cgi/18