Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(その他 : Excel 2010)
Excel2010のListviewが利用できません。
投稿日時: 12/05/31 15:46:23
投稿者: takanoyukio

初めて投稿させて頂きます。
 
今度Windows2008ServerR2をターミナルサーバー化し、
そこでExcel2010を使って業務をしようと思い、
評価版のWin2008ServerR2(スタンダード)を使ってテストしています。
 
1.サーバーを新規にセットアップ
2.Excel2010(32bit)のみをインストール
3.コントロールの追加で「Microsoft Listview Control,version 6.0」を追加
4.Userform上にListViewを設置
 
上記1-4はできました。
 
ところが、そのあとOfficeのUpdateをして、
Listviewのあるファイルを開くと、
「コンパイルエラー:無効なオブジェクトライブラリです。
または定義されていないオブジェクトへの参照を含んでいます」
となり、
新規ブックのUserformにListviewを貼り付けようとしても、
「要素が見つかりません」とでてしまい、
Listviewを新たに作成することもできなくなってしまいました。
 
そこで、一旦Excel2010をアンインストールして、
再度Excel2010をインストールしてみたのですが、
Listviewは使えないままです。
 
また、再インストール後はコントロールの追加をしなくても、
Listviewが追加になっているので、
そのあたりはアンインストールでは元に戻らないのでしょうか?
 
Excel2000でVBAを使っていて、Listviewは便利なので、
Excel2010でも使って行きたいと考えていたので、
とても困っています。
 
そのあたりを初期化するには、
OS再インストールくらいからやり直すしかないのでしょうか?
 
何かご存知の方がいらっしゃいましたら、
ご教授しただければと思います。

回答
投稿日時: 12/05/31 16:09:30
投稿者: Abyss
メールを送信

なぜか、ここ何日間ListViewトラブルの質問が多いですね。
 
まずは、↓の方法。
http://support.microsoft.com/kb/2296116/en-us
 
「ファイル名を指定して実行」から、
regsvr32 C:\Windows\System32\MSCOMCTL.OCX
を実行。

回答
投稿日時: 12/05/31 16:30:41
投稿者: yayadon

takanoyukio さんの引用:
また、再インストール後はコントロールの追加をしなくても、
Listviewが追加になっているので、
そのあたりはアンインストールでは元に戻らないのでしょうか?

別スレにもあるけれど,
 
C:\Users\ユーザー名\AppData\Roaming\Microsoft\Forms
 
の中に,拡張子が
 
 .box    ※ ツール ボックス
 .exd    ※ 参照設定(拡張コントロール絡み)
 
で始まるものがあります。
そこにキャッシュとして残るので一度削除する必要があります。
 
 
また,
Excel シート上に張り付けたことがある場合は,
 
C:\Users\ユーザー名\AppData\Local\Temp\ExcelXX.X  ※ XX.X はバージョン
 
の中に,拡張子が
 
 .exd
 
で始まるものがあります。
そこにキャッシュとして残るので一度削除する必要があります。
 

回答
投稿日時: 12/05/31 16:48:03
投稿者: yayadon

あと...
ライセンス的には,ListView ActiveX コントロールを使えるのは,
Office Developer 版ユーザーが作成/配布したものだけだったハズ?で,
Office 2010 の Developer 版は存在していないので,
もう... しょうがないですね。
 

投稿日時: 12/05/31 17:15:16
投稿者: takanoyukio

Abyss さんの引用:
なぜか、ここ何日間ListViewトラブルの質問が多いですね。
 
まずは、↓の方法。
http://support.microsoft.com/kb/2296116/en-us
 
「ファイル名を指定して実行」から、
regsvr32 C:\Windows\System32\MSCOMCTL.OCX
を実行。

 
ご回答ありがとうございます。
早速試してみたのですが、
「モジュール "C:Windows\System32\MSCOMCTL.OCX"の
読み込みに失敗しました。
 
バイナリが指定されたパスに格納されていることを確認するか、
バイナリまたは依存.DLLファイルに問題ないか調べてください。
 
指定されたモジュールが見つかりません。」
となってしまいました(T_T)

回答
投稿日時: 12/05/31 17:22:08
投稿者: Abyss
メールを送信

OS = Win2008ServerR2(スタンダード)
 
OSのシステムフォルダーを指定しなと。

投稿日時: 12/05/31 17:23:27
投稿者: takanoyukio

yayadon さんの引用:
takanoyukio さんの引用:
また、再インストール後はコントロールの追加をしなくても、
Listviewが追加になっているので、
そのあたりはアンインストールでは元に戻らないのでしょうか?

別スレにもあるけれど,
 
C:\Users\ユーザー名\AppData\Roaming\Microsoft\Forms
 
の中に,拡張子が
 
 .box    ※ ツール ボックス
 .exd    ※ 参照設定(拡張コントロール絡み)
 
で始まるものがあります。
そこにキャッシュとして残るので一度削除する必要があります。
 
 
また,
Excel シート上に張り付けたことがある場合は,
 
C:\Users\ユーザー名\AppData\Local\Temp\ExcelXX.X  ※ XX.X はバージョン
 
の中に,拡張子が
 
 .exd
 
で始まるものがあります。
そこにキャッシュとして残るので一度削除する必要があります。
 

 
ご回答ありがとうございます。
 
明日、試してみてご報告いたします。

回答
投稿日時: 12/05/31 21:38:37
投稿者: yayadon

[訂正]
 
> .exd    ※ 参照設定(拡張コントロール絡み)
 
 .exd    ※ UserForm(拡張コントロール絡み)
 
 
 
cf.
上記の拡張コントロール(Extended Control)とは,ActiveX コンテナが
ActiveX コントロールの標準プロパティや環境プロパティを
載せられた ActiveX コントロールの固有のプロパティと一体化させて,
ActiveX コンテナ側が利用しやすくするためのもので,また,
そのプロパティのUIを提供するプロパティシートを提供するためのものです。
 
MSForms.UserForm ActiveX コンテナの場合,
UserForm 上に置くと,
ActiveX コントロールと一体化しているように見える MSForms.Control クラスのことです。
 
 
ActiveX コントロール絡みのプロパティの値は,
ActiveX コンテナ側に格納されます。
ですが,
タイプライブラリ絡みのものに関しては,UserForm1 内ではなく,
上記の拡張子のファイル側にキャッシュされるようです。
 
また,CLSID が変更にならない場合は,
コントロールの各情報が変更になっても反映されません

 
 
-----
# Access のフォームの場合だと,Access.CustomControl クラスが相当しますが,
# Access では,そういう仕組みにはなってなく,内部完結しているようです。
 

投稿日時: 12/06/01 09:53:58
投稿者: takanoyukio

yayadon さんの引用:
[訂正]
 
> .exd    ※ 参照設定(拡張コントロール絡み)
 
 .exd    ※ UserForm(拡張コントロール絡み)
 
 
 
cf.
上記の拡張コントロール(Extended Control)とは,ActiveX コンテナが
ActiveX コントロールの標準プロパティや環境プロパティを
載せられた ActiveX コントロールの固有のプロパティと一体化させて,
ActiveX コンテナ側が利用しやすくするためのもので,また,
そのプロパティのUIを提供するプロパティシートを提供するためのものです。
 
MSForms.UserForm ActiveX コンテナの場合,
UserForm 上に置くと,
ActiveX コントロールと一体化しているように見える MSForms.Control クラスのことです。
 
 
ActiveX コントロール絡みのプロパティの値は,
ActiveX コンテナ側に格納されます。
ですが,
タイプライブラリ絡みのものに関しては,UserForm1 内ではなく,
上記の拡張子のファイル側にキャッシュされるようです。
 
また,CLSID が変更にならない場合は,
コントロールの各情報が変更になっても反映されません

 
 
-----
# Access のフォームの場合だと,Access.CustomControl クラスが相当しますが,
# Access では,そういう仕組みにはなってなく,内部完結しているようです。
 

 
おはようございます。
さっそく、Excel2010はアンインストールせず、
「C:\Users\ユーザー名\AppData\Roaming\Microsoft\Forms\MSComctlLib.exd」
の拡張子を適当に変えてExcel2010を起動した結果、
Listviewを配置できるようになりました!!
 
また、Excel2000で配置していたListviewも
今まで通りに使えるようになりました(^o^)
 
これからのUpdateでまた使えなくなるかもしれませんが、
とりあえず、これで対処してみたいと思います。
 
昨日は遅い時間にとても詳細なコメントをいただきまして
ありがとうございました。
 
そして、まだまだ勉強することが多くあるな〜、と実感いたしました。
 
[PS]
実は、Listviewが使えなくなったのも困ったのですが、
Excel2000では開けるブックが、
「ファイルが壊れています」みたいメッセージで
開くことができなくなってしまっていたのですが、
それも開けるようになり、その分も助かりました。
 
本当にありがとうございました。