パソコン・ネット関連

エクセル2007を起動すると”stdole32.tlb”と出るようになった!

Windows7のUltimate 32bitでOffice2007を使用していますが、エクセル2007を起動したら”stdole32.tlb”というダイアログが表示されるようになりました。

そもそもWindows7にはOffice2003もインストールしており、Office2007をメインで使用していたのに、いつの間にかエクセルやワードを起動すると2003で起動するようになっていたんです。

それでエクセル2007で起動するように設定を変更したら、先ほどの”stdole32.tlb”というダイアログとインストーラーのダイアログが出だして起動するのに非常に時間がかかるんです。

それで調べてみるとどうもWindows7だけでなく、Windows VistaとOffice2007の環境で同じ症状が出ている人もいるようです。

原因はレジストリのHKEY_CLASSES_ROOTのアクセス権設定(ACL)というものがおかしくなり、この症状が起こるらしいです。説明もすべて英語で訳分からなかったのですが、実際に解決されている方がいたので参考にして同じ手順でやってみました。

まずなにはともあれ、レジストリを操作するのでレジストリのバックアップを取ってから行います。万が一不具合が起こっても自己責任でお願いします。

レジストリのバックアップができたら、「subinacl.msi」というファイルをダウンロードしインストールします。このsubinacl.msiはMicrosoft社が配布しているSubInACLツールというもので、レジストリのアクセス権に関するものらしいです。

subinacl.msiのインストールが終わったら、コマンドプロンプトを開きます。Windows7の場合、スタートからアクセサリフォルダを開き、コマンドプロンプトの上で右クリックし、管理者として実行をクリックします。この管理者モードでないと次に行うコマンドが実行できないようです。

コマンドプロンプトが開いたら、以下のコマンドを入力します。そのままコピーして貼りつければOKですが、コマンドプロンプトでは貼り付けのショートカット「Ctrl+V」が使用できないので、右クリックし貼り付けを選択します。

cd /d “%programfiles%Windows Resource KitsTools”
以下の6つのコマンドの内、最初の2つのコマンドの「あなたのPCアカウント名」にはWindowsにログインする際のユーザー名を入れて下さい。
subinacl /subkeyreg HKEY_CURRENT_USER /grant=administrators=f /grant=system=f /grant=restricted=r /grant=あなたのPCアカウント名=f /grant=restricted=r /setowner=administrators
subinacl /keyreg HKEY_CURRENT_USER /grant=administrators=f /grant=system=f /grant=restricted=r /grant=あなたのPCアカウント名=f /grant=restricted=r /setowner=administrators
subinacl /subkeyreg HKEY_LOCAL_MACHINE /grant=administrators=f /grant=system=f /grant=users=r /grant=everyone=r /setowner=administrators
subinacl /keyreg HKEY_LOCAL_MACHINE /grant=administrators=f /grant=system=f /grant=users=r /grant=everyone=r /setowner=administrators
subinacl /subkeyreg HKEY_CLASSES_ROOT /grant=administrators=f /grant=system=f /grant=users=r /setowner=administrators
subinacl /keyreg HKEY_CLASSES_ROOT /grant=administrators=f /grant=system=f /grant=users=r /setowner=administrators

時間にして約20分くらいかかり、すごい勢いでコマンドプロンプトに英語が出てくるし、上の方が赤い表示になるし不安だったんですが、終わってエクセル2007を起動してみると、インストーラーと”stdole32.tlb”が出なくなりました。

何をしたのかよくわかっていませんが、すごーく感激です。なお試される方はレジストリのバックアップを取り自己責任でお願いします。