• ベストアンサー

VisualBasicへの取っ付き辛さ。応援して下さい!

漠然とした書き込みで申し訳ありません。 わたくしはAccessにて我流でVBAを使いまくっています(開発畑の人間ではありません)。 最初はAccessのカスタマイズで、必要あってVBAを学んだのですが、今に至ってはAccessは必要なくVBだけで済むようなものもわざわざAccessのVBAで作っています。 理由は自分でもよくわからない壁を感じるからVBを使う気になれないのです。ですので、利用者はAccessをインストールした人に限定されるわけで... これについて、皆さんの意見とか応援とかアドバイスがほしいです。 何なんでしょうかね。 クラスとかモジュールとか、宣言とか今まで意識していなかったことを学びなおすのにとてつもない壁を感じているのか。 データベースを扱うSQLもcsvファイル一つ読み込むのでも、Accessなら簡単にできるけど、VBだと凄い複雑な作業が必要そうで... VBAでしらべれば、コードはわかるんですが、VBとかVB.netで同じこと調べると、コードを見る気にもならない複雑さで抵抗感を感じます。 誰かこの謎を教えてください。 そして、乗り越えるアドバイスを頂けないでしょうか?

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

  • ベストアンサー
回答No.2

私もVB6.0から.NETへ移行するのは非常に抵抗がありました。ですが、一度移ってしまうと6.0に戻れなくなりました。今ではすっかり.NETに漬かってます。 > クラスとかモジュールとか、宣言とか今まで意識していなかったことを学びなおす 今までもVBAでクラス・モジュール・宣言は少なからず使っているはずです。ただ、VBAで見えるのはクラスやモジュールの内側だけで、外側が見えません。VBAの場合、クラスなりモジュールなりをファイルで作成すれば、いきなり Sub xxx() と書き始めることが出来ますが、VB.NETではまずクラスを作り、そこへSubやFunction等を記述する形になります。 Class xxx  Sub yyy()  … VBA/VB6.0は、このようなクラスやモジュールの枠組みを意識せずともコーディングできるように設計されています。しかし、.NETではクラスもモジュールも「コードで宣言」しなければならず、複雑に見えてしまうのだと思います。 > データベースを扱うSQLもcsvファイル一つ読み込むのでも、Accessなら簡単にできる Accessは元々DBを扱うソフトですから、簡単に出来るのはまぁ当然ですね。自分で1からプログラムを組むとなれば、DBへのアクセスやSQLの問い合わせの「仕組み」から作らなければなりません。(それでもDB周りはコンポーネントが充実しているのでそれほど大変でもないと思います) > コードを見る気にもならない複雑さ おそらくこれは、VB6.0/VBAで可能だったさまざまな「省略」ができなくなっているからだと思います。また、厳密な型変換が要求されるようになり、どうしてもコード量が増えてしまいますね。更に、名前空間による階層構造でオブジェクトが分けられるようになったことや、メモリ・HDDの大容量化でメソッド名やクラス名を短くする必要がなくなったのも、コード量が増えた原因だと思います。 (コード量が増えたといっても、インテリセンスの性能向上でコーディングは楽になりましたけどね) BASICは「あいまい」な書き方が許されてきた言語です。.NETであいまいさが許されなくなり、窮屈な印象を持ったこともあります。その結果、ビルドエラーは増えましたが実行時エラーはほとんどなくなり、開発はスムーズに進むようになっています。 「書き易さ」から「実行の安定性・確実性」への移り変わりが、難しさとして感じているのかもしれません。 長くなりましたが、私が.NETへ移行するときに感じたことを書かせていただきました。ご参考になれば。

ssmx
質問者

お礼

とても参考になります!! >今ではすっかり.NETに漬かってます。 し、信じられない(汗 あほっぽくて申し訳ありませんが >VBAの場合、クラスなりモジュールなりをファイルで作成すれば、 ファイルで作成?した記憶はありませんが >いきなりSub xxx()と書き始めることが出来ますが そうそう、ボタン作ってイベントプロシージャを起動すればすぐにプログラムが書けます。 そうかですかー。 実行の安定性より書き易さがポイントだったからなぁ。 たしかに、開発はそっちに重きがおかれるべきだけですよね。 しかし、コーディングには時間をかけたくないなぁ 一目的達成のツールとしてVBを使ってるにすぎないので、 安定性<手早い目的達成 なんですよね。 非常にわかりやすかったですm(_ _)m

その他の回答 (5)

  • kata9999
  • ベストアンサー率37% (25/66)
回答No.6

私はVBからACCESSに移行してきましたが、逆に楽に感じました。ACCESSからVBにレベルアップするのは大変でしょう。理由は単純でACCESSが簡単すぎるのですね。 意識を変えてもっと必死でやらなければ乗り越えることは出来ないでしょう。

ssmx
質問者

お礼

むむ、なるほど! やっぱ? 楽なんですね。 サンプルコードみててもそう思います。 VBには知らない、ACCESSでは意識の範疇外のことがツラツラ書かれていることが多いです。これは確かに見えないハードルになってます。 客観的な意見が聞けてよかったです。 う~ん、VB.NETを必死でやるのは、う~ん だったらC#の方がいいというか、VB.NETの位置づけが分かりづらいですねぇ、過去のVBと違うんだったら...

  • hornet3
  • ベストアンサー率19% (12/62)
回答No.5

僕も独学でプログラムやってます。 初めての言語を習得するときの「あ、こんなこともできる、あんなこともできるようなった」という楽しみに比べ、別の言語を習得するときは「使い慣れた~言語なら簡単にできるのに」と思ってしまうからではないでしょうか。 そこで、いきなり同じ機能を移植するのではなく、まずはやってみたい別の機能を求めては如何でしょう。 経験上、別言語習得に成功した切欠を思いおこせば、BASICからVBに移るときはウィンドウがつくれるから、VBからVB.Netに移ったときはマルチスレッドにしたいから、C++習得のときは映像を編集したいからでした。

ssmx
質問者

お礼

おお、先輩ですね! ありがとうございます。 まさに。寸分の違いなくその通りです。 >そこで、いきなり同じ機能を移植するのではなく、まずはやってみたい別の機能を求めては如何でしょう。 結局のところ、そうやらざるを得ないんですよね。 しかし、明示していなかったのですが時間をかけられない現状がありまして(泣 時間があったらぜひCAKE PHPやRailsなどやってみたいんですけどねぇ。

  • nda23
  • ベストアンサー率54% (777/1415)
回答No.4

ExcelのVBAは基本的にAccessと同感覚です。 但し、DoCmdとかCurrentDbがありません。逆にWorkSheetsなどの 組み込みオブジェクトがあります。そういう点を除けば全く同じです。 >csvを取り込んで、2カラム目の特定の値を一括で置換しcsvでエクスポート VBSで可能です。組み込みオブジェクトが無いので、CreateObjectを 使って、明示的に生成する必要がある点が違います。 >無料のVisualStudio VBと言っても.NET系はVB6、VBAとは全く別言語です。感性から見ると、 Javaと同じです。制御文などで、VBで使えるものを流用しただけで、 オブジェクトのインスタンス化など、C++→Javaの流れそのものです。

ssmx
質問者

お礼

nda23様、まことにありがとうございます! 本当にわかりやすいです! VBSはいいかも! ちょっと長い目でみると厳しいのですが。 >.NET系はVB6、VBAとは全く別言語です。 これは驚愕。あくまで同等なものにヒゲが映えたくらいに考えていました。 ですので今後の移行の手軽さからみてVB.NETと踏んでいましたが、別言語かぁ。なら、手軽さやJAVAへ羽を伸ばすことも視野にいれればC#とかがいいですねぇ しかし、今後、VBAもVBA.netになるんでしょうかね? しかし、簡単じゃないなぁ。 現場が.NETに移行できないという話もリアルに感じてきます。 とにかく、的確なアドバイスありがとうございました。

  • nda23
  • ベストアンサー率54% (777/1415)
回答No.3

必要ない言語や観念(クラスだのオブジェクト指向だの)は勉強する ことはないです。専門じゃないんだし・・・ ただ、Excelはタダでインストールされていたりするけど、Accesssが タダというのは聞いたことがないので、VBAでもAccessに特化しない 方が良いと思います。 あと、ちょっとツッコんでVBSまで行くと、ExcelやAccessが無くても 動くプログラムを作れます。HTAも(ブラウザがIE限定だが)できる ので、画面会話型アプリケーションが作れます。もっと行くとASPに なり、Webアプリケーションまで開発可能です。 まぁ、そこまでやらなくても、VBSをちょっとやっておくと、バッチ よりはずっとインテリジェントなものができますよ。 http://msdn.microsoft.com/ja-jp/library/cc392489.aspx

ssmx
質問者

お礼

ありがとうございます > Excelはタダでインストールされていたりするけど、Accesssが > タダというのは聞いたことがないので、VBAでもAccessに特化しない > 方が良いと思います。 あ、わかります! しかし、仕事がらAccessを多用するのでExcelのVBAは触れたことがありません。(そんなにAccessとは違わないと思いますが) いまは、無料のVisualStudio、もしくはSharpDevelop (http://icsharpcode.net/OpenSource/SD/ これはVB大丈夫かな?) を考えています。 > あと、ちょっとツッコんでVBSまで行くと、ExcelやAccessが無くても > 動くプログラムを作れます。 これも考えましたが、インターフェースの弱さに迷いました。 とっつきやすさは大歓迎でしたが。 う~ん、どこまで高度な、...先ほどの話でに戻るとしたらcsvを取り込んで、2カラム目の特定の値を一括で置換しcsvでエクスポートみたいのも出きるんですかね??? しかし、なるほどブラウザでインターフェース作る発想はなかったですね!

  • freetaka
  • ベストアンサー率53% (106/197)
回答No.1

私も同じような抵抗感を感じたことがあります ずっとプログラミング言語をBASICでやっていて 必要にせまられてC言語を覚えることになった時です・・・ それまではssmxさん同様にずっと独学でほとんど我流でしたが C言語に関しては これはもう独学じゃやるきにもならないって感じでしたね でも教えてくれる人が現れて はじめて独学ではなく人に教えてもらって言語を覚えたんですが それが新鮮で楽しく覚えることができました まあ教え方が上手だったというのもあるのでしょうが ずっと独学や我流でやってきた人は 以外と人に教えてもらうと覚えれて乗り越えられたりするかもしれません

ssmx
質問者

お礼

ありがとうございます。 おお、BASICですね!一応Cには簡単に触れたことがありますが(これも独学ですが)、私も N88BASIC(中学生) → Access なので、どうも宣言とかはハードルを感じまして... 学んでから実用まで至るまで時間がかかりすぎる? ならAccessですましちゃったほうが現実味があるので、学ぶことが結果良いのだろうか?と迷います。 学ぶならPHPとかPythonを学びたい!なんて...思ったり。 でも、言語学習は楽しいですよね

専門家に質問してみよう