ACCESSとExcelの連携を利用できるようになると、ものすごく便利です。
しかし、新しい知識を得ると、その分、デバックも多くなります。
しかも、ExcelのVBAでは見慣れないデバックが発生します。
そんな時は、慌てず回避する方法を紹介します。
目次
ACCESS特有のエラーについて解説
こんにちは。伊川(@naonaoke)です。
最近、競馬のデータベース作成について、どっぷりとハマっています。
それほど、楽しい作業ではないですが、作り上げていくことにハマっています。
ACCESSとExcelの連携はそれほど、難しいものではありません。
しかし、ACCESSで、クエリを作成して、いざ、Excelへ書き出そうと思うと、デバックが発生することがあります。
いきなり、画面に出るとびっくりします。
そんな時の回避方法です。
一応、ACCESSの原理原則も説明したいと思います。
このブログはこんな人にお勧め
- ACCESSとExcelの連携を勉強している人
- ACCESSを何となく利用している人
- ACCESSとExcelの連携でデバックが発生して困っている人
このブログを読み終わるころには・・・・・・・
デバックではなく、ACCESSの原理原則を理解しましょう。
デバックを怖がるな
VBAを作成していて、デバックが発生します。
そのデバックを解決することで、VBAのスキルがアップしていきます。
人にデバックを見られると恥ずかしいと思わないことです。
そもそも、デバックにすらならないコードは、動きません。
デバックが発生するだけ、マシです。
式に未定義関数、Nzがあります。
このデバックは、はっ?ってなます。
このデバックは、作成したクエリで、Nz関数を利用したことが原因です。
Nz関数とは?
Nz関数は、ACCESSのフィールドが、空白の時に、何かの文字を返します。
上の図であれば、空白であれば、0を返します。
このNz関数はExcelにはありません。
なぜ、Excelには搭載されていない関数なのでしょうか?
Excelは、空白があっても平気なのです。
セルというとても便利な機能を持った集合体だからです。
しかし、ACCESSは違います。
ACCESSのフィールドは、空白が嫌いなのです。
例えば、備考欄というフィールドがあるとします。
備考欄なので、フィールドが、空白でも実務上は、問題ありません。
しかし、備考欄でも、【無】と入力すべきだと思います。
ACCESSを利用している人なら、分かると思うのですが、全部、データが埋まっているデータベースは、気持ちがいいです。
式に未定義のNz関数がありますの回避方法
Nz関数をあきらめるしかありません。
回避する方法は2つあります。
ExcelのVBAで、IF構文を利用して、0をセルに代入
ACCESSのクエリで、Nz関数ではなく、iif関数で、0を入力します。
ACCESSのデータをExcelに転送するときは、Nz関数の利用に注意しましょう。
FROM 句の構文エラーです。
このデバックもあるあるです。
原因は、この部分です。
一見、正しいコードのように見えます。
しかし、見落としがちな部分があります。
気付かないと、6時間ハマりコースです。
これで、デバックは解消されます。
この、半角のあるなしで、エラーが発生します。
FROM 句の構文エラーは、他にも原因があります。
ハイフン(-)を利用しているときなどにも発生します。
だから、ハイフンは利用してはいけません。
単純に、ACCESSが嫌っているだけだと思います。
だから、ハイフンではなく、アンダースコアを利用しましょう。
電話番号-1ではなく、電話番号_1 としましょう。
また、不要な、カッコ【電話番号】などもやめましょう。
一旦、デバックが発生すると、どうにもなりません。
私が、ハマった例は、電話番号①です。
毎朝、必ずデバックが発生しました。
データベースの最適化で、改善するのですが、毎朝発生しました。
余談
まだまだ、エラーはありますが、今回はこの辺にします。
VBAを挫折する原因は、なんといっても、デバックの連続でしょう。
デバックを解消して、公開しても、また、デバック・・・・・
そんな気持ちで、完成したツールを世にだせない。
VBAのスキルアップの方法ですが、デバックを恐れないことです。
そして、自分で完成したと思ったら、世間様に公開しましょう。
公開したものに、デバックが発生したら、人前で、恥をかくことになります。
大いに恥をかいてください。
あなたは、プロではありません。
そして、その恥ずかしい、悔しい、絶対に次は、完璧なツールを作成してやる。
この気持ちが、明日へのマニュフェストなのです。
ここがポイント
今回は、ACCESSとExcelの連携で発生したデバックについて紹介しました。ACCESSは、Excelよりもシビアです。原理原則を理解して、シビアなACCESSを理解しましょう。
まとめ
私が、体験したACCESSとExcelの連携についてのデバックは、このくらいです。
今後、もっと未知のデバックが発生するかもしれませんが、くじけないで頑張ります。
今回のサンプルファイルは、ありません。
わからない事を延々と考えるのは、無駄です。
- なんで作動かないの?
- もうやだ!VBAなんか嫌い!
- ネットで調べても情報がない!
必ず作動するコードが、ここにあります。