質問: excel2013からexcel2010にダウングレードするとvbaが失われます 私はwindows7を使用しています。以前はexcel2003を使用していました。office2013をインストールしたところ、office 2003に問題がなく、両方のバージョンを実行できることがわかりました。 excel2013とvbaコードを使用していくつかのワークシートを更新しました。office 2010を使用する必要があると通知されたので(理由については説明しません)、office 2013をアンインストールし、office 2010(企業ライセンス)をインストールしました。 2010年にexcel2013を使用して変更したスプレッドシートを開くと、microsoft visual basic forapplicationsメッセージが表示されます。 クラスが登録されていません。 clsidを持つオブジェクトを探しています:(ac9f2f90-e877-11de-9f68-00aa00574a4f) [ok]をクリックすると、excelメッセージが表示されます excelで読み取り不可能なコンテンツが見つかりました name_of_spreadsheet.xls。このワークブックの内容を復元しますか? [はい]を選択すると、次のようなメッセージが表示されます excelは、読み取り不可能なコンテンツを修復または削除することにより、ファイルを開くことができました。 visualbasicプロジェクトを失いました。ピボットテーブルレポートが修復され、1つ以上の無効な条件付き形式がブックから削除され、activexコントロールが失われました。 現在、vbaコードは見つかりません。ブックが開いて正常に見えますが、vbaを実行しているボタンが機能せず、vbaを開くと(alt+f11)、モジュールが表示されません。regsrv32.exeを使用してfm20.dllを実行しようとすると、次のようなメッセージが表示されます。 モジュールfm20.dllを読み込めませんでした。バイナリが指定されたパスに保存されていることを確認するか、バイナリまたは依存する.dllファイルの問題をチェックするためにデバッグします。指定されたモジュールが見つかりませんでした"。 しかし、fm20.dllがあったサブディレクトリからregsrv32を実行しました。私の問題は、visualbasicプロジェクトやactivexコントロールの喪失に関係していると思います。excel2013を削除してexcel2010をインストールする前にそこにあったvbaコードを見つけるには、何をする必要がありますか?
回答: このブログ投稿は、このエラーを修正するのに役立ちました。 https://dynamicsgpland.blogspot.in/2009/11/vba-error-class-not-registered-looking.html vbaエラー:クラスが登録されていません。 clsidを持つオブジェクトを探しています:{ac9f2f90-e877-11ce-9f68-00aa00574a4f} 私は知っています、私は知っています、それはそのような明白なエラーですよね?つまり、実際、dynamics gpの世界に、この明らかなクラスidについて質問することを嘲笑しない人が残っているのでしょうか。 そこで、最近、新しいプロジェクト用に新しい開発仮想サーバーを作成しました。これは、何十回も問題なく実行したことです。しかし、何らかの理由で、今回はdynamicsgpでいくつかの奇妙な問題に遭遇しました。それらの1つは、このvbaエラーでした。 これは、sp4がインストールされた新しいwindows server 2008 x64仮想サーバー、sql server 2005 sp3、およびdynamics gp 10fp1上にありました。 visual studioまたはofficeをインストールしていません。これが、エラーの原因であると確信しています。 ユーザーフォームファイルをvbaにインポートしようとしたとき、または新しいユーザーフォームを挿入しようとしたときに、エラーが発生しました。 後で、このエラーは明らかにmbs kb article961568に記載されているエラーの変形であることがわかりました。 「ロード中にエラーが発生しました」またはユーザーフォームを持つパッケージファイルをインポートした場合:コントロールfrmxxxのクラス{c62a69f0-16dc-11ce-9e98-00aa00574a4f}はロードされたコントロールクラスではありませんでした。 当時、これはdllがサーバーに登録されていないことを意味している可能性が高いことを知っていましたが、これらの素敵なguidは見るのが楽しいですが、平均的な人間には何も伝えていません。 which dllは登録されていません。 ショートカットとして、vbaのユーザーフォームに問題がないことがわかっているサーバーに切り替え、レジストリでそのguidを検索しました。その検索で、fm20.dllファイルが登録されていないことが問題であることがわかりました。 そのファイル名をグーグルで検索した後、fm20.dllがvbaがwindowsフォームで機能するために必要なファイルであることを知りました。この素敵なkb記事では、その使用法について説明していますが、fm20.dllは「再配布不可」であることを強調しています(wordの小文字の非太字バージョンについて不明確で混乱している私たちのために、すべて大文字で太字にする必要はありませんでした。 ')ではなく、それを配布するいくつかのmicrosoftアプリケーションの1つをインストールすることによってのみ取得できること。 高価な弁護士のチームが、誰かが単一のdllファイルをコピーして手動で登録するのを確実に防ぐ素晴らしいスキームを思い付くのに、数千ドルの請求可能な時間を要したに違いありません。同じ夏のインターンの法学者の怒りを避けるために、私は単にdllを別のマシンからコピーして、新しいサーバーに登録するのではなく、同じkb記事のリンクを使用して非常に人気のある「microsoftactivexcontrol pad」をダウンロードしてください。これは、私にとって非常に切望されているfm20.dllをインストールします。 (もちろん、mbs kbの記事には、ms office cdからfm20.dllファイルをコピーするだけであると書かれています。ルールを理解するのはmbsですか?) そして、それでエラーはなくなり、ユーザーフォームを挿入してフォームファイルをvbaプロジェクトにインポートすることができました。 注-windowsserver 2008 x64で作業している場合、32ビットファイルはc:\ windows\syswow64ディレクトリにインストールされます。