解決済み

excel vbaでデータベース構築

  • すぐに回答を!
  • 質問No.5727930
  • 閲覧数2426
  • ありがとう数8
  • 気になる数0
  • 回答数4
  • コメント数0

お礼率 80% (8/10)

現在、excel vbaで共有サーバ上にあるデータベース(excelファイル)を複数人で利用していますが、データ数に限りがあるし、データ数が増えて動きが鈍くなっています。
そこで、共有サーバ上のデータベースをmdbファイルに変更してみようかと考えてWeb検索してみたら、危険な行為みたいな記述が多く、困惑しています。
そこで、ご存知の方にお尋ねします。なお、私はvba以外は知らない超初心者です。

1.excel vba で mdbファイル を利用することの是非。
2.もし、mdbファイルを利用する場合、ここさえ注意すればOK!というアドバイス

よろしくお願いします。

質問者が選んだベストアンサー

  • 回答No.2

ベストアンサー率 59% (574/965)

リンク先の様な意見もありますので、mdb共有も捨てたものではないと思います。自身も、少人数ですが、mdbをフロントエンドとバックエンドに分割して使用しております。
http://www.mig.co.jp/access/contents/access_kyoyu.htm
SQLserver等を使えと言われても絵に描いた餅ですからね。可能性は低いと思いますが、クライアントPCに無償SQLserver等をインストールする事を仮に会社から認めてもらえても、安定稼働させるのは面倒そうです。
エクセルの共有使用でもかなり配慮されているとの事なので、mdbでも同様の配慮をすれば良いのではないでしょうか。
クエリの結果はワークシートに貼り付けて、接続は直ぐに切る。読み込んだデータにフィルターをかけたりはエクセルの機能で行う。書き込みの時だけ接続して書き込む。といった感じで運用すれば、競合の問題は避けられる様に思います。
また、御利益はわかりませんが、当方はVBScriptでmdbを最適化するコードをWEBで見つけて、Windowsのタスクから定期的に実行する様に設定しています。ご参考まで。
お礼コメント
colariomay

お礼率 80% (8/10)

回答ありがとうございます。
データベースが壊れることばかりだったので、少し光が見えたように思えます。

バックエンドに分ける方法はサイトで見かけました。
excelの様に読取専用ということは出来ないみたいですが、「読み込んで接続を直ぐに切る」、「書き込んで直ぐに接続を切る」で対処可能ということですね。
最適化についてもサイトで見つけました。
投稿日時 - 2010-03-06 15:24:54

その他の回答 (全3件)

  • 回答No.4

ベストアンサー率 40% (9/22)

こんにちは。

#3です。
私も最近触ってないですが、私的には
DAOは過去のものでADOが現在の主流という認識です。

個人的にはDAOの方が使い慣れているので、自分しか使わないものでは
DAOを使ってガリガリ書いていたりします。

今は分かりませんが、数年前は
ADOはDAOと比べデータベースの切り替えが簡単にできるというのがメリットだったと
思いますが今はもっと他のメリットもあるかもしれません。

あまり回答になっていなくてすみません。。
お礼コメント
colariomay

お礼率 80% (8/10)

たびたび回答いただきありがとうございます。
そうですね~ちょっと調べてどちらにするか決めたみたいと思います。
投稿日時 - 2010-03-09 19:33:31
  • 回答No.3

ベストアンサー率 40% (9/22)

こんにちは。
3人~4人程度での作業ならばMDBとの連携もありだと思います。
以前に開発したAccessシステム(テーブル4~5個)では7人くらいで使っていました。


より安定した状態でMDBファイルを使う場合はいくつか知識も必要になります。

データの読み書きはDAO、ADOを使い、更に排他制御を行うことでより堅牢になると思います。

イメージとしては
・Excel:システムのインターフェース
・Access:インターフェースからの情報を格納

という使い分けになると思います。
利用者からみると使っているのはExcelだけということになり、
いわゆるユーザフレンドリーな形態で運用できると思います。
お礼コメント
colariomay

お礼率 80% (8/10)

回答ありがとうございます。
イメージどおりの運用ですので、少し勉強してやってみることにしました。
そこで伺いたいのですが、DAOとADOはどちらを勉強するほうがより効率的・効果的でしょうか?
サイトを見て、DAOを勉強して使ってみようかな~って思っているところですが・・・もし、見当違いの質問でしたら御免なさい。
投稿日時 - 2010-03-07 16:01:55
  • 回答No.1

ベストアンサー率 57% (16/28)

>1.excel vba で mdbファイル を利用することの是非。
についてですが、mdbファイルは複数の人間での使用には向きません。
元々個人用データーベースの色合いの強い物ですから、1ユーザーが使用中は、排他処理になるため他のユーザーが使えなくなります。
>2.もし、mdbファイルを利用する場合、ここさえ注意すればOK!というアドバイス
mdbファイルは、複数の人間で使用すると非常にファイルが壊れやすくなります。
ファイルの最大サイズが2GBとなっています。
定期的にバックアップを取ることが必要です。

その他の注意点は、EXCELとACCESSでVBAが微妙に違うということです。
EXCELでACCESSのオブジェクトを使う際は、ACCESSのVBAのルールに従う必要があります。

安定性と高速性を求めるなら、データベース・サーバーを使用したほうが良いと思います。

参考になりそうなHP
http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_130.html
http://www.cocoaliz.com/excelVBA/index/
http://www.mahoutsukaino.com/
お礼コメント
colariomay

お礼率 80% (8/10)

回答ありがとうございました。
やっぱり壊れやすいんですね。それに排他的ですか。
小規模な使い方なので、Excelファイルをデータ格納場所にしていました。
データ参照時は読取専用でファイルを開き、データ更新時はファイルが使用中か判断させて使用中ならコメントを出してコマンドボタンを再押下。こんな感じです。
VBA記述に注意すれば解決できるのかな?って思って質問させていただきました。
投稿日時 - 2010-03-06 02:41:50
結果を報告する
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。
関連するQ&A
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,600万件のQ&Aを分析して最適な回答をご提案します。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する

ピックアップ

ページ先頭へ