Visual Basic を使用したプログラミングと C# を使用したプログラミング

更新 : 2007 年 11 月

Visual Basic と C# のいずれを使用しても、Visual Studio Tools for Office ソリューションを作成できます。Microsoft Office オブジェクト モデルは VBA (Microsoft Visual Basic for Applications) で使用するようにデザインされているので、Visual Basic 開発者は Microsoft Office アプリケーションで公開されているオブジェクトを容易に操作できます。C# を使用して開発する場合の方法は、Microsoft Office オブジェクト モデルを操作するときの方法とは異なります。また、Office 開発における基本的なプログラミング機能と Visual Basic や C# で記述されたマネージ コードとの間にもいくつかの違いがあります。

Visual Basic と C# の主な相違点

Office 開発で Visual Basic を使用する場合と C# を使用する場合の主な相違点を、次の表に示します。

機能

説明

Visual Basic のサポート

C# のサポート

省略可能なパラメータ

Microsoft Office のメソッドには、呼び出すときに指定する必要のないパラメータを持つメソッドが多数あります。パラメータの値を渡さない場合は、既定の値が使用されます。

Visual Basic では、省略可能なパラメータをサポートしています。

C# では、省略可能なパラメータをサポートしていません。すべてのパラメータに値を渡す必要があります。詳細については、「Office ソリューションの省略可能なパラメータについて」を参照してください。

パラメータの参照渡し

大部分の Microsoft Office プライマリ相互運用機能アセンブリにある省略可能なパラメータは、値によって引き渡すこと (値渡し) ができます。ただし、一部のプライマリ相互運用機能アセンブリでは、参照型を受け取る省略可能なパラメータに対して参照渡しを行わなくてはなりません。

値型のパラメータと参照型のパラメータの詳細については、「引数の値渡しおよび参照渡し」(Visual Basic の場合) および「パラメータの引き渡し (C# プログラミング ガイド)」を参照してください。

参照渡しでパラメータを渡すのに、特別な処理は必要ありません。Visual Basic コンパイラでは、必要に応じて、パラメータは自動的に参照渡しされます。

Word のプライマリ相互運用機能アセンブリなど、一部のプライマリ相互運用機能アセンブリでは、参照型を受け取る省略可能なパラメータは ref キーワードを使用して渡す必要があります。また、実際の値が格納されている変数を渡すことが必要です。

パラメータ化したプロパティ

プロパティの中には、パラメータを受け取り、読み取り専用関数として動作するものがあります。

Visual Basic では、パラメータを受け取るプロパティをサポートしています。

C# では、パラメータを受け取るプロパティの値を設定または取得するために get アクセサと set アクセサが必要です。

遅延バインディング

遅延バインディングでは、デザイン時にオブジェクトの型に変数をキャストするのではなく、実行時にオブジェクトのプロパティを決定します。

Visual Basic では、Option Strict ステートメントが Off に設定されている場合に、遅延バインディングを実行できます。詳細については、「Option Strict ステートメント」を参照してください。

C# では、遅延バインディングは直接的には実行しません。ただし、System.Reflection 名前空間にある型を使用して、特定の型の利用できるメンバを決定し、一種の遅延バインディングを実行できます。

配列のインデックス

Microsoft Office アプリケーションのコレクションの配列の下位のインデックスは 1 から始まります。Visual Basic や Visual C# では 0 を基準とする配列が既定で使用されます。詳細については、「配列 (C# プログラミング ガイド)」および「Visual Basic の配列の概要」を参照してください。

Microsoft Office アプリケーションのオブジェクト モデルのコレクションの 1 番目のアイテムにアクセスするには、インデックス 0 ではなく 1 を使用します。

Microsoft Office アプリケーションのオブジェクト モデルのコレクションの 1 番目のアイテムにアクセスするには、インデックス 0 ではなく 1 を使用します。

Office 開発とマネージ コードの主な相違点

Office 開発と Visual Basic または C# で記述されたマネージ コードの主な相違点を、次の表に示します。

機能

[Description]

Visual Basic および C# のサポート

配列のインデックス

Microsoft Office アプリケーションのコレクションの配列の下位のインデックスは 1 から始まります。Visual Basic や Visual C# では 0 を基準とする配列が使用されます。詳細については、「配列 (C# プログラミング ガイド)」および「Visual Basic の配列の概要」を参照してください。

Microsoft Office アプリケーションのオブジェクト モデルのコレクションの 1 番目のアイテムにアクセスするには、インデックス 0 ではなく 1 を使用します。

参照

処理手順

方法 : プライマリ相互運用機能アセンブリを利用して Office アプリケーションを使用する

方法 : Office アプリケーションが返すオブジェクトをキャストする

概念

Office ソリューションのコードの記述

Office ソリューションの省略可能なパラメータについて