回答:
ほぼすべてのプログラミング目的で、VBAとVB 6.0は同じものです。
VBAはプログラムを実行可能なバイナリにコンパイルできません。プロジェクトを含めて実行するには、常にホスト(WordファイルやMS Wordなど)が必要です。また、VBAでCOM DLLを作成することもできません。
それとは別に、IDEには違いがあります。VB6.0 IDEは比較してより強力です。一方、ホストアプリケーションはVBAに緊密に統合されています。アプリケーショングローバルオブジェクト( "ActiveDocument"など)とイベントは宣言なしで使用できるため、アプリケーション固有のプログラミングは簡単です。
それでも、Wordの起動、VBA IDEのロード、Wordとはまったく関係のない問題の解決を妨げるものは何もありません。VB 6.0が(技術的に)できることはあるかどうかはわかりませんが、VBAはできません。MSDNで比較シートを探しています。
VBAはVisual Basic for Applicationsの略であり、VBの小さな「アプリケーション用」スクリプト兄弟です。VBAは確かにExcelで利用できますが、他のオフィスアプリケーションでも利用できます。
VBを使用すると、VBAでは不可能なスタンドアロンのWindowsアプリケーションを作成できます。
ただし、開発者は、それらのアプリケーションを自動化するスクリプト言語として、独自のアプリケーションにVBAを「埋め込む」ことができます。
編集:VBA FAQから:
Q. Visual Basic for Applicationsとは何ですか?
A. Microsoft Visual Basic for Applications(VBA)は、開発者がMicrosoft Visual Basicの全機能を使用してカスタムソリューションを構築できるように設計された組み込み可能なプログラミング環境です。VBAをホストするアプリケーションを使用する開発者は、アプリケーションの機能を自動化および拡張して、カスタムビジネスソリューションの開発サイクルを短縮できます。
VB.NETはVBとのみ構文を共有する別の言語であることに注意してください。
これは、古い質問に対するより技術的で完全な回答です。VisualBasic for Applications(VBA)とVisual Basic(pre.NET)は、類似した言語ではなく、同じ言語です。具体的には:
筆者(Paul Lomax)は、昨年出会った古いVBリファレンスブックで、スタンドアロンアプリケーションでも、組み込みコンテキスト(MS Officeなど)でも、「VBA」は常に言語自体の名前であるとさえ主張しました。 ):
「先に進む前に、基本的なポイントを明確にしましょう。VisualBasic for Applications(VBA)は、Visual Basic(VB)でのプログラミングに使用される言語です。VB自体は開発環境であり、その環境の言語要素はVBAです。 」
小さな違い
ホスト型とスタンドアロン:実際には、ほとんどの人が「VBA」と言う場合、具体的には「MS Officeで使用されるVBA」を意味し、「VB6」は「スタンドアロンVBAの最新バージョンで使用されるVBA」を意味しますコンパイラ(つまり、Visual Studio 6)」。MS OfficeにバンドルされているIDEとコンパイラは、Visual Studio 6とほぼ同じですが、スタンドアロンのdllまたはexeファイルへのコンパイルは許可されないという制限があります。つまり、組み込みVBAプロジェクトで定義されたクラスは、登録できないため、非組み込みCOMコンシューマーからアクセスできません。
継続的な開発:Microsoftは、選択したプラットフォームとして.NETランタイムに切り替えたため、Visual Studio 6を使用したスタンドアロンVBAコンパイラーの作成を中止しました。ただし、MS Officeチームは引き続きVBAを維持しており、MS Office 2010以降、新しいVM(現在はVBA7.dllと呼ばれる)で新しいバージョン(VBA7)をリリースしています。大きな違いは、VBA7には32 64ビットバージョンで、特に外部API呼び出しに関して、2つの違いを処理するためのいくつかの拡張機能があります。
VBAをVB-Classic(VB6 ..)またはVB.NETと比較しますか?
VBA(Visual Basic for Applications)は、Microsoft Officeアプリケーションに組み込まれたvb-classicベースのスクリプト言語です。言語機能はVB5の機能と似ていると思います(いくつかの組み込み関数がないだけです)。
VBAスクリプトを記述したOfficeドキュメントにアクセスできるため、たとえば次のことができます。
例:Excelセルの値を設定する
ActiveSheet.Cells("A1").Value = "Foo"
VBCと-.NETはスクリプト言語ではありません。それらを使用して、VBAでは実行できない独立したIDEを使用してスタンドアロンアプリケーションを記述します(VBAスクリプトはOfficeに「存在する」だけです)。
VBAはVB.NETとは何の関係もありません(同様の構文です)。
実際、VBAはDLLのコンパイルに使用できます。Office 2000およびOffice XP Developerエディションには、COMアドインとして使用するDLLを作成するために使用できるVBAエディターが含まれていました。
この機能は、VSTO(VS Tools for Office)ソフトウェアの登場により、以降のバージョン(2003および2007)で削除されましたが、VSTO(またはVS.Net)を使用せずに、COMアドインを同じ方法で作成できることは明らかVB6 IDEを使用します。
VBAです。VBAはVisual Basic for Applicationsを意味し、Officeドキュメントのマクロに使用されます。これはVB.NET機能にアクセスできないため、VB6の修正バージョンに似ており、ドキュメントで作業できるアドオン(VBA for Excelのワークシートなど)を備えています。
VBは言語ではありません。VBは、OfficeがVBAをホストするのと同じように、VBAをホストするプログラムです。VBは、WordやExcelと同様にAppオブジェクトのセットであり、Officeと同様にフォームパッケージです。
したがって、VBコードはVBでのみ記述できます。
PSこの情報は、VBのVB質問ページの[ 情報 ]タブにあります。
VBA情報から
VBA 6は1998年に出荷され、無数のライセンス済みホストが含まれています。その中には、Office 2000-2010、AutoCAD、PI Processbook、およびスタンドアロンのVisual Basic 6.0があります。
VB(Visual Basicのみ6.0まで)は、VBA(Visual Basic for Applications)のスーパーセットです。他の人がこれを見逃していることは知っていますが、私の理解では、VBAのセマンティクス(つまり語彙)はVB6に含まれているため(Office製品に固有のオブジェクトを除く)、VBAはVB6のサブセットです。構文(つまり、単語が書き込まれる順序)は、VBAでもVB6の場合とまったく同じですが、VBAまたはVB6で使用できるオブジェクトは、目的が異なるため異なるのです。具体的には、VBAの目的は、MS Officeで実行できるタスクをプログラムで自動化することですが、VB6の目的は、スタンドアロンまたはMS OfficeやWindowsなどの他のプログラムで機能する標準EXE、ActiveXコントロール、ActiveX DLL、およびActiveX EXEを作成することです。