VB6.0 で利用される dataListコントロールを、
excel-vba から参照して利用できるのでしょうか?
実際にやってみると何も表示されないのですが・・・
(rowSorece にレコードセットを指定し、lisField にフィールド名を指定してるんですが)
どうかご教授お願いします・・・。
すいません、補足します。
excel-vba のユーザーフォームに dataList を貼り付けて
利用してみた時にこういった現象が起きました。
> VB6.0 で利用される dataListコントロールを、
> excel-vba から参照して利用できるのでしょうか?
exe にコンパイルできる VB6 とは違って、Excel VBA の場合、実行時に
デザインタイムが要求されます。ランタイムと違って勝手に再頒布できるものでは
ありませんので、仮に VBA で表示できたとしても使用は避けるべきかと。
> 実際にやってみると何も表示されないのですが・・・
> excel-vba のユーザーフォームに dataList を貼り付けて
> 利用してみた時にこういった現象が起きました。
当方は「Excel 2010(x86)」+「Windows 7 Enterprise(x64)」ですが、
こちらとは若干様子が異なりますね。
《MSForms 上で使った場合》
'これはコンパイルエラー
'(MSForms.Control の RowSource As String プロパティと競合してしまう)
Set Me.DataList1.RowSource = mRs
'これは実行時エラー
Set Me.DataList1.object.RowSource = mRs
'これなら表示されました
Dim dl As MSDataListLib.IDataList
Set dl = Me.DataList1
Set dl.RowSource = mRs
Me.DataList1.ListField = "NM"
ただし、最後の方法を用いた場合であっても、
ListField 実行時にクラッシュすることが数回ありました。偶然?
《Worksheet 上で使った場合》
これは駄目でした。エラーにはなりませんが表示もされません。
> どうかご教授お願いします・・・。
http://www.tt.rim.or.jp/~rudyard/torii009.html
魔界の仮面弁士様
書き込みどうもありがとうございます。
『実行時に、デザインタイムが要求される』とは、どう言った事なのでしょうか?そして何故、それを再頒布しない方がいいのでしょうか?
どうか教えてください。
詳しく知りたいので、参考になる書籍とかあれば教えてください。
一般の参考書とかには、使い方位しかでていないので…つい、動けばいいって感じになってしまいます…。
> 『実行時に、デザインタイムが要求される』とは、どう言った事なのでしょうか?
多くの ocx は、生成時に開発時ライセンス(デザインタイムライセンス)を要求します。
ここでいう生成時とは、主にデザイナ上で貼り付ける事を差していますが、
Controls.Add メソッドによる動的ロードの場合も同様です。
もし、VB6 をインストールしていない環境でそれらの ocx を使おうとした場合、
「この ActiveX コントロールを使用するライセンスがありません。」
「この ActiveX コントロールを使用するにはライセンスが必要です。」
といったエラーが表示され、コントロールをロードすることはできません。
そのため、ocx を貼った xls を開こうとした場合、VB6 開発環境が
無い場合には、ライセンスエラーが表示されることになります。
なお、VB6 製 EXE や Access 製 MDE などにおいては、コンパイル時に
ライセンス情報が埋め込まれるため、ランタイムのみの環境でも動作します。
> そして何故、それを再頒布しない方がいいのでしょうか?
ライセンス情報さえ配置してやれば、VB6 の入っていない環境であっても、
Excel から各種 ocx を呼び出すことは可能なのですが、それは NG です。
ランタイム(実行時)ライセンスであれば、条件さえ満たせば再頒布可能ですが、
デザインタイム(開発時)ライセンスは再頒布が許可されていないからです。
再頒布条件については、VB6 付属の「使用許諾契約」(EULA.TXT)、および
「再頒布可能コードの一覧」(REDIST.TXT)を再読してみましょう。
魔界の仮面弁士様
書き込み、どうもありがとうございます。
表記して頂いたテキスト等を
読んで勉強しようと思います。
ありがとうございました。
解決チェックします。
編集 削除