none
ListViewがUserFormに配置できない

    質問

  • Excel2013のMicrosoft Visual Basic for Applicationsで

    ツールボックスにその他のコントロール追加でMicrosoft ListView Control, version 6.0

    を追加し、ユーザーフォームに配置しようとすると

    「ライブラリは登録されていません。」

    というメッセージが出て配置できません。

     

    解決方法をご存じの方がいれば、教えていただけないでしょうか?

    よろしくお願い致します。

     

    自力でいろいろ調べたところ以下のサイトで取り上げられているような

    原因が考えられるのかと思い試したのですが、解決しませんでした。

    <質問元のURLを記載しようとしましたが、投稿時に警告が表示されリンクを貼れませんでした。>

    regsvr32でocxを登録しなおすことは試してみましたが、解決しませんでした。

    環境

    Windows8 64bit

    Microsoft Excel 2013(15.0.4517.1506) MSO(15.0.4517.1508) 32 ビット

    上記の質問はMicrosoftコミュニティでも質問しておりますが、こちらで質問することを

    回答者様からこちらで質問することを提案され同じ内容を質問しております。

    <質問元のURLを記載しようとしましたが、投稿時に警告が表示されリンクを貼れませんでした。>

    2013年9月2日 11:50

回答

  • Microsoftコミュニティでも同様の質問していましたが、そちらで

    解決するための回答をいただけたのでご報告いたします。

    こちらにも同様の内容を書いておきます。

    64 ビット版 Windows + 32 ビット版 Office の場合は、

    「C:\Widnows\SysWOW64\MSCOMCTL.OCX」にOCXが存在しており、

    そのOCXをregsvr32していました。

    しかし、回答いただいた内容によると「C:\Program Files\Microsoft Office 15\root\vfs\SystemX86」

    フォルダにも MSCOMCTL.OCX が存在していることがわかりました。

    そこで以下の操作を行ったあと、ListViewの配置を試したところ

    問題のエラーが表示されず配置することができました。

    上記ファイルをコピー > 「C:\Widnows\SysWOW64」フォルダー内に貼り付け > 管理者としてコマンド プロンプトを開き「regsvr32 C:\Widnows\SysWOW64\MSCOMCTL.OCX」コマンドを実行 > 「~の DllRegisterServer は成功しました」と表示されれば登録成功

    回答いただいた方々へ

    ありがとうございました。

    • 回答としてマーク lei2013 2013年9月10日 14:06
    2013年9月10日 14:06

すべての返信

  • [コマンドプロンプトを管理者として実行]し、以下の様に入力してEnterします。

    regsvr32 C:\Windows\SysWOW64\MSCOMCTL.OCX

    ここで重要なのが、コマンドプロンプトを「管理者として実行」することです。

    Windows8のその方法については、以下が参考になると思われます。
    http://www.akakagemaru.info/port/network-cmd.html

    2013年9月2日 22:42
  • ご回答ありがとうございます。

    「管理者として実行」したコマンドプロンプトで

    regsvr32は試していましたが、現象は変わらず「ライブラリは登録されていません」が出ます。

    念の為、ご回答いただいたようにregsvr32を再度試しましたが

    解決しませんでした。

    2013年9月3日 10:32
  • REGSVR32 を実行する前に、無効になっているビルトイン Administrator アカウントを有効にして、そのユーザーで管理者実行してみては如何でしょう。

    また、Mscomctl.Ocx を更新するセキュリティパッチが適用されているかどうかも確認してみてください。
    具体的には MS12-027、MS12-060 など。(MS12-060 以降の物があるかどうかは調べていません)

    なお、MS12-027 については、下記のような解説もありました。

    このセキュリティ更新プログラムは、サードパーティ ソフトウェア ソリューションがインストールされているコンピューターにインストールします。このソフトウェア ソリューションは Microsoft Visual Basic for Applications (VBA) が基本になっています。また、ソフトウェア ソリューションは Microsoft Office を直接使用してコントロールのインスタンスを作成します。この状況で、コントロールがソリューションに読み込まれないことがあります。

    この問題を解決するには、クライアント コンピューター上のコントロール タイプ ライブラリ (エクステンダー ファイル) のキャッシュされたバージョンを削除します。これを行うには、ハード ディスクで ".exd" というファイル名拡張子が付いたファイルを検索し、見つかったすべての .exd ファイルを削除します。次に VBA を使用するときに、新しいコントロールを使用してこれらの .exd ファイルが自動的に再作成されます。これらのエクステンダー ファイルは、ユーザーのプロファイルの下にあり、次のような他の場所にも置かれていることがあります。

    C:\documents and settings\username\Application Data\Microsoft\Forms
    C:\documents and settings\username\AppData\Local\Temp\VBE

    2013年9月3日 12:32
  • ご回答ありがとうございます。

    Administratorを有効にして、AdministratorでログインしてRegsvr32を再度実行してみましたが

    現象は改善せず、VBAで貼り付けようとすると「ライブラリは登録されていません」がでます。

    セキュリティパッチをどう確認すればよいかイマイチ自身ありませんが

    教えていただいたパッチはKBXXXでいうと以下の対応でよろしかったでしょうか?

      MS12-027  KB2598039
      MS12-060  KB2748410

    パソコン上でMS12-XXXの形式でパッチが表示される画面を確認できず

    上記は、自分なりにネットで調べた対応するKBXXXです。

    このパッチはWindowsUpdateの更新履歴でみたところ入っていませんでした。

    ひょっとしたら、パソコンの購入日が2013/9/1なので何かの累積パッチ?に入っているのかもしれませんが。。。

    累積パッチのようにまとまっている場合、その中に対象のKBXXXが入っているかどうやって確認すればよいかわからず

    そこまでは確認できておりません。

    何か情報があれば、宜しくお願い致します。

    2013年9月5日 11:20
  • Microsoftコミュニティでも同様の質問していましたが、そちらで

    解決するための回答をいただけたのでご報告いたします。

    こちらにも同様の内容を書いておきます。

    64 ビット版 Windows + 32 ビット版 Office の場合は、

    「C:\Widnows\SysWOW64\MSCOMCTL.OCX」にOCXが存在しており、

    そのOCXをregsvr32していました。

    しかし、回答いただいた内容によると「C:\Program Files\Microsoft Office 15\root\vfs\SystemX86」

    フォルダにも MSCOMCTL.OCX が存在していることがわかりました。

    そこで以下の操作を行ったあと、ListViewの配置を試したところ

    問題のエラーが表示されず配置することができました。

    上記ファイルをコピー > 「C:\Widnows\SysWOW64」フォルダー内に貼り付け > 管理者としてコマンド プロンプトを開き「regsvr32 C:\Widnows\SysWOW64\MSCOMCTL.OCX」コマンドを実行 > 「~の DllRegisterServer は成功しました」と表示されれば登録成功

    回答いただいた方々へ

    ありがとうございました。

    • 回答としてマーク lei2013 2013年9月10日 14:06
    2013年9月10日 14:06