tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板 [ツリー表示へ]   [Home]
一括表示(VB6.0)
タイトルコンポーネントの参照設定でエラー
記事No15712
投稿日: 2013/06/22(Sat) 13:45
投稿者KK
大変おせわになります。

現在、VB6プログラムを変更することになったのですが
コンポーネントの参照設定でエラーが発生し困っております。

ネットで関連情報を探し試みたのですが解消できておりません。
お手数ですがお知恵を貸していただけないでしょうか?





[状況]
 MonthViewを使用しているVBソースを開こうとすると
 「読み込み時にエラーが発生しました」のメッセージBOX表示。

 作成されたログを見ると
 「行 122: クラス MSComCtl2.MonthView(コントロール MonthView1)
   はロードされていません。」

 この事からコンポーネントにmscomct2.ocxを参照しようとすると
 「オブジェクトライブラリは登録されていません」
  のメッセージBOX表示。 
 

 ※ 対象のフォームを開いてみるとMonthViewを使用している
     コントロールがピクチャボックスに置換されています
 

[試した事]
 ・ダウンロードサイトに掲載されていましたVB6ランタムをインストール
 ・コマンドプロンプトでregvr32で登録
 
 など試みましたが解消に至っておりません。



[環境]
 OS     : windows7 Professional SP1 (32bit)
 Office : Office2013
 VB     : VisualBasic6.0(SP6)

 CPU    :Core-i3 3.4GHz
 RAM    :4G

[ツリー表示へ]
タイトルRe: コンポーネントの参照設定でエラー
記事No15713
投稿日: 2013/06/23(Sun) 06:52
投稿者VBレスキュー(花ちゃん)
確認ですが、IDE 上のメニューのプロジェクト→コンポーネント→コントロール で
Microsoft Windows Common Controls-2 6.0(SP6) が見つからない(表示されていない)という事
でしょうか?
System32 には入っている?

それなら VB6.0 (サービスパック/修復ツール) 等をインストールし直すとかの方が早いかも。
http://www.microsoft.com/ja-jp/download/details.aspx?id=7030

>・ダウンロードサイトに掲載されていましたVB6ランタムをインストール
>・コマンドプロンプトでregvr32で登録
使用環境でのライセンスであって、開発環境では使用できなかったかと
又、レジストリに登録するにせよ、Windows 7 環境では管理者権限で登録しないとダメだったのでは。

[ツリー表示へ]
タイトルRe^2: コンポーネントの参照設定でエラー
記事No15717
投稿日: 2013/06/24(Mon) 08:50
投稿者KK
ご返信ありがとうございます。
わかりづらい記述で申し訳ございません。



> 確認ですが、IDE 上のメニューのプロジェクト→コンポーネント→コントロール で

現環境で上記IDEメニューには
Microsoft Windows Common Controls-2 6.0(SP4)と表示されており
これを参照しようとチェックボックスをONにし、適用ボタンを押下すると
「オブジェクトライブラリは登録されていません」エラーが表示されます。


また、System32フォルダにはmscomct2.ocxは入っております。




> それなら VB6.0 (サービスパック/修復ツール) 等をインストールし直すとかの方が早いかも。

ありがとうございます。早速インストールしてみました。

ですがIDEにはこれまでと同じくMicrosoft Windows Common Controls-2 6.0(SP4)と表示されており
こちらも参照しようとするとこれまでと同じく
「オブジェクトライブラリは登録されていません」エラーが表示されます。



> 使用環境でのライセンスであって、開発環境では使用できなかったかと

ありがとうございます。

現在、VB6で開発したシステムの改修を行う予定なのですが
なかなか開発環境が整わず苦戦しております。
ほかに必要な情報がございましたらご連絡いただけると助かります。


ちなみに元システムは
  WinXP(SP3)
  VB6(SP6)
  Oracle10.2.0.1
  Office2003(SP3)
  GrapeCity SPREAD6.0J
で開発されております。


大変お手数ですがお知恵の拝借よろしくお願します

[ツリー表示へ]
タイトルRe^3: コンポーネントの参照設定でエラー
記事No15718
投稿日: 2013/06/24(Mon) 10:49
投稿者VBレスキュー(花ちゃん)
> 現環境で上記IDEメニューには
> Microsoft Windows Common Controls-2 6.0(SP4)と表示されており
> これを参照しようとチェックボックスをONにし、適用ボタンを押下すると
> 「オブジェクトライブラリは登録されていません」エラーが表示されます。

直接 System32 に入っている mscomct2.ocx を上書きするような事をしていませんか?
(ランタムをインストールした時に)

一旦チェックを外して、OK ボタンを押して今まで登録されていたコントロールを削除して
IDE を終了して、あらたに、チェックを入れ直しても同じなら(又は、新規プロジェクトで試しても)
VB6.0 を再インストールした方が早いかもしれません。

> ありがとうございます。早速インストールしてみました。
> ですがIDEにはこれまでと同じくMicrosoft Windows Common Controls-2 6.0(SP4)と表示されてお
Windows Common Controls-2 6.0(SP6) は入っていないのですか? (SP4) → (SP6)
SP6 で上書きされていない? どうせだめなら、古い方を削除してからもう一度実行するとか。
修復ツールで追加されないか試してみるとか。

[ツリー表示へ]
タイトルRe^4: コンポーネントの参照設定でエラー
記事No15719
投稿日: 2013/06/24(Mon) 16:12
投稿者魔界の仮面弁士
> Windows Common Controls-2 6.0(SP6) は入っていないのですか? (SP4) → (SP6)

!? そのライブラリは初耳です。
後学のために、具体的な ocx のバージョンを教えて頂けないでしょか。


自分の認識では、VB6 付属のコモンコントロール群の表記は
 1: Microsoft Windows Common Controls 6.0 (SP6)
 2: Microsoft Windows Common Controls-2 6.0 (SP4)
 3: Microsoft Windows Common Controls-3 6.0 (SP5)
 4: Microsoft Windows Common Controls 5.0 (SP2)
 5: Microsoft Windows Common Controls-2 5.0 (SP2)
が最終バージョンだと思っていたので…。

なお、手元の環境(Windows 7 Enterprise, x64)においては、それぞれは
 1: MSCOMCTL.OCX Ver.6.1.98.34
 2: MSCOMCT2.OCX Ver.6.1.98.16
 3: COMCT332.OCX Ver.6.7.0.9782
 4: COMCTL32.OCX Ver.6.0.81.5
 5: COMCT232.OCX Ver.6.0.80.22
になっていました。


# 最初の投稿では、誤って
# 4: COMCTL32.OCX Ver.5.82.7601.17514
# と書いていましたが、これはCOMCTL32.DLL のバージョンでした。

[ツリー表示へ]
タイトルRe^5: コンポーネントの参照設定でエラー
記事No15721
投稿日: 2013/06/24(Mon) 18:03
投稿者VBレスキュー(花ちゃん)
> > Windows Common Controls-2 6.0(SP6) は入っていないのですか? (SP4) → (SP6)
>
> !? そのライブラリは初耳です。
> 後学のために、具体的な ocx のバージョンを教えて頂けないでしょか。

失礼しました、コピペした時に、Microsoft が抜けていたようです。
Microsoft Windows Common Controls-2 6.0(SP6)

ファイルバージョンは、MSCOMCT2.OCX Ver.6.1.98.16 で同様のようですが

http://www.hanatyan.sakura.ne.jp/img/mscomct2.gif

多分、下記の Microsoft Visual Basic 6.0 Service Pack 6 が最新だと思うのですが
最近インストールしたのでその時に変わったのかと。

公開日: 2012/08/16
http://www.microsoft.com/ja-jp/download/details.aspx?id=7030

[ツリー表示へ]
タイトル情報提供ありがとうございます
記事No15724
投稿日: 2013/06/24(Mon) 21:10
投稿者魔界の仮面弁士
ありがとうございます。助かります。

話を拡散してしまって済みません。>KK さん


> ファイルバージョンは、MSCOMCT2.OCX Ver.6.1.98.16 で同様のようですが

あら。そうなんですね。

ですが、そちらのファイル更新日は 2010/02/16 15:22。
こちらのものは 2009/09/25 17:32 となっていました。
これってインストールした日付になるのでしたっけ…?

なお、MSCOMCT2.OCX の依存ファイルとされている MSCC2JP.dll も
確認したところ、こちらは更新された形跡がありませんでした。
(6.0.81.63、53248バイト、1998/07/06 00:00:00更新)


とにかく、セキュリティ ロールアップ更新プログラムが未適用または
中途半端な状態になっているようなので、一度見直してみます。
(他の VM も含めて追加調査したいけど、あまり時間的余裕が無い…OSから入れなおそうかな)



以下、備忘録も兼ねてつらつらと。


> 公開日: 2012/08/16
> http://www.microsoft.com/ja-jp/download/details.aspx?id=7030

ありがとうございます。
ファイル名: VB60SP6-KB2708437-x86-JPN.msi
ナレッジベース記事: KB957924
http://download.microsoft.com/download/8/9/1/89129C68-EE47-4025-AA42-13D3D6E21687/VB60SP6-KB2708437-x86-JPN.msi

あれ…? そのページを見ると、ファイル名に含まれている KB 番号と、
リンクされている Knowlege Base 番号が一致していませんね。


ファイル名にある KB957924 というものについては、手元の資料では
 公開日:2009/05/04
 ファイル名:VB60SP6-KB957924-v2-x86-JPN.msi
http://download.microsoft.com/download/9/E/8/9E84AF79-A628-4DEF-A31F-92C529EBA356/VB60SP6-KB957924-v2-x86-JPN.msi
になっていました。

かなり古いメモなので怪しいところもありますが、少なくともこの中に、
MSCOMCT2.OCX  6.1.98.16 (659264バイト)が含まれていることは確認しています。


気になったので、改めて KB957924 を読み返してみると、こんなことが書かれていました。
コンテンツが更新されていたのでしょうか。迂闊でした。

| http://support.microsoft.com/kb/957924/ja
| 2012 年 8 月、マイクロソフトは Microsoft Visual Basic 6.0 Service Pack 6 (SP6)
| ランタイム拡張ファイル用の累積的な更新プログラムを再リリースしました。
| これは、以前にリリースされた累積的な更新プログラムに置き換わるものです。
|  2012/08/14 [MS12-060] KB2708437  … COMCTL32.OCX(6.0.98.34), MSCOMCTL.OCX(6.1.98.34)
|  2012/04/10 [MS12-027] KB2641426  … MSCOMCTL.OCX(6.1.98.33)
|  2008/12/09 [MS08-070] KB926857


上記 KB957924 に記載されているファイル一覧を見る限りでは、
2009/03/24 更新の *.*.98.13〜16 系に、
2012/05/02 更新の *.*.98.34 系を加えたもののようですね。

で、問題の「MSCOMCT2.OCX」を見てみると、6.1.98.16 という
バージョンこそ同じですが、ファイル更新日については、
花ちゃんのものはおろか、私のものよりもさらに古いようです。
(ファイル更新日をどこまで信じて良いのかは疑問ですが)


【MSCOMCT2.OCX】
KB957924: ver.6.1.98.16  659264   2009/03/24 15:52
私の環境: ver.6.1.98.16  659264   2009/09/25 17:32:44
花ちゃん: ver.6.1.98.16  ??????   2010/02/16 15:22


ついでに、KB957924 に記載されている他のファイルについても。
これについては、明らかに当方環境の方が古いので、見直さないといけませんね。


【MSCOMCTL.OCX】
KB957924: ver.6.1.98.34  1070152  2012/05/02 12:17
私の環境: ver.6.1.98.34  1070152  2012/06/06 08:49:52

※VB60SP6-KB957924-v2-x86-JPN.msi のものは 6.1.98.16 。


【COMCT332.OCX】
KB957924: ver.6.7.98.16   415552  2009/03/24 15:52
私の環境: ver.6.7.0.9782  416528  2004/03/09 00:00:00

※VB60SP6-KB957924-v2-x86-JPN.msi のものは 6.7.0.9816 。


【COMCTL32.OCX】
KB957924: ver.6.0.98.34   617816  2012/05/02 12:17
私の環境: ver.6.0.81.5    609824  2004/03/09 00:00:00

※VB60SP6-KB957924-v2-x86-JPN.msi のものは 6.0.98.16 。


【COMCT232.OCX】
KB957924: ver.6.0.98.16   170080  2012/05/02 12:17
私の環境: ver.6.0.80.22   164144  1998/06/24 00:00:00

※VB60SP6-KB957924-v2-x86-JPN.msi のものは 6.0.98.16。

[ツリー表示へ]
タイトルRe^4: コンポーネントの参照設定でエラー
記事No15722
投稿日: 2013/06/24(Mon) 18:39
投稿者KK
ご連絡ありがとうございます。

> 直接 System32 に入っている mscomct2.ocx を上書きするような事をしていませんか?
> (ランタムをインストールした時に)

上書きしていました。。


> 一旦チェックを外して、OK ボタンを押して今まで登録されていたコントロールを削除して
> IDE を終了して、あらたに、チェックを入れ直しても同じなら(又は、新規プロジェクトで試しても)
> VB6.0 を再インストールした方が早いかもしれません。

購入してあまり日付がたっていないパソコンでしたので
思い切って購入時の状態にリカバリをかけました。

その後、
 VB6インストール→ VB6(SP6) → VB60SP6-KB2708437-x86-JPN を適用したところ
 Microsoft Windows Common Controls-2 6.0(SP6) がIDEのコンポーネントに表示されました。

結果、
 MonthViewも表示されました
 ありがとうございます。



ただ、このパソコンOfficeがプレインストール版であり
アンインストールせずにリカバリをしてしまったので
現在Microsoftにメディアを発注しています。
(Officeメディアが付属していない事を知りませんでした汗)

変更するシステムはExcelObjectも使用しているので
メディアが届き次第システム変更を再開しようと思います。


今回いろいろと情報をご提供いただき
本当にありがとうございます。

[ツリー表示へ]
タイトルRe^3: コンポーネントの参照設定でエラー
記事No15720
投稿日: 2013/06/24(Mon) 16:30
投稿者魔界の仮面弁士
> 現在、VB6で開発したシステムの改修を行う予定なのですが
> なかなか開発環境が整わず苦戦しております。
> ほかに必要な情報がございましたらご連絡いただけると助かります。

VB6 の開発環境は、どのようにインストールしましたか?
(Office VBA の事では無く、単体パッケージとしての Visual Basic/Visual Studio 6.0 の事です)

念のため、管理者権限を持ったユーザーアカウント(Administrator等)で
開発環境を再インストールし、再起動後、そのユーザーで、あらためて
ファイルを開いてみてください。


> ・ダウンロードサイトに掲載されていましたVB6ランタムをインストール
> ・コマンドプロンプトでregvr32で登録

Vector や Microsoft Download Center 等から入手できるランタイム ライブラリは、
その名の通り「実行時」に使われるものであり、いわゆる「ランタイム ライセンス」にて
動作するものです。


一方、「開発時」に必要とされるものは「デザインタイム ライセンス」であり、
これは通常、レジストリに登録されているライセンス情報(※)です。
REGSVR32 などによるレジストリ登録とは別の話なので注意してください。

※ライセンス情報については、レジストリ以外にも、LIC ファイルが使われる場合や
 VB6 の Licenses.Add で動的ロードされる場合などがあるのですが、一般的には、
 開発環境をインストールした時にレジストリに登録されるライセンスを利用します。

なお、デザインタイムの再頒布は許可されていません。


また、ここでいう「開発時」とは
 ・Excel シートや Internet Explorer 上の HTML にて、ActiveX コントロールを利用する際
 ・VB 開発環境で、フォーム等に ActiveX コントロールを貼りつける際
 ・VB 開発環境で、ActiveX コントロールを使ったソースを開く際
 ・VB6 の Controls.Add メソッドでコントロールを呼び出す場合
などを指します。


VB6 で作成した EXE の場合は、こうしたライセンス情報が
コンパイル時に埋め込まれるため、作成した EXE を実行するだけならば、
開発ライセンスは不要であり、ランタイムのみで動作します。

[ツリー表示へ]
タイトルRe^4: コンポーネントの参照設定でエラー
記事No15723
投稿日: 2013/06/24(Mon) 18:41
投稿者KK
> VB6 の開発環境は、どのようにインストールしましたか?
> (Office VBA の事では無く、単体パッケージとしての Visual Basic/Visual Studio 6.0 の事です)


ご連絡ありがとうございます。

開発環境は、パッケージのVisual Basic 6.0をインストールしております。



> 念のため、管理者権限を持ったユーザーアカウント(Administrator等)で
> 開発環境を再インストールし、再起動後、そのユーザーで、あらためて
> ファイルを開いてみてください。

申し訳ございません、ご連絡を見る前に開発環境を購入時の状態に
リカバリしてしまったので上記手法を試みることができませんでした。

リカバリ後セットアップを行ったところ、無事MonthViewが表示できました。


Officeを考慮せずリカバリをしてしまう失敗をしてしまいましたが
まずは開発環境の構築が一歩進みました。

今回、ご連絡本当にありがとうございます。

[ツリー表示へ]