私はvbscriptを使用してライブラリを作成していますが、scriptcontrolオブジェクトを使用してこれらのルーチンをvbaから呼び出すことができます。私はScriptcontrolオブジェクトはレコードセットオブジェクトを返します
sub GetData(sql, byref retrst)
stADO = "Provider=SQLOLEDB.1;Persist Security Info=False;Initial
Catalog=CCMSProd;Data Source=sv-hfi-ccms;UID=vc;PWD=dw;"
cnconn as adoconnection
Set cnconn = CreateObject("ADODB.Connection")
cnconn.Open stADO
msgbox cnconn.ConnectionString
msgbox cnconn.state
With cnconn
.CommandTimeout = 0
Set retrst = .Execute(sql)
msgbox retrst.recordcount
End With
cnconn.close
end sub
以下のようにパラメータとして与えられたSQLを使用したルーチンとしてレコードセットを作成しようと何として
scr.Run "GetConnection", tempload, rst
が、私のレコードセットを返す以下のようにこのルーチンを呼び出し、接続とレコードセット本家いますvbscript内で作成されます。
私はこれに助けが必要です。
返信いただきありがとうございます。これは単なる例ですが、最適化されたコードではありません。 scriptcontrolオブジェクトがvbscriptからvbaにある呼び出しアプリケーションにレコードセットを返すかどうかを調べるためにいくつかのR&Dを行っています。それが私が直面している問題です。呼び出し元のアプリケーションにレコードセットを返さないScriptControlオブジェクト –
実際に返されるのは、レコードセットオブジェクトのメモリアドレスであるため、返すことはできません。メモリは、VBSが終了すると解放されます。 VBSが返すことができるのは、終了コードだけです。 VBAでこの同じコードを使用することができますので、VBSスクリプトを呼び出して同じ作業を行う理由がわかりません。 VBAで使用するためにMicrosoft ActiveX Data Objectsへの参照を追加し、モジュールでOption Explicitを使用し、変数の型を宣言するだけです。あなたのDimはADODB.RecordsetとしてDim objRecordSetになり、ADODB.ConnectionとしてDim objADOConnectionになります。 – thx1138v2