• ベストアンサー

VBAとvisual basicの違い

 VBAの入門書をよみ、もう少し勉強したいと考えています。visual basicを勉強すべきなのでしょうか?

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

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

こんにちは。再び、Wend02が書きます。 ちょっと気になる発言がありましたので、書いておきます。私の場合、究極的には、VBAを悲観的に考えています。ただ、#8さんとは違います。 >プログラミングをやるならVBAはやってはダメです。変数とか引数とかデータ型とかがあやふやになっちゃいます。 それは、誤解ですね。VBAは、明示的変数型宣言をしなくても通りますが、それを言ったら、VBでも同じではありませんか?あやふやではいけないのだったら、Cのほうがよいですね。VBAでプログラミングを学べないということはありませんね。 >VBで、VBでも.NETはクラス(Class)という概念があるので、.NETではなくてVBから始めてプロシージャとかデータ型などをしっかりと経験した方が、後々ぜったいによろしいとおもいます。 Office VBAでも、Class-Instanceは使います。その程度は、いくら上級文法という名前はついていても、VBAの初級の範囲です。VBAは、そのアプリケーションで仕事をすることであって、プログラミング言語を学ぶとはまったく違う、コーディングには具体的な目的性があります。それが、マクロと呼ばれるものですね。しょせん、VBAで、データ型をきちんと書けない人は、オートメーションを使ったときに、エラーに悩まされるだけです。VBAがどうのというような、内容の良し悪しだとは思えませんね。 Office VBAでも、擬似的ではあるけれど「オブジェクト指向」を活用できます。また、Office VBAでも、中級・上級レベルでは、少なくともADO/DAOとオートメーションはやらざるをえないし、上級にいくと、API, ODBC, COM, IISなどが、Office VBAで出てきますが、そんなに楽なことだとは思いません。Cの知識も必要になってきます。 VBAというと、ほとんどの人は、Excel VBAを指すし、明示的宣言をしなくても、エラー処理しなくても、初歩的なルールさえ守らなくても、スパゲティコードを書いても、ほとんどの人からは、結果だけをみて評価されるので、誰もそのコードのまずさを指摘などしません。掲示板で、そういうコードを親切にも注意すれば、「エラーが出ていないのに、どこが悪い」と激怒して、開き直られますからね。 もしも、VBAが問題なら、そういう背景にあるのではないでしょうかしらね。しかも、Accessを除いて、他のOffice VBAの勉強する方法が、ほとんどありません。まして、上級VBAを学ぶ機会はどんどん減っています。 ほとんどの人は企業内で、ただひたすら、会社のために行うしかありません。企業内で、このまま、Microsoft Officeを使っていくようであり、また、自分の仕事生命がMS-Officeといっしょのつもりだったら、Office VBAを極めればよいのだと思います。別に、他の言語を覚えたところで役立たせる所は、Officeを使っている一般社員としては、ほとんどないはずです。ベタなVBAコードしか書けなくても、Accessのほうが、ずっと需要が高いと思います。 しかし、自分は、その手の才能があると思うなら、いえ、興味があるなら、やはり、言語には手を出しておくべきかなって思います。その選択が、VB系というのは、私は、ちょっと言えませんが、挫折したって良いと思います。その分岐点・出発点を、どこに置くかだけの問題ではないでしょうか?

その他の回答 (9)

noname#13325
noname#13325
回答No.9

VBは、プログラム本体を作るもので 速度は高速ですが、 VBランタイムが入っているPCでないと動作しません。 (バージョンがかわると動かないのでお勧めしません) VBAは、スクリプト言語で、 Officeのワードやエクセル内に 記述する言語です。 読み込みながら解釈するので速度は少し遅いです。 VBだと、改変に VB本体が必要ですが、 VBAだと Officeさえインストールされていれば いつでも簡単に修正できます。 VB自体は 拡張性に乏しいので VBAのほうが、Officeの機能をフル活用で使えるので 便利だと思います。 CTRL押しながらスペースキーを押すと コード候補の一覧がでますので活用するといいとおもいます。 表示ー>オブジェクトブラウザ も関数一覧がでるので便利です。 (こんなのあるかなぁ~ で見つかるので  いきあたりばったりで  なんとなくでプログラムできますから) こったことがしたいのなら、 C++,C#,VB.netなどのほうがいいとおもいます C++,C#,VB.net,VBなどで いちいちコンパイルするのが面倒なので 最近は、大変便利なのでVBAのほうが使う機会が 多いです。

  • sysfun
  • ベストアンサー率6% (1/16)
回答No.8

VBAはマクロ言語です。VBはプログラミング言語です。 なにをしたいかによりますが、プログラミングをやるならVBAはやってはダメです。変数とか引数とかデータ型とかがあやふやになっちゃいます。VBで、VBでも.NETはクラス(Class)という概念があるので、.NETではなくてVBから始めてプロシージャとかデータ型などをしっかりと経験した方が、後々ぜったいによろしいとおもいます。 プログラミングの勉強するならそれぞれの言語の入門書の前に、プログラミング言語(またはコンピュータ言語)自体の入門書を読んでからにしたほうがぜったいにいいと思います。どういうことを勉強しようとしているのかを自分自身ではっきりと捉えておく必要があるからです。それぞれの言語に共通する部分を知っておく必要があるからです。その上でひとつの言語だけを習得すべきです。 がんばってください(もしもプログラミングを勉強したい場合はですけど)。

  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.7

こんにちは。KenKen_SP です。 #6 hana-hana3 さんと同様に思います。 職業プログラマーを目指すわけではない、しかし、実務で役立てたい とお考えになるなら、VB には手を出さず、 Office VBA にとことん 触れてみることをお勧めします。 主な理由としては、  ・Office は仕事の多くの場面で活用されており、結果的に VBA を   使う頻度が一番高い。  ・VBA はワークシートや関数、フィルター機能など実務でよく使用   する Office の機能が他言語より簡単に扱える点で有利。   職業プログラマーほど開発に十分な時間を取れないのが普通です   から、この点の開発効率の差は重要です。   つまり、「日常業務のちょっとしたこと」なら VBA の方が開発   効率が良いと言えます。  ・VBA は使う人が多いから、お手本となる実務に絡んだサンプルコ   ードが Web 上に豊富にあり、また書籍も多い。  ・VB と VBA は基本的文法が非常によく似ているので、VBA をある   程度理解すれば、VB へ移行しやすい。 などでしょうか。 入門書などを一通り読破すれば、それなりのコードを書くことはでき るでしょうが、それが実務の場で役立つかは別の話です。実務で役立 つコードを書くには、それ相応の知識と経験と感性が必要ですが、 これはなかなか難しいものです。 これらを培うには「需要の高い(良く使用する)言語」で、「実例に 基づいた」コードを「限られた時間のなかで」「効率的に」かつ 「創意工夫しながら」書いてみるしかないと思うのです。 その意味で、実務で使用するなら Office VBA を熟達するまで、触れ てみることをお勧めします。

  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.6

>visual basicを勉強すべきなのでしょうか? 基本的な回答はすでに出ていますが・・・。 あとは、貴方が何をやって行きたいのかで決まるかも知れません。 エクセルなどのアプリケーションと一緒に使うならVBAを覚えれば十分です。 VB=VBAではありませんから、VBで簡単に出来たことがVBAでは出来ないこともあります。 (違うのはほんの僅かな機能だけですが・・・) また、VBAでも相当な事も可能ですから、VBを覚えるよりも、基本的なプログラムの組み方を覚えるほうが遥かに効率的です。

  • LAIT
  • ベストアンサー率32% (25/78)
回答No.5

VBAとは、Microsoft OfficeにあるExcelやWord等で動くプログラムです。特にExcelやWordで簡単なゲームを作るときとかに使う人もいたり会社等で使ったりと人それぞれです。VBAは自動記録という機能があってあまりコードを書かなくてもいいというところが特徴ですね。BASIC言語(基本言語)なので、他の言語と比べれば比較的簡単です。でもOfficeがないと動きませんが・・。 Visual Basicとは、初めてプログラミングする人が簡単にソフトが開発できるソフトです。基本的にはVBAと同じですが、Officeがなくても動かないという所とVBAとVBは少々入力するコードが違うというところ大きな違いでしょうか。 つまり、こういうことです。 (VBA) 安定性:(不明、すいません) 速さ:(不明、すいません) 言語:BASIC(基本)言語なので基本なことだけ書けばいいのだから簡単に作ることができる(超簡単ではありませんので) 必要ソフト:Microsoft Office サイズ:(不明、すいません) (Visual Basic .NET) 安定性:(不明、すいません) 速さ:(不明、すいません) 言語:Visual Basic 6よりかは少々難しい 必要ソフト:Microsoft .NET Framework サイズ:(不明、すいません) (Visual Basic 6以前) 安定性:悪い 速さ:遅い 言語:BASIC(基本)言語なので簡単 必要ソフト:(なし) 必要ランタイム:Visual Basic x.x ランタイム サイズ:少ない ソフトウェアを開発したいのならばVisual Basicをお勧めします。 その他のことは#1~3を読んでください。 わかりますか?

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.4

>VBAが「簡易版です」、「狭い範囲ですが」 には私は反対意見です。重点的に利用する分野が違うのです。 別物といいたい。 たとえば代表でエクセルVBAはエクセルの諸機能やシート画面を使う上で、コード(=プログラム)が簡単にできるように仕組んであります。 VBからエクセルを利用する場合はエクセルVBAを使うでしょう。 (1)共通部分がある。背骨の部分で。 (2)プログラム一般の面でVB独自の学習する分野がある。 (3)VBAは簡単ではなく、暗記もの的な知識が要る。エクセルVBAハンドブックをごらんになれば、むしろVBのハンドブックより分厚い。全部暗記しないといけないわけでないが。 (4)オフィスのVBAはそれぞれのソフトに関係した部分のオブジェクト等が肥大化したものである。オフィスの各ソフトに特化した、オブジェクト、プロパティ、メソッドが沢山ある。それらはVBで長くなってもよいから組めといわれても、組めるものでもないものが多数。 これらはVBでは使えない(意味微妙ですが)。 別途、APIという存在があってVB、VBAとも使えるので、詳しく知りだすと、境界があいまいになるかも。 今のVBAが他の体系に吸収されても、違うものは違うで存在しないとならないと思うのでエクセルVBAのオブジェクト、プロパティ、メソッドは表現を変えてでも、残るでしょう。たとえばVB.NET方式に吸収されても。

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

こんばんは。 既に、ある程度お話は出ていますが、 Visual Basic は、だいたいは単独で動かせるアプリケーションが出来ますが、VBAは、あくまでも、Office がないと動きません。概ね、マクロと呼ばれる所以(ゆえん)は、VBAは、Office のアプリケーションを動かせるための、プログラムであるということです。マクロでない場合もあります。つまり、Officeの中のVBAを借りて、アプリケーションとは関係のない働きをさせるようなプログラムもあるからです。 Office用のVBAは、その本体のアプリケーションと持ちつ持たれつの関係で、また、Officeでも、Excel/Word/LookUp/Access/PowerPoint と、それぞれのオブジェクト自体が違いますので、本格的なOfficeのVBAを目指すということになれば、Visual Basic を勉強しようかというものとは、かなり方向性が違ってきてしまいます。 日本VBA協会の指定するプロフェッショナルレベルは、参考になるかと思います。 http://www.vbaa.jp/vbae/level_professional.htm VBAの入門書が終わって、次にあれこれということは言えませんが、VBAでは、アドインなどは別としても、DAO,ADO などのデータベース系の処理、また、各種オートメーションの使い方など、VBAであろうが、VBであろうが変わらないものが、次のステップに用意されています。また、非マクロの中には、アルゴリズムというものもあります。VBのコードをほとんどそのまま、VBAに乗せることも可能です。 残念ながら、今は、Office 97で、一般的な日本語テキストは終わってしまって、MSDNのアーカイブを参考にするぐらいしかなくなってきています。 また、Office 2003 に合わせて、Visual Studio Tools for the Microsoft Office System(略称 VST)に移行することもあり、Office は、なかなか、勉強していくのは困難な時代に突入しているかもしれません。だから、VBAの勉強は無駄だという暴論もないわけではありません。かつての Version 4 マクロのような二の前になるのかは、定かではありませんが、Version 4マクロもまだ生きています。VBAは、すでに端境期には来ているようには思いますが、私は、定まらない先のことを気にして何もしないよりは、今手元に気軽に扱えるもので進めていくようにしています。しかし、Office VBAだけでも、余りあります。

  • A98JED
  • ベストアンサー率28% (221/778)
回答No.2

VBAは visual basicの文法のままで開発ができるよう工夫してあり エクセルやワードなどのアプリケーション用に 簡略化したものです。 VBA単体では実行できず、かならずアプリケーション上で実行します。 VBAは機能はvisual basicよりも狭い範囲ですが 小さいプログラムをアプリケーション上で開発してすぐ実行できるので てがるに覚えられると思います。 wordやexcelがあれば開発が可能です。 visual basicは本格的なプログラム開発が可能ですが visual basicは開発環境を整えるのには 結構な値段がするパッケージを購入しなければなりません。

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.1

Visual Basicは開発用のBasicコード VBA(Visual Basic for Aprication)はOffice上での簡易版です。 Office上でのマクロだけで良いならVBAで良いと思います。 もっと勉強したいならVisual Basic(今だとVB.Net)ですね http://www.microsoft.com/japan/msdn/vbasic/

関連するQ&A