6

1 月 10 日以降、このコード行で立ち往生しており、メールでそれを受け取りました。クラス モジュールを学習する必要があることがわかったので、新しい基準で質問するために戻ってきました。コード行は次のとおりです (重大な警告: VBE で [ツール] --> [参照] に移動し、Microsoft WinHTTP サービス バージョン 5.1をアーリー バインディングでアクティブ化する必要があります):

Dim WinHttpReq As Object

Set WinHttpReq = CreateObject("WinHttp.WinHttpRequest.5.1")

CreateObject については、MS ヘルプにアクセスして次のように述べています。ActiveX オブジェクトの参照を作成して返します。

私が知っている限りでは、参照を作成するときは、オブジェクトのみを対象としており、次のように行われます(間違っている場合は修正してください):

Dim ThatIKnow as Workbook

次に、このようにインスタンス化します

Set ThatIKnow = Workbooks.Add

なぜ CreateObject が必要なのですか?

ヘルプは、「...ActiveX オブジェクトの」と言って続けます。

ヘルプで ActiveX をクリックすると、次のような用語集 が表示されます。オートメーション インターフェイスを介して他のアプリケーションまたはプログラミング ツールに公開されるオブジェクト

そして、この行は絶対に何も教えてくれません。ActiveXについて私が知っていたのはこれだけです

ここに画像の説明を入力

...これは ActiveX コントロールだと思います... (ActiveX は私にとって常にあいまいな用語でしたが、認めざるを得ません)

CreateObject( "WinHttp.WinHttpRequest.5.1" ) の内部で、Web を精査しましたが、WinHttp オブジェクトとその機能に関する適切な MS ヘルプが見つかりません。とにかく、オブジェクト ブラウザはライブラリとして持っていますが、F1 ヘルプ ボタンは何も表示しません。したがって、オブジェクト ブラウザはそれがライブラリであると言います。私は、Web で WinHttp 参照として、また WinHttp オブジェクトとして呼び出されていることを発見しました。これらすべてからそれは何ですか?

そして、神の愛のために、なぜ「5.1」と呼ばれるのですか?WinHttpRequest.5.1 用語がどこにも見つかりませんでした

私は噛み砕いた食べ物を求めているわけではありませんが、アイニグマをクラックするためのあらゆる努力は、実際に全体の状況をより引き締めます. このコード行を解読するのに役立つピンチがあれば、助けになるでしょう

私の質問を見てくれてありがとう

4

2 に答える 2

16

Early Binding と Late Binding の違いについては説明しません。それらについては、このKB 記事で読むことができます

ただし、私が行うことは、次のような質問に含まれるすべての小さな質問に答えることです。

  1. CreateObject とは?
  2. ActiveX コントロールとは何ですか?
  3. ActiveX オブジェクトの参照を作成して返す - 意味
  4. そして、神の愛のために、なぜ「5.1」と呼ばれるのですか?

CreateObject とは?


上記のコメントで述べたようにCreateObject、Visual Basic (vb6 および vb.net)、Visual Basic for Applications (VBA)、および VBScript で ActiveX コントロールまたは COM オブジェクトのインスタンスを動的に作成するために使用される関数です。


ActiveX コントロールとは何ですか?


ActiveX コントロールは、多数のアプリケーション プログラムで再利用できるコンポーネント プログラム オブジェクトです。に基づいて ActiveX コントロールを作成するための主要なテクノロジですComponent Object Model (COM)。一般に、ActiveX コントロールは、以前の OCX (オブジェクトのリンクと埋め込みのカスタム コントロール) を置き換えます。

ActiveX コントロールは、Visual Basic や C++ など、Microsoft のコンポーネント オブジェクト モデルを認識する任意のプログラミング言語で作成できます。

これらの ActiveX コントロールは、Component Object Model プログラム インターフェイスを使用する MS Excel などのコンテナとして知られているもので実行されます。実際、これは実際に私たち全員を助けます。これらのコントロールのコードを毎回ゼロから作成することを想像してみてください。


ActiveX オブジェクトの参照を作成して返す - 意味


引用した内容を参考に説明します。

Dim ThatIKnow as Workbook

Set ThatIKnow = Workbooks.Add

私たちが行っていることDim ThatIKnow as Workbookは、タイプ「Workbook」のオブジェクトを作成し、それをコード内で「ThatIKnow」として参照することをランタイム環境に伝えることです。ただし、これは実際にはオブジェクトを作成せず、メモリを割り当てません。メモリは、Newキーワードまたはその他の方法を使用してオブジェクトが作成されCreateobject、この変数に割り当てられた場合にのみ割り当てられます。ThatIKnow

Set ThatIKnow = Workbooks.Addしたがって、またはと言うときSet oXLApp = CreateObject("Excel.Application")、実際にはメモリ内にオブジェクトを作成しています。


そして、神の愛のために、なぜ「5.1」と呼ばれるのですか?


それは「神の愛」によって、他の哺乳類から分岐した霊長類から進化したからです。だから私たちをそれらの哺乳類のバージョンXと考えてください:D

はい、Pankaj Jaju がバージョン番号だと言ったのは正しいです。バージョン番号とは何ですか?なぜそれが重要なのですか?

バージョン管理、別名ソース管理、またはリビジョン管理は、簡単に言えば、ドキュメント、アプリケーション、情報の収集などに対する変更の管理に他なりません。通常、新しい変更は、数字または文字コード、またはそれらの組み合わせによって識別されます。

これは、そのドキュメントまたはアプリケーションの現在のバージョンを知らせてくれるので便利です。

バージョン管理の詳細については、このリンクを参照してください


私はあなたの質問をすべてカバーしたと思いますか?そうでない場合は、お気軽にお問い合わせください。

于 2014-02-06T19:43:14.013 に答える