7

ベース リファレンス: VBA、Visual Basic .NET、および C# の 10 のコード変換

注:を既に作成してインポートしています。*.dllこの質問は エイリアスに関するものです。

Testクラスのプログラム名がTestNameSpace.Test

[ProgId("TestNamespace.Test")]
public class Test ...

ここで、C# ソリューションが封印されて にコンパイルされ、*.dllそれを Excel の VBE で参照しているとします。注: この時点では、あたかも*.dll私が書いたものではないかのように、プログラム名を変更することはできません。

これは次のVBAとおりです: 次のように変数を宣言する代わりに:

Dim myTest As TestNameSpace.Test
Set myTest = new TestNameSpace.Test

私はそれを呼びたいです(まだVBEにあります)

Dim myTest As Test
Set myText = new Test

C# では、通常、次のように言います。

using newNameForTest = TestNamespace.Test;
newNameForTest myTest = new NewNameForTest;

注:プロジェクトに名前空間の競合がないことを前提としていますVBA

質問:またはエイリアスの同等の呼び出しはありますか?VBAC# usingVB.NET imports

4

2 に答える 2

3

答えはノーです。プロジェクトに追加された参照を認識し、名前の競合がない場合、実行時 (VBE の実行時) にエイリアスを作成する組み込みの VBE 機能があります。

レジストリで名前が競合する場合は、すべての.ドットがアンダースコアに置き換えられ_ます。

»ProgIdの   (プログラム識別子)

COM では、遅延バインディングでのみ使用されます。これは、新しいオブジェクトを作成するための呼び出しを行う方法です

Dim myObj = CreateObject("TestNamespace.Test")


»EarlyBindingそしてLateBinding

事前バインディングでは、newキーワードを使用して作成するオブジェクトのタイプを指定します。オブジェクトの名前が VBA のインテリセンスでポップアップするはずです。とは関係ありませんProgId。オブジェクト タイプに使用されている実際の名前空間を取得するには - 開いObject Explorer F2てそこを見つけます。

この記事では、アーリー バインディング セクションの名前の由来について説明します。レイト バインディングを使用する場合
と同じリンクを使用します。

MSDN のプログラム識別子セクションについては、こちらを参照してください

于 2013-07-22T11:41:49.120 に答える