
漠然とした書き込みで申し訳ありません。
わたくしは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へ移行するときに感じたことを書かせていただきました。ご参考になれば。
とても参考になります!!
>今ではすっかり.NETに漬かってます。
し、信じられない(汗
あほっぽくて申し訳ありませんが
>VBAの場合、クラスなりモジュールなりをファイルで作成すれば、
ファイルで作成?した記憶はありませんが
>いきなりSub xxx()と書き始めることが出来ますが
そうそう、ボタン作ってイベントプロシージャを起動すればすぐにプログラムが書けます。
そうかですかー。
実行の安定性より書き易さがポイントだったからなぁ。
たしかに、開発はそっちに重きがおかれるべきだけですよね。
しかし、コーディングには時間をかけたくないなぁ
一目的達成のツールとしてVBを使ってるにすぎないので、
安定性<手早い目的達成
なんですよね。
非常にわかりやすかったですm(_ _)m
No.6
- 回答日時:
私はVBからACCESSに移行してきましたが、逆に楽に感じました。
ACCESSからVBにレベルアップするのは大変でしょう。理由は単純でACCESSが簡単すぎるのですね。意識を変えてもっと必死でやらなければ乗り越えることは出来ないでしょう。
むむ、なるほど!
やっぱ? 楽なんですね。
サンプルコードみててもそう思います。
VBには知らない、ACCESSでは意識の範疇外のことがツラツラ書かれていることが多いです。これは確かに見えないハードルになってます。
客観的な意見が聞けてよかったです。
う~ん、VB.NETを必死でやるのは、う~ん
だったらC#の方がいいというか、VB.NETの位置づけが分かりづらいですねぇ、過去のVBと違うんだったら...
No.5
- 回答日時:
僕も独学でプログラムやってます。
初めての言語を習得するときの「あ、こんなこともできる、あんなこともできるようなった」という楽しみに比べ、別の言語を習得するときは「使い慣れた~言語なら簡単にできるのに」と思ってしまうからではないでしょうか。
そこで、いきなり同じ機能を移植するのではなく、まずはやってみたい別の機能を求めては如何でしょう。
経験上、別言語習得に成功した切欠を思いおこせば、BASICからVBに移るときはウィンドウがつくれるから、VBからVB.Netに移ったときはマルチスレッドにしたいから、C++習得のときは映像を編集したいからでした。
おお、先輩ですね!
ありがとうございます。
まさに。寸分の違いなくその通りです。
>そこで、いきなり同じ機能を移植するのではなく、まずはやってみたい別の機能を求めては如何でしょう。
結局のところ、そうやらざるを得ないんですよね。
しかし、明示していなかったのですが時間をかけられない現状がありまして(泣
時間があったらぜひCAKE PHPやRailsなどやってみたいんですけどねぇ。
No.4
- 回答日時:
ExcelのVBAは基本的にAccessと同感覚です。
但し、DoCmdとかCurrentDbがありません。逆にWorkSheetsなどの
組み込みオブジェクトがあります。そういう点を除けば全く同じです。
>csvを取り込んで、2カラム目の特定の値を一括で置換しcsvでエクスポート
VBSで可能です。組み込みオブジェクトが無いので、CreateObjectを
使って、明示的に生成する必要がある点が違います。
>無料のVisualStudio
VBと言っても.NET系はVB6、VBAとは全く別言語です。感性から見ると、
Javaと同じです。制御文などで、VBで使えるものを流用しただけで、
オブジェクトのインスタンス化など、C++→Javaの流れそのものです。
nda23様、まことにありがとうございます!
本当にわかりやすいです!
VBSはいいかも! ちょっと長い目でみると厳しいのですが。
>.NET系はVB6、VBAとは全く別言語です。
これは驚愕。あくまで同等なものにヒゲが映えたくらいに考えていました。
ですので今後の移行の手軽さからみてVB.NETと踏んでいましたが、別言語かぁ。なら、手軽さやJAVAへ羽を伸ばすことも視野にいれればC#とかがいいですねぇ
しかし、今後、VBAもVBA.netになるんでしょうかね?
しかし、簡単じゃないなぁ。
現場が.NETに移行できないという話もリアルに感じてきます。
とにかく、的確なアドバイスありがとうございました。
No.3
- 回答日時:
必要ない言語や観念(クラスだのオブジェクト指向だの)は勉強する
ことはないです。専門じゃないんだし・・・
ただ、Excelはタダでインストールされていたりするけど、Accesssが
タダというのは聞いたことがないので、VBAでもAccessに特化しない
方が良いと思います。
あと、ちょっとツッコんでVBSまで行くと、ExcelやAccessが無くても
動くプログラムを作れます。HTAも(ブラウザがIE限定だが)できる
ので、画面会話型アプリケーションが作れます。もっと行くとASPに
なり、Webアプリケーションまで開発可能です。
まぁ、そこまでやらなくても、VBSをちょっとやっておくと、バッチ
よりはずっとインテリジェントなものができますよ。
http://msdn.microsoft.com/ja-jp/library/cc392489 …
ありがとうございます
> Excelはタダでインストールされていたりするけど、Accesssが
> タダというのは聞いたことがないので、VBAでもAccessに特化しない
> 方が良いと思います。
あ、わかります!
しかし、仕事がらAccessを多用するのでExcelのVBAは触れたことがありません。(そんなにAccessとは違わないと思いますが)
いまは、無料のVisualStudio、もしくはSharpDevelop
(http://icsharpcode.net/OpenSource/SD/ これはVB大丈夫かな?)
を考えています。
> あと、ちょっとツッコんでVBSまで行くと、ExcelやAccessが無くても
> 動くプログラムを作れます。
これも考えましたが、インターフェースの弱さに迷いました。
とっつきやすさは大歓迎でしたが。
う~ん、どこまで高度な、...先ほどの話でに戻るとしたらcsvを取り込んで、2カラム目の特定の値を一括で置換しcsvでエクスポートみたいのも出きるんですかね???
しかし、なるほどブラウザでインターフェース作る発想はなかったですね!
No.1
- 回答日時:
私も同じような抵抗感を感じたことがあります
ずっとプログラミング言語をBASICでやっていて
必要にせまられてC言語を覚えることになった時です・・・
それまではssmxさん同様にずっと独学でほとんど我流でしたが
C言語に関しては
これはもう独学じゃやるきにもならないって感じでしたね
でも教えてくれる人が現れて
はじめて独学ではなく人に教えてもらって言語を覚えたんですが
それが新鮮で楽しく覚えることができました
まあ教え方が上手だったというのもあるのでしょうが
ずっと独学や我流でやってきた人は
以外と人に教えてもらうと覚えれて乗り越えられたりするかもしれません
ありがとうございます。
おお、BASICですね!一応Cには簡単に触れたことがありますが(これも独学ですが)、私も
N88BASIC(中学生) → Access なので、どうも宣言とかはハードルを感じまして...
学んでから実用まで至るまで時間がかかりすぎる?
ならAccessですましちゃったほうが現実味があるので、学ぶことが結果良いのだろうか?と迷います。
学ぶならPHPとかPythonを学びたい!なんて...思ったり。
でも、言語学習は楽しいですよね
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
共通モジュールでDBへの接続と...
-
他のモジュールのプロシージャ...
-
VB.NETにて文字列で指定した関...
-
VBA クラスにプロパティが実装...
-
用語の意味の違いを教えてくだ...
-
VB.netで、動的な型変換を行い...
-
eclipseのデバッグ中に変数の値...
-
ExcelVBAのコントロールの種類...
-
Microsoft Formsの「個人情報や...
-
EXCELでactivexコントロールを...
-
VBA(エクセル)で自動的にボタン...
-
ユーザーフォームを表示中にシ...
-
【マクロ】エラー【#DIV/0!】が...
-
worksheetFunctionクラスのVloo...
-
Form_Load と Form_Activate の...
-
実行時エラー 438になった時の...
-
VBA CommandButtonの文字ずれ
-
VBAでオプションボタンによって...
-
ウォッチ式の文字数制限について
-
VBA ユーザーフォームの Keypre...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
共通モジュールでDBへの接続と...
-
[VBA] Classから他のClassを呼...
-
Excel vbaで複数のテキストボッ...
-
VB.netで、動的な型変換を行い...
-
VB.NETにて文字列で指定した関...
-
他のモジュールのプロシージャ...
-
'StructLayout' の仕様について
-
【JSF】バッキングビーンから別...
-
WPFでCanvas の子要素にアクセ...
-
VBA オブジェクト追加
-
用語の意味の違いを教えてくだ...
-
バウンドプロパティとは?
-
VB6で外部から静的アクセスが可...
-
コンポーネント指向って、どの...
-
C# Process.Start で標準入力
-
オブジェクト指向とは?
-
離れた場所のロールオーバーの...
-
C#でのWebRequestでのPOSTについて
-
実行時エラー 438になった時の...
-
worksheetFunctionクラスのVloo...
おすすめ情報