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 アプリケーションが返すオブジェクトをキャストする