it-swarm-ja.com

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コードを見つけるには、何をする必要がありますか?

3
Jeff Tolman

私も同様の問題を抱えていました。 2013に「アップグレード」されていない別のコンピューターとは別のfm20.dllファイルを使用しました。 fm20.dllの登録はうまくいき、私の問題はなくなりました。 fm20.dllファイルが壊れているようです。ユーザーフォームがあるVBAはすべて影響を受けているようです。私が受け取ったExcel2010エラーは、「このブックのVisual Basic for Applications(VBA)マクロが破損しており、削除されています。マクロの破損は現在のファイルに存在する可能性があります。マクロを回復するには、バックアップコピーを開きます。このファイルがある場合は、コードのみでVBAブックを開くという簡単なテストが機能し、ユーザーフォームにコードのないラベルが1つある単純なファイルが失敗したため、fm20.dllファイルが表示されました。問題のあるシステムにfm20.dllファイルを登録しようとすると、ファイルが不良であるという同じメッセージが表示されました。良いシステムから新しいfm20.dllをコピーし、登録はうまくいき、問題はなくなりました。

3
Pirate

Office2013はVBA7.1をインストールします。これにより、FM20.dllの更新バージョン(VC10再配布可能ファイルに依存します)、特にmsvcr100.dllが追加されます。 VBA 7.1がアンインストールされると(FM20.dllは削除されません)、付属のアプリケーションによってVC10redistが削除される可能性があります。その場合、FM20.dllは壊れています。それが壊れているということではありません-それはただ不完全です。 (Visual StudioツールのDepends.exeを使用してこれを追跡しました)

問題は、VBA 6.xを使用するアプリケーションを再インストールしても、この新しいバージョンのFM20.dllが上書きされないため、ファイルが壊れたままになることです。

このファイルをクリーンアップしないのはVBA7.1インストーラーのバグのようです。選択を回避する必要があります。 FM20.dllを削除して古いアプリを修復するか、VC10再配布可能ファイルをインストールします。

2
AdamRLeggett

このブログ投稿は、このエラーを修正するのに役立ちました。
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エラーでした。

enter image description here

これは、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ディレクトリにインストールされます。

1
KawaiKx