• ベストアンサー

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

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

  • ssmx
  • お礼率86% (95/110)

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

  • ベストアンサー
回答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を学びたい!なんて...思ったり。 でも、言語学習は楽しいですよね

関連するQ&A

  • クラスモジュールを使わないとできないこと

    エクセル、アクセスでvbaを利用しています。 現在はすべて標準モジュールに記載しているのですが 「クラスモジュールを使わないとできないこと」もあるのでしょうか? クラスモジュールの使い方、必要性がいまいちわかりません。 まだ初心者な為複雑なコードは作っていません。 よろしくお願いします。

  • VBAの考え方からVisualBasicへ

    いつもお世話になっています。 約半年ほど前よりエクセルのVBAを勉強し始めまして 機会がありVisualBasicを覚える事になりました。 会社の先輩が作ったVB6のコードを見ていたのですが やっている事が何となくわかる様なわからない様な・・・ という感じです。。 例えばエクセルでは(A1~A20までのセル)、VBでは同じようにグリッドにデータが入力してあり 選択しているセル(A1)のデータと一致するセルを含む行又はレコードを選択するという処理があったとします。(あくまでも例です) エクセルでもVBでもFor~Nextが使える事はわかったのですが 対象とする目印?的なものの(基準というか考え方というか)が理解出来ないのです・・・・。。 エクセルだとcells(rows.count,1).end(xlup).rowで最終行を取得して For~NextでIf Range("A1").value = cells(i,1).value then・・・ で処理できますがVBではどうなのかとか・・・・ (説明がめちゃくちゃですみません。。泣) 同じようにVBAからVisualBasicを始めた方! VBAでのプログラミングの考え方とVisualBasicの考え方の違いや どういう風に勉強していけば良いか等、アドバイスや経験談等を教えて頂きたいです。 宜しくお願い致します。

  • VBとVBAのコードの違い プロシージャー呼び出し方法

    何度かお世話になっておりおります 毎回アドバイスありがとうございます 早速なのですがまた躓いてしまいアドバイスお願いします。 ~質問内容~ 標準モジュールからフォームのプロシージャーを呼び出す エラー内容 オブジェクトが必要である       オブジェクト修飾が必要など 出てきました オブジェクト修飾 というのが もう理解出来ず 本当にスタートの時点ではありますが アドバイスお願いします VBのコード 標準モジュール Sub Main() MainForm.Initialize End Sub フォームのコード Public Sub initialize()  ”コード内容”  End Sub ↑上記で記入しました フォームで宣言されているInitialize を呼び出したいのですが VBでは このままで出来るはずなのですが VBAでは オブジェクト修飾が必要です CALL をつけても エラーのままでした 少し質問がわかりにくくなってしまいましたが 標準モジュールから フォームのプロシージャーを呼び出すには なんと入れれば宜しいでしょうか? アドバイスお願いします

  • ACCESSVBAでテキストを処理のコード

    ACCESS VBAを使用してCSVファイルをインポートしたいのですが、CSVファイルは数十万レコードの構成になっており、内必要なレコードは数千件です。 そこで、テーブルにインポートする前に、VBAでCSVファイルを1件づつ読み込み必要か不要かを判断してインポートしたいのです。  必要、不要の判別は、あるフィールドの内容(商品コード)が、登録マスタ(商品コード群)に登録されている場合(一致)はインサートする。 といった感じのVBAコードの記述をさがしてます。 参考コードやサンプルURL等をおしえてください。

  • VBの宣言について

    ACCESS VBAをはじめて使っています。FORMのコードを読んでいるのですが、宣言されていない変数を見つけました。それでプロジェクト内で宣言されているかどうか探したら、標準モジュールの中で宣言されていました。VBは同一プロジェクトの中でpublicで宣言していればimportとかincludeとか何か取り込む宣言をしなくても自動で変数を認識してくれるのでしょうか?

  • CSVファイルの集計

    VB初心者の為、簡単なことかもしれませんが教えて下さい。 複数あるCSVファイルの内容を集計したいと思っています。 いずれのファイルにもコードと数量が含まれているのですが、集計したいのはそのコード毎の数量計です。 EXCELやACCESS等を使えば簡単だと思うのですが、そういった他アプリやDBなどを使わずにVBとCSVファイルのみで処理したいと考えています。 できれば処理時間も短いようなやり方があれば教えて下さい。

  • ACCESSで、コード基本のお勧めの本を教えて!

    こんばんは。初めて質問します。 今私はACCESSがおもしろく、仕方がないものです(笑)。 一通りACCESSの基本的な流れは理解出来るようになったように感じており、 もう一歩先を勉強したいと思いコード記述に興味を持ったのですが、 完全に行き詰っております。 コードがさっぱりまったく全然分りません。 ネットの中で説明してくれているサイトはかなり見せて頂いたのですが、 やはりコードの基本が分っていないのか、的外れなところを見ているのか さっぱりまったく全然分りません。 ACCESSの基本的な使用方法を書いている参考書は5冊ほど持っています。 その中では『モジュール』や『VB』を少しおまけ的に書いてある本はあるの ですが、それを何度読み直してもやはりさっぱり分りません。 コードの意味が分っても、どこにそのコードをどのように 使用したらよいのか分りません。 ACCESSでコードを書くっていったら、『モジュール』も『VB』も コードなんですよね? そのへんから分らないど素人にでも、独学で理解出来るように 書いてあるような本はないものでしょうか? どなたかご指導よろしくお願いいたします。

  • oo4o+ACCESS(VBA)で出来ますか?

    VB6とORACLE9i(oo4o)で開発しているものがあります。 これをAccess(VBAとoo4oを使用して)でも同じように「Dynaset」などを使用してOracleのデータを加工することは可能でしょうか? また、VBでは、一覧を出したいときは、SPREADなどを使用して開発しておりますが、Accessを使用した場合同様なことは出来るのでしょうか? 可能な場合Accessでは、モジュールから直接フォーム上にデータを表示することは、できますでしょうか?一度テーブルなどに落としてからという手間が必要になるのですか?どうぞ、宜しくお願い致します。

  • CSVからACCESSのフールドに取り込む方法

    VBを使ってCSVからACCESSのフールドにデーターを取り込む方法を全般的に教えてもらいたいのですが。 <例> CSVファイル   ⇒   Accessテーブル A,100          名前 数 ←フィールド              A  100 初心者なので簡単なソースコードで教えてもらえれば ありがたいです。

  • VBの勉強をしたいのですが

    今VBAの勉強はしています。それが、結構面白くなってきたので、VBも勉強してみたくなりました。(VBAはExcelとAccessです) ただ、今やっているVBAはVB5か6を元にしているとのことなんですが、今売っているVBは2005でかなり6から変わっていると言う事なのですが、それほど変わってしまっているのでしょうか?VBAとVBが似て非なるものとの認識は有りますが、VBAの文法はVBを元にしているとのことで、VBAをしていたら、VBに入り易いと聞いたものですから。でも、2005に全く役に立たないというのならまた一から勉強しなおしかなと思います。今までのVBAの勉強はある程度有効なのでしょうか? アドバイスをお願いします。もうVB6は売っていないようですし。

専門家に質問してみよう