• ベストアンサー

VBA経験者がVB2005を使えますか?

今までExcel2000のVBAを使って簡単なプログラムを作っていました。今度本格的にVBでプログラムを組みたいのですが、Excel2000のVBAとVB2005はまったく違うものなのでしょうか?(言語の書式など) やりたいことはネット上からデータ(数値や文字列など)を収集して計算することです。株情報などのデータを収集して最適な結果を導き出すもので、今まではExcelで手動で入力していたものを自動化したいと思っています。 また、この場合はVisualStudioではなくてVisualBasicだけを購入すればいいのでしょうか? よろしくお願いします。

  • suffre
  • お礼率76% (2013/2633)

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

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

こんばんは。Wendy02です。 #1さんが書いていらっしゃいますが、 >VSはバージョンアップごとに初心者には入りにくいソフトになっていくということでしょうか・・・。 今までの.Net が、VB6 までのユーザーには入りにくいので、VS2005は、もう少し敷居を低くしたそうですが、単に、オブジェクト指向の触ってはいけない表示をナシにした、というぐらいにしかないと思います。本質的には変わってはいません。 ただ、正直なところ、私は、VBAユーザーであっても、VB.Net は、もう避けられないと思っています。だから、VBAは使っていながら、すぐに使えるようにはならなくても、その気持ちがあれば、VS2005(VB.Net)は、並行的に進めたほうがよいかと思います。 >本当はWeb上から欲しいデータだけExcelに抽出できればと思っておりますが、そういうことをするのがInternetExplorer オブジェクトなのでしょうか? IEオブジェクトとしては、まだ使い方は、いろいろあるのでしょうけれども、私自身、例えば、ここの自分の発言したタイトル・日時、人のハンドルなどの情報と、質問をクローズしているかオープンなのかを、ボタンで、Excelに取得し表示できるようにしてあります。サイトの内容が多少変わっても、VBAのスクリプトを換えるだけで済みますから、簡単です。私の場合は、半分ぐらいは、VBAから、「VBScript.RegExp」を使って、ログを取得しています。特殊なサイトは取れませんが、Excelだけで、ネットにある画像でも取り出しワークシートに貼り付けることも出来ます。 http://www.ken3.org/cgi-bin/group/vba_ie.asp 三流君VBAでInternetExplorer.Applicationを操作する(IE操作) suffreさんは、もうVBAは、長いでしょうから、そこで出ているWebサイトの情報だけで、理解できるかと思います。

suffre
質問者

お礼

深夜にお返事感謝いたします。 VS2005は.net以前の方々にはいろいろと難点があるのですね。私はどちらも(.net以降も以前も)よくわかっていないのでどこが入りにくいのかもわかっていません・・・。 >私自身、例えば、ここの自分の発言したタイトル・日時、人のハンドルなどの情報と、質問をクローズしているかオープンなのかを、ボタンで、Excelに取得し表示できるようにしてあります。 そうなのですか!それほどのこともできるのなら私がやりたいことも可能なのですね。URLもいただきましてありがとうございます。ネットでこのような解説のあるサイトをずっと探していましたが見つけられませんでしたので助かりました。 >suffreさんは、もうVBAは、長いでしょうから いえ、私は本業はまったく別の業種でして、合間を縫ってVBAを勉強しているので亀のごとくのろまな学習となっています・・・。ほんとはVB2005も勉強したいのですが、まずはExcelのほうで頑張ってみたいと思います。 どうもありがとうございました。

その他の回答 (2)

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

こんにちは。 VB2005(VB.Net)は、Excel VBAというよりも、どのぐらい、VBAに精通しているかによっても違いますが、少なくとも、まるで知らない人との差は、格段にあるけれども、旧来のVBを知っていれば知っているほど、細かい仕様がぜんぜん違っているので、戸惑うことが多いように思います。 >ネット上からデータ(数値や文字列など)を収集して >今まではExcelで手動で入力していたものを自動化したいと思っています。 でも、これだけだったら、Excel VBAだけで十分ではないでしょうか?Web で情報を取得する量にもよるけれども、InternetExplorer オブジェクトでアクセスして、データをIEオブジェクトの中の情報を選別して、必要なものだけをワークシートに貼り付けるわけで、それをVBAの外のツールで行っても、それほど変わらないと思います。スピード速い・遅いは、単に、Web サイトが重いかどうかだけの問題です。 これを、また、VB.Net で同じように作るというのは、また、勉強しながらになるので、なかなか手間のかかることになってしまいます。 Web クエリは、Web上の定型の表を丸ごと取るのであって、その本体は、QueryTable ですから、取得する場所のセルの位置が、決まってしまっています。シート一つを犠牲にして、決まった場所から、必要なデータを取り出す、ということになります。ただし、Webサイトが、パスワード・ログインなどがあって、その都度、入力を求められると、VBAでないと出来ません。 しかし、株情報は、Office カテゴリの中で、何度か出てきていますが、例えば、楽天証券のRSSアドインを使ったほうがよいのではありませんか?RSS関数で、自分なりの配置にすればよいのであって、最初から作り始めるのでは、かなり先のことになってしまいます。このRSSは、数分置きぐらいに、インターネットに頻繁にアクセスしています。そういう状態なので、Excel本体の機能以外は、何も使えなくはなってしまいますが、それでも、RSS関数と元の組み込み関数で、十分に作業は出来ます。 >また、この場合はVisualStudioではなくてVisualBasicだけを購入すればいいのでしょうか? とりわけ、VB.Net だけの必要性があれば別ですが、物量的にも VS2005が手に入りやすいような気がします。それは、どちらとも言えませんけれど。

suffre
質問者

お礼

ありがとうございます。VSはバージョンアップごとに初心者には入りにくいソフトになっていくということでしょうか・・・。やはりExcelをお勧めする方が多いですね。 >InternetExplorer オブジェクトでアクセスして、データをIEオブジェクトの中の情報を選別して、必要なものだけをワークシートに貼り付けるわけで、それをVBAの外のツールで行っても、それほど変わらないと思います。 そうなのですか。Webクエリはたしかにセル全体の情報を取得してしまうので無駄な分が処理を遅くしてしまっています。シートに一度読み込んでそこからまたデータを抽出するというのはさらに処理が遅くなります。 ですので、本当はWeb上から欲しいデータだけExcelに抽出できればと思っておりますが、そういうことをするのがInternetExplorer オブジェクトなのでしょうか? >しかし、株情報は、Office カテゴリの中で、何度か出てきていますが、例えば、楽天証券のRSSアドインを使ったほうがよいのではありませんか? これは思いつきませんでした。RSSは便利ですね。が・・・RSSを使っていないページの情報がメインで欲しく、やはりWebクエリのような方法(もしくはInternetExplorer オブジェクトでアクセス?)でいきたいと思います。 まずは、ネット上から自由にデータをもってこれるようになりたいです。

  • popesyu
  • ベストアンサー率36% (1782/4883)
回答No.1

・VBAとVB2005の違い VBA(Visual Basic for Applications)とはVB(Visual Basic)の簡易版みたいなもので、文法などの基本的なところはほぼ同じです。 でVB2005というのはこのVBがより発展したVisual Basic .NETの最新版のことですが、従来のVBが4から5、そして6へとマイナーチェンジのようにバージョンアップした最終形態としてのVB7という位置づけではなく、.NET Frameworkという次の新しいステップのものになります。VB→VB.NETへの変化は文法的な癖はほぼVBを引きついではいるのですが、実際はマイナーチェンジというものではなく、概念が丸で違うものなんです。この違いをわかりやすく説明するのは難しいのですが、VBAとVBの違いが学校のクラブでやるソフトボールとプロ野球ぐらいの違いだったとしたら、VBとVB.NETはラグビーとアメフトぐらい違うという感じでしょうかねぇ。まぁ全くの無経験よりはマシですというぐらいです。ただお遊びでやる程度のアメフトなら、ラグビー経験者であるかどうかは大きな違いにはなると思います。本当に使いこなすなら、VBAでが丸で考えなくてよかった概念(クラスとか)をきちんと理解する必要がありますが、全く理解しなくても丸覚えでそれなりのお遊びアプリは作れますよ。多分。 ※ちなみにVB2005というのは本来はVB2003.NET(これが順番的にはVB7)の次のバージョン、つまりはVB8という位置づけになるのですが、VB2003.NETが従来のVBユーザーからは(違いが大きすぎるため)あまり歓迎されなかったため、あえてVB2005と".NET"の文字をはずしています。これはマーケティングな意味でそうされただけのようです。ただし実際は従来のVBにかなり歩み寄った仕様が追加されているようです。アメフトがより進化しつつさらにラグビー経験者が違和感なく入れるような補助的なルールが追加されたというような感じです。 ・やりたいことについて ただそのやりたい事というのがその程度なら、Excelに備わっている機能だけでも十分に作れそうなんですが。エクセルのWebクエリなどをそのまま利用すれば、Web上のデータをそのまま取り込んで適当に修正しながら加工するということはたやすいです。逆にVB.NETでやるほうが色々と準備するものが多く大変だと思います。 http://www2s.biglobe.ne.jp/~iryo/kabu/tool/vba/kabu12-info.html ・購入するもの VisualStudioというのはほかの言語(C#やC++)もついてきた版でさらにプロの開発者向けとかWeb開発向けなどでいろんなパッケージがあり、VBだけが入っているのが「Visual Basic 2005 Express Edition」になるようです。 http://www.microsoft.com/japan/msdn/howtobuy/vs2005/editions/stdexp/

suffre
質問者

お礼

詳しいご回答ありがとうございます。 やはり初心者にVB2005というのは難しいのですね。どちらかというとVB6のほうがとっつきやすいようですが今は手に入らないですしね。.net発売前にVB6を手に入れていればと今でも後悔しております。 エクセルでのWebクエリは使ったことがありますが、シート上に読み込むためなのか、処理が遅いのとあまり自由度がない点がつらいです。便利は便利なのですが・・・。 VBにはExpress Editionがあるようですね。無償と聞いてさっそくダウンロードしました。画面はVBAに似ていますが、中身は全然違うようですね。 さて、何から勉強すればいいのやら、困ったものです。明日書店にいっていろいろ本を見てみようと思います。ありがとうございました。

関連するQ&A

  • VB6.0からExcel VBAを起動させるには

    VB6.0からExcel VBAを起動させるにはどのようにVB6.0のプログラムを書けばいいんでしょうか?

  • VBAのEvaluate()をVBで記述するには

    ExcelVBAで書かれているプログラムをVB(VisualBasic)に書き直していますが、 VBAのコードの中で、別ファイルから任意の数式(例えば「=3600/60+5000」など)を読み込んで、Evaluate()という関数でこの演算結果を取得している部分があるのですが、VBAのEvaluate()の部分をVBで記述することは可能でしょうか。 よろしくお願いします。

  • VB.NETからVBAマクロ(引数)を呼び出す方法

      VB.NETから参照型引数付きのFunctionのVBAマクロを呼び出す方法 Excel2003のVBEの標準モジュールModule1にあるFunctionのマクロtest(引数)をVB.NETから呼び出して、引数に設定した値をVBA側で加工して、加工された値をVB.NETで取り出したいのですが、VB.NET側でどのように記述してよいのかがよく分かりません。 具体的には、以下のVBAをVB.NETから呼び出すにはどのように記述すればよいのでしょうか。できましたらそのままVB.NETのConsoleApplicationのModule1のSub Main()の中にコピーペーストして動くコードと参照設定を教えていただけると助かります。 ---Excel2003のVBA(C:\test\Book1.xls)---------- Function test(ByRef data As Long) As Long  If data = 0 Then   test = 0   data = 0  Else   test = 1   data = 100 / data  End If End Function ---------------------------------------------- よろしくお願いします(WindowsXP,VisualStudio2010,Excel2003VBE)  

  • VBを何に使われていますか?

     こんにちは。  素朴な質問です。  20年ほど前のPC-8001時代からBasicをときどき使っています。途中で、N系BASICからVisual Basicに変更しています。そして、ちょっとした仕事のツール作りにVBやVBAを使用しています。  VBは結構本格的業務プログラムに利用できると思います。ただ、「業務ならVBではだめだ、C言語だな」という声もよく聞きます。VC++もいいとは思うのですが、VBに比べて面倒という印象が強く、なかなか本格的には手を出せません。ちなみに、VBでいくつかの業務用プログラムを制作しました。数年間問題なく、社内で動いたりもしている現状を考えると、なぜ、本格的プログラマーはVBを毛嫌いするのであろうと思ったりします。  さて、みなさまがたは、VBで何をお作りになっているのでしょうか。  規模などを含め、実際のこころをお話いただけないものでしょうか。 [過去の履歴も探しましたが、うまくは見つかりませんでした]

  • VBプログラムをEXCEL VBAに移植する方法について教えてください

    こんばんは。私はVBA初心者です。 ”良くVBとVBAは同様な言語”と伺いますが、実際にVBプログラムのソースを VBAにコピーしてもエラーが出て使用できません。 私がいまいちVBとVBAの明確な違いがわかっていないからだと思いますが、頭がもやもやです。 VBはHP上からVB2005を入手しました。 そもそもVBとVBAの相違点は何が違いますか? HPを見ているとVBAでもVB同様にシステムも組めると記載されているため EXCEL上で動作するVBAで、簡単なシステムを組みたいと思ってます。 どうすればVBプログラムをEXCEL VBAに簡単に移植できますか? 作業手順、移植する際に注意する点等、アドバイスを教えてください。 また参考になるHPや本をご紹介くださいませ。

  • VisualStudio2008(VB)のパッケージングについて

    VisualStudio2008(VB)のパッケージングについて はじめまして。 今回初めてVisualStudio2008の VisualBasicでシステム開発をしています。 無事システムが完成し、納品用のセットアップCDを作成したのですが、 納品先のマシン(割と最新式)にいざセットアップすると、 VisualStudioのライブラリ(?)のセットアップに20分近くかかります。 おそらくこれらの環境をセットアップしないとシステムが動かないのでしょうが、たいしたプログラムでもないので、VB6の時のように軽い EXEファイルだけをコンパイル&配布できないものでしょうか。 よろしくおねがいいたします。

  • ExcelデータをVB.NETに取り込みたいのですが

    現在ExcelデータをVB.NETに取り込もうとしています。ただ単純に取り込む方法では出来ないと思われ、是非皆さんに知恵を貸して頂きたいと思います。 セルA1~G1、A2~G2、A3~G3のセル位置をそれぞれ座標(1,1)~(1.7)、(2.1)~(2,7)、(3,1~3,7)とみなし、そのセルの数値を(i、j)の変数を用いて配列的に取り込むにはどうすればよろしいでしょうか? 例えばA1の数値が5、B1の数値が7、A2の数値が3だった場合、VB内では(1,1)=5、(1,2)=7、(2,1)=3というようにExcelデータを取り込みたいのです。この場合はデータ数が少ないので手動でVBにデータを入力すればよいのですが、実際はデータ量が多く、なんとか配列を用いて処理したいと思っています。 よろしくお願いいたします。 説明が足りない場合は遠慮なくお申し付けください。

  • VBAで呼び出したVBのDLLのデバッグ方法

    VB2010で、COM相互運用機能を使って作成したDLLを VBAから呼び出すことはできるのですが この状態でこのDLLをデバッグすることはできないでしょうか。 本来ならば、DLLをデバッグするテストプログラムを VB2010のVB.NETのWindowsフォームアプリケーションか ConsoleApplication1で作成して、 同じソリューションの中に DLLとテストプログラムのプロジェクトを配置して 参照の追加でDLLを参照設定して 両者をデバッグをすると思われますが、 テストプログラムを作るのがかなり大変なのと、 今回作成したDLLは、元々はVBAの中のひとつのプロシージャ―で、 事情があって、このプロシージャ―だけをVBのDLLにしたものです。 このプロシージャ―は元々はVBAの中で正しく動作していたものです。 VBに書き直した時に何らかの不具合が起きていると思われます。 テストプログラムを作らずに、既存のVBAから呼び出して、 DLLの部分の動作だけを(できればVB2010で)デバッグできないでしょうか。 よろしくお願いします。 (WindowsXP SP3 , Excel2003のVBA , Visual Studio 2010)

  • VB6.0でEXCL2002を参照するには?

    古いVB6.0を使っています。 エクセルは2002と同じように古いです。 古いVB6.0ではデーターコントロールのプロパティでEXCEL8.0 までしかサポートしていません。 どうすれば、2002を連動できるのでしょうか。 利用環境 WINDOWS_XP  EXEL2002 VisualBasic6.0

  • VBを使ってる初心者です【SQL】【Access】

    VisualStudio2008で、Access2010のデータベースからデータ抽出を行えるアプリを作っています。 このときSQL文を用いてAccessからデータ抽出を行うんですかね? そもそもVisualStudio、SQL、Accessそれぞれがどのように関係しているのかわかりません。 いくつかサイトを見て回ったのですが・・・ 教えてほしいこと 1. データ抽出アプリを作るにあたってVisualStudio、SQL、Accessの各々がどのような役割を果たすか 2. Accessのデータベースの形式は空or Webどちらが有効なのか 3. VisualStudioでデータの抽出を行う方法 長くなりましたがよろしくお願いします。 開発言語はVBで、私自身は簡単なプログラムであれば理解できるレベルです

専門家に質問してみよう