• ベストアンサー

エクセルのVBA習得について

プログラミングの経験はありませんが、自分なりにマクロ(VBA)にとり組んでみたいと思っています。ただいろんな書籍がありすぎて、系統的に学ぶには、どこから取り組んでいいのかよく分かりません。習得されている方で何かいい書籍・サイト等ご存知でしたら、お教え頂けると有難いのですが、ご存知ないでしょうか。会社の事務部門でよく使うようなものから始められると助かります。

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

こんにちは。 何度も書いている話ですが、実際に、仕事から入っていく人は、偏りが生じて、全体的に習得するのは難しいかもしれません。Excelマクロ集のような本を買ってきて、写して手を加えれば楽で失敗が少ないです。 それでも、体系的に学習したいという人は、多くは、以下の本を入門としている人が多いかと思います。 『かんたんプログラミング Excel 2007 VBA 基礎編』大村 あつし (著) 技術評論社 (2003用もまだ出ています) http://www.amazon.co.jp/exec/obidos/ASIN/477413340X 三冊で、ひとまとまりになって、最後の応用編の半分ぐらいまで勉強すると、プログラミングの入門レベルが習得できると思います。いずれにしても、VBAでは、あまりがっちりと勉強する必要はないと思います。自分で考えながら、500個のコードを書くと覚えられるといいます。だから、早い人は、半年で覚える人もいます。。 Webサイトは、本当に習得したいなら、まだ良く分からないうちは、Microsoft のサポート以外は、あまり参考にしないほうが良いと思います。特に、掲示板などでは、玉石混交ですから、入門レベルの人や、VBAをほとんど知らない他のプログラマーが、専門家と称して書いていることがあり、本当に何が正しいのか、わけが分からなくなります。掲示板は、ある程度の力が付いてからの方がよいと思います。 『Excelでお仕事』や『Office Tanaka』は、人気のあるサイトのようです。しかし、#1の方には大変申し訳ないのですが、『Excelでお仕事』の著者の「お仕事」や年代が、なんとなく見えてくるのですが、残念ながら、私は、そのような「お仕事をさせてくれる企業」にはおりませんでした。内容的にみると、また特殊な「お仕事」のひとつのようです。 それにつけても、VBAは、本格的に進めて行くと、ある時点で、いくつかの分岐を迫られるようです。本当に『Excelでお仕事』のように、会社のサーバーやデータベースで仕事を与えられて、あくまでも、VB系(ASPやWScript含む)で続けていくのか、Access側に移るのか、他のデータベースに入っていくのか、本格的にプログラミングの世界に入っていくのか、いずれかの入り口になるのではないでしょうか。なかなか、そこまで行く人も多くはありませんが。

gayaldy
質問者

お礼

お礼が遅れてすみません。ご丁寧に有難う御座います。ひとそれぞれですが、自分に合うやり方を模索してみようと思います。

その他の回答 (4)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.5

#3の回答者です。 ちょっと面白いコメントなので書かせてください。 >自己責任とは? 厳密な意味で、「自己責任」とは、意味が違うのですが、VBAは、あくまでも、自分が自分の責任で書くものであって、他人がとやかく言ってどうなるものではありません。だから、逆の見方をするなら、「自己満足」の世界でも良いと思います。VBAでは、ハンガリアン表記などは使う必要もありません。 「自己満足」しなければ、独学ではやっていられないのではないかと思います。こんなことができるという喜びが、次に繋がるのだと思います。Access の場合は、ひとつを完成させるまでには、時間が掛かりますが、Excel VBAは、一行(Sub ~ End Sub まで入れると3行)でも結果が出ますから、コードの意味を見失うことがありません。あまり長いコードは不要です。 私が嫌いな質問の中に、「コードをスマートにしたい」というものがあります。でも、自分が書いて問題なく動くのなら、なぜ、それで満足しないのかなって思います。コードそのものが実力を表すものであっても、個々のコードをベテランの人に書き換えてもらっても理解できなければ、身につくとは思えないのです。 ちゃんと動いているものに、それに、Select を頻発したところで結構です。とやかく言う人間に限って、たいしたコードも書けていなかったりします。(ただし、掲示板に回答を手本として書く場合は、多少とも批判を受けることは覚悟しなければならないので、「自己満足」だけでは済まないです。) だいたい、 Selectするな! http://officetanaka.net/excel/vba/speed/s2.htm # Selectしない方がいいのは速度的な理由だけではありません。 # コードの行数が少なくなることで、マクロ全体の可読性が高 # まるからです。可読性が高まればバグも減るでしょう。それ # に何より、Selectの連呼は美しくありません(^^; なんて、本当のところは、こういうことではないのですね。Select は、オブジェクトを確保するということなのです。必要な場合と、そうでない場合があるのです。

gayaldy
質問者

お礼

返答遅れて済みません。有難う御座います。とりあえず、自分もそういう感じで進めてみたいと思います。

  • DOUGLAS_
  • ベストアンサー率74% (397/534)
回答No.4

[回答番号:No.2] の DOUGLAS_ です。  ご質問をよく読んでいなかったようで、「系統的に学ぶには」とお書きでしたね。  ま、私の回答は、自由奔放過ぎて、とても「系統的」ではないようですから、ご参考程度にお見過しください。 >何か一気に敷居が高くなった感じです。  ハハ (^0^)/。。。 ん~、逆の意味で書いたつもりですが。。。 >系統立てては難しいのですかね。  gayaldy さんが、どういう質(たち)の方か存じませんが、私のような飽き性の人間でしたら、テキストの「Lesson 1」から順を追って「本」を読み進めていっても、なかなか、頭に入らないんですよねぇ~。  で、前回答のような調子で、WEBページから、実践的(会社の事務部門でよく使うようなもの)、かつ興味深い(面白そうな)、かつ、何となく自分でもできそうなレベルの、教材(ユーザーからの質問)を見つけては、あ~だこ~だと頭を捻らせて、そこで初めてテキストの関連ページをめくったり、テキストに載っていなければWEBページで検索してみて、自分なりに答えを出してみる、というふうな具合です。  で、最終的に、そのWEB掲示板に出てきた優秀な経験者の回答と、自分の導き出した回答とを見比べて、都度、スキルアップしていく、というような段取りです。 #この点につきましては、[回答番号:No.3] の Wendy02 さんがご指摘くださっている点を踏まえてくださいませ。 >自己責任とは?  エクセルのマクロ(VBA)は、エクセル自体のワークシートの操作に留まらず、アプリケーションとしてのエクセルの設定やコンピュータのファイル操作など、いろいろなことができて、とても便利な半面、自分で試行錯誤している内に、大事なファイルを削除してしまったみたいなこともなきにしもあらず、というような意味で「自己責任」と書きました。  意味のよく分からないコードやステートメントについては、予めヘルプやテキストでご確認いただいた上で実行なりデバッグされるのでしたら、何ら問題はないと存じます。

gayaldy
質問者

お礼

ご丁寧に有難う御座います。とりあえず自分なりに取り組んでみます。

  • DOUGLAS_
  • ベストアンサー率74% (397/534)
回答No.2

>習得されている方で  私自身は、習得している段階ではありませんが。。。 >何かいい書籍・サイト等ご存知でしたら、お教え頂けると有難い  私も、VBA初心者ですが、VBAでのスキル向上の軌跡を振り返ると、 1)パソコンに関する質問掲示板(ここや「答えてねっと」など)で面白そうな教材を探す。 2)書籍やWEB検索でVBAの方法論を構築する。 3)経験者の回答を検証する。 4)「なるほどぉ~」と思って、お脳に蓄積する。 みたいな感じでした。  「習うより慣れろ」と申しますが、とりあえず、簡単な教材(問題・題材)でいろいろと試行錯誤してみるのが、習得が早いかもなぁ? と存じます。 #が、VBAは、「飽くまで 自己責任」ということは肝に銘じてください。 >会社の事務部門でよく使うようなものから始められると助かります。  そういう題材が、よくパソコン関連の質問掲示板に出ています。

gayaldy
質問者

お礼

何か一気に敷居が高くなった感じです。自己責任とは?系統立てては難しいのですかね。ご丁寧に有難う御座います。

  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.1

私は http://www.asahi-net.or.jp/~ef2o-inue/menu/menu01.html ここで勉強しました。 ちょっと時間がかかるかも知れませんが、 一般機能や関数など最初から目を通してみると良いと思います。

gayaldy
質問者

お礼

早速の回答有難う御座います。URL参考にしてみます。

関連するQ&A