
これはちょっとXY問題なので、最初から始めます。
残念ながら、私の会社の職場の MS Office の最新のアップデートにより、Excel アプリケーションが壊れてしまいました。Excel アプリケーションは VBA に大きく依存しており、複数のファイルに分散しています。そのうちのいくつかは .xlam ファイルで、単に便宜上分割されているため、ユーザーは一度にすべてのコードを読み込む必要はなく、アプリケーションのどのセクションを使用するかに応じてファイルを個別に読み込むことができます。
エラーの内容は次のとおりです:
「ファイル形式またはファイル拡張子が有効でないため、Excel はファイル Portal.xlsm を開くことができません。ファイルが破損していないこと、および拡張子がファイルの形式と一致していることを確認してください。」
ファイルに何も問題がないことは確かです。ファイルを自宅の自分宛に電子メールで送信できたので、破損はしていません。自宅の Excel を使用してファイルを開き、どの行でエラーが発生しているかを正確に診断できました。(重要ではない) 行を削除すると、ファイルは会社の環境で正常に開きました。
興味深いことに、問題となった行は次のとおりでした。
'Required functions to test the state of the shift key (for developer to pause Launcher)
Private Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer
この GetKeyState 関数が Excel ファイル全体を開けない原因となった理由は正確にはわかりません。そのため、何かアイデアをお持ちの方がいらっしゃいましたら、ぜひお聞かせください (この投稿を StackOverflow でも繰り返す必要があることは承知しています)
しかし、このプライマリ ファイルは動作するようになったものの、2 番目の問題が発生しました。XLAM ファイルを読み込むことができませんでした。さらに不思議なことに、自宅のコンピューターで開こうとすると、認識されませんでした。自宅には Excel 2019 (バージョン 2110) があり、職場には MS Office 365 用の Excel があります。
そこで今考えているのは、xlam ファイルを何らかの方法で開くことができれば、コードを取得してモジュールをプライマリ ファイルにコピー/貼り付けできるということです。以前と同じように、分割することにしました。唯一の問題は、不可解なセキュリティ更新以降、これらの xlam ファイルを開けないことです。
そこで質問なのですが、古いバージョンの Excel を使用できるのであれば、これらの xlam ファイルを開いて (純粋に VBA モジュールを表示するためだけに)、ここで説明されているようにコピーすることができます。
どなたか、古いバージョンの MS Excel にアクセスできる場所を教えていただけませんか? 再インストールの手間を避けたいので、できればポータブル版をお願いします。 よろしくお願いします。
注: 私は非常に大規模な政府部門で働いており、企業ネットワークに対する管理者権限がまったくありません。そこでレジストリ構成を変更する方法はありません。
答え1
Office 365 管理センターによる展開は、新世代の Web アドインのみを対象としているため、アドインを.xlam
展開することはできません。
ポータブル版の Office については知りませんが、古いバージョンの Office をダウンロードできる場所は知っています。作業環境を乱さないように、仮想マシン内にインストールすることもできます。
ウェブサイトからいくつかのOfficeバージョンをダウンロードできます WZT による TechBench:
イメージは Microsoft の Web サイトからダウンロードされます (公式にはこれらのバージョンはそこに存在しません)。この Web サイトにはシリアル番号は記載されていません (ハッカーのサイトではありません) が、試用期間は目的には十分です。