web-dev-qa-db-ja.com

Visual Basic 6.0とVBAの違い

2つの違いは何ですか。私はいつもVBAはVBの幾分「不細工な」バージョンだと思っていましたが、先日友人が私に尋ねたとき、私は実際の違いが何であるか分かりませんでした。

また、たとえばExcelを使用する場合、VBまたはVBAですか?

201
Thomas Geritzma

ほぼすべてのプログラミング目的で、VBAとVB 6.0は同じものです。

VBAはプログラムを実行可能なバイナリにコンパイルできません。プロジェクトを含めて実行するには、常にホスト(WordファイルやMS Wordなど)が必要です。また、VBAでCOM DLLを作成することもできません。

それとは別に、IDEには違いがあります-VB 6.0 IDEはより強力です。一方、VBAのホストアプリケーションは緊密に統合されています。アプリケーショングローバルオブジェクト( "ActiveDocument"など)およびイベントは宣言なしで使用できるため、アプリケーション固有のプログラミングは簡単です。

それでも、Wordを起動してVBA IDEをロードし、Wordとはまったく関係のない問題を解決することを妨げるものは何もありません。 VB 6.0で(技術的に)できることとVBAでできないことがあるかどうかはわかりません。ただし、MSDNで比較シートを探しています。

168
Tomalak

VBAは、 Visual Basic for Applications の略で、VBの小さな「アプリケーション用」スクリプト兄弟です。 VBAは確かにExcelで利用できますが、他のオフィスアプリケーションでも利用できます。

VBでは、スタンドアロンのWindowsアプリケーションを作成できますが、これはVBAでは不可能です。

ただし、開発者は、アプリケーションを自動化するスクリプト言語として、独自のアプリケーションにVBAを「埋め込む」ことができます。

編集VBA FAQ から:

Q。Visual Basic for Applicationsとは何ですか?

A。Microsoft Visual Basic for Applications(VBA)は、開発者がMicrosoft Visual Basicの全機能を使用してカスタムソリューションを構築できるように設計された埋め込み可能なプログラミング環境です。 VBAをホストするアプリケーションを使用する開発者は、アプリケーション機能を自動化および拡張して、カスタムビジネスソリューションの開発サイクルを短縮できます。

VB.NETは別の言語であり、VBとのみ構文を共有することに注意してください。

44
fretje

古い質問に対するより技術的で徹底的な答えは次のとおりです:Visual Basic for Applications(VBA)とVisual Basic(pre..NET)は単なる類似言語ではなく、same言語。具体的には:

  • それらは同じ仕様を持ちます:言語に含まれるものとその意味の実装に依存しない記述。ここで読むことができます: [MS-VBAL]:VBA Language Specification
  • これらは同じplatform:両方とも Microsoft P-Code にコンパイルされ、これはまったく同じ仮想マシンによって実行され、 dll msvbvm [x.0] .dll。

私が出会った古いVBの参考書 昨年、著者(Paul Lomax)は、「VBA」は常に言語自体の名前であり、スタンドアロンアプリケーションまたは埋め込みコンテキスト(MS Officeなど):

「先に進む前に、基本的なポイントを明確にしましょう。VisualBasic for Applications(VBA)は、Visual Basic(VB)でのプログラミングに使用される言語です。VB自体は開発環境です;言語要素その環境のVBAです。」

小さな違い

ホスト型vsスタンドアロン型:実際には、ほとんどの人が「VBA」と言うとき、特に「MS Officeで使用する場合はVBA」を意味します。 「VB6」とは、「スタンドアロンVBAコンパイラの最後のバージョン(つまりVisual Studio 6)で使用されるVBA」を意味します。 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つの違いを処理するためのいくつかの機能強化があります。

37
Joshua Honig

VBAとVB-Classic(VB6 ..)またはVB.NETを比較しますか?

VBA(Visual Basic for Applications)は、Microsoft Officeアプリケーションに埋め込まれたvbクラシックベースのスクリプト言語です。言語機能はVB5の機能と似ていると思います(いくつかの組み込み関数が不足しています)が、

VBAスクリプトを作成したオフィスドキュメントにアクセスできるので、たとえば.

  • マクロを書く(=オフィスワークで繰り返しの少ないタスクのための自動化されたルーチン)
  • Excelセル式の新しい関数を定義する
  • オフィスのデータを処理する

例:Excelセルの値を設定する

ActiveSheet.Cells("A1").Value = "Foo"

VBCと-.NETはスクリプト言語ではありません。それらを使用して、VBAでは実行できない独立したIDEでスタンドアロンアプリケーションを記述します(VBAスクリプトはOfficeに「存在する」だけです)

VBAはVB.NETとは何の関係もありません(これらは同様の構文を持っています)。

15
Dario

実際、VBAを使用してDLLをコンパイルできます。 Office 2000およびOffice XP Developerエディションには、COMアドインとして使用するDLLを作成するために使用できるVBAエディターが含まれていました。

この機能は、VSTO(VS Tools for Office)ソフトウェアの出現により後のバージョン(2003および2007)で削除されましたが、明らかに、 VB6 IDEを使用します。

11
anonymousType

VBAです。 VBAは Visual Basic for Applications を意味し、Officeドキュメントのマクロに使用されます。 VB.NET機能にはアクセスできないため、ドキュメントで作業できるアドオン(VBA for Excelのワークシートなど)を備えたVB6の修正バージョンに似ています。

6
instanceof me

VBは言語ではありません。 VBは、OfficeがVBAをホストするように、VBAをホストするプログラムです。 VBは、WordやExcelと同様にAppオブジェクトのセットであり、Officeと同様にフォームパッケージです。

したがって、VBでのみVBAコードを記述できます。

PSこの情報はINFOVB質問 VBのページにあります.

VBA情報から

VBA 6は1998年に出荷され、無数のライセンス済みホストが含まれています。その中には、Office 2000-2010、AutoCAD、PI Processbook、およびスタンドアロンVisual Basic 6.0が含まれます。

5
Serenity

VBAは、Visual Basic For Applicationsと、Officeスイートで使用することを目的としたVisual Basic実装の略です。

それらの違いは、VBAがOfficeドキュメント内に埋め込まれていることです(そのOffice機能)。 VBは、アプリケーション開発用のide/languageです。

4
Victor

VB(6.0までのVisual Basicのみ)は、VBA(Visual Basic for Applications)のスーパーセットです。私は他の人がこれを避けていることを知っていますが、私の理解では、VBAのセマンティクス(つまり語彙)はVB6に含まれています(Office製品に固有のオブジェクトを除く)ため、VBAはVB6のサブセットです。構文(つまり、単語が記述される順序)は、VB6の場合とVBAの場合とまったく同じですが、VBAまたはVB6で使用できるオブジェクトは目的が異なるため異なる点が異なります。具体的には、VBAの目的は、MS Officeで実行できるタスクをプログラムで自動化することですが、VB6の目的は、スタンドアロンまたはMS OfficeやWindowsなどの他のプログラムで動作する標準EXE、ActiveXコントロール、ActiveX DLL、およびActiveX EXEを作成することです。

1
user65795