ExcelVBAながいことやっております、ExcelからAccessのデータベースを利用しちゃおうシリーズ。実際の処理は前回までで出来るのですが、実用性を高めようという内容です。クラスで処理をまとめるこの連載がもっと実用的なサンプルで書籍になりました!トランザクションとはまずはこちらの引用を。IT用語辞典より抜粋DBを使ったシステムの場合、複数の処理を伴うことが多く、何らかのエラーで途中で処理が止まってしまうと不具合が出る可能性が多々あります。この図のように、ハンパな処理がDB上に存在してしまうことになります。全てOKのときに初めて確定、途中でエラーが起きたらそれまでの処理をなかったことにしてくれる、ということが出来ます。Subざっくり書くとこんな感じでしょうか。正常終了なのか異常終了なのか、なんのエラーが出たのか、というのを知るためにメッセージボックスをつけると分かりやすいです。まとめさて、第6回にまで渡ったこのシリーズですが、途中でごねごねしてて分かりにくいところもあったと思いますので(すみません)、トランザクションまで含めてテンプレートを書きなおしてみました。Subずばっとコピペすればだいたい使えるんじゃないでしょうか。細かいSQL文などの処理は各回をご参照ください。モジュールをまたいだりユーザーフォームを使ったりする場合は、冒頭の宣言はPrivateじゃなくてPublicだと幅広く使えます。スコープ(適用範囲)あとがきやっっと最後まで書けました。当時、仕事でExcelとAccess連携させたら楽になりそうだよな~と妄想してから実際調べて書いてみて、運用に至るまでに結構な時間がかかりました。運用後も、実はここの部分よく分かってないんだよね...とか、ちょっと非効率的な動きしてるけどまぁいっか、みたいなところもあって、自分の勉強のためにもまとめてみよう!と思い至った次第です。このブログのExcelVBAカテゴリは、私が駆け出しの頃「こういう解説してくれてるサイトがあったらなぁ」と思っていたことを自分なりにやってみて、同じような立場の方の時間短縮になれたら嬉しいな、という気持ちで書いています。実現出来ているかは分かりませんが、どなたかのお役に立てていたら、とても光栄に思います。私もまだまだ勉強中の身ですので、間違ってるところやお気づきの点がありましたらご指摘くださると有難いです。指定するのって面倒じゃない...?」「もっとうまいことできないの...?」と、思ってしまいました。そもそもレコードセット作成の記述を共通プロシージャに書いてるのがイケてない気がする...。いうわけで、レコードセットオブジェクト作成は接続部ではなく.Openの直前に書いて、切断部ではレコードセットオブジェクトの有無によってクローズ、のように修正しました。指定しなくていいです。Subこれまでのコードでももちろん動くのですが、こっちのほうがスマートなんじゃないかなと思ったので、追記しておきます。クラスで処理をまとめるクラスモジュールを使ってDB関係の処理を分離させちゃって、呼び出す側のコードを最低限にしてしまおうという試みもやってみたので、こちらも書いておきます。公開日:2013/09/18更新日:2017/04/10ExcelVBAに興味をお持ちの方は、こちらの記事もどうぞ!これからExcelのマクロを始めたいという方に!簡単な練習問題作りました。私がExcelVBAでよく使う便利なコード・スニペットまとめプログラム初心者さんへ贈る、エラーが起きたら試してみて欲しいことExcelVBAのクラスモジュールって何?という人向けの使い方まとめ書籍を執筆しています。OfficeExcelVBAでカレンダーコントロールを自作するExcelで1行・1列おきの合計を求めるSUM関数の書き方これからExcelのマクロを勉強したいという方に!簡単な練習問題作りました。楽しく拝見させていただきました!なかなかexcelとaccessのDB連携についてわかりやすくかかれたサイトがなかったので非常に助かりました。デザインもおしゃれで見やすかったです。PMhiroさん、はじめまして!コメントありがとうございます。有難いお言葉、本当に本当に感無量です。まとめてみて良かったです...。・゚・(ノД`)・゚・。リクエストもありがとうございますー!書いてみたいネタはいくつかあるのですが、現在、仕事で使っているOfficeが未だ2003のため、個人でもまだ(メンテとかのために)2003から抜け出せずにいるんです。今時2003を使ってFormの説明しても2007以降で見た目も機能も違うんじゃないのかな、という気持ちからなかなか書けずにいまして...。