treedown’s Report

システム管理者に巻き起こる様々な事象を読者の貴方へ報告するブログです。会社でも家庭でも"システム"に携わるすべての方の共感を目指しています。

※https化しました。その影響でしばらくリンク切れなどがあるかもしれませんが徐々に修正していきます。 リンク切れなどのお気づきの点がございましたらコメントなどでご指摘いただけますと助かります。

Accessアプリケーションがエラーで正常起動しない。

アップデートでエラーになる、もはや名物と化しているWindowsとOfficeのアップデート不具合。
今回久々にAccessで発生した内容をご報告です。

内容は、確認した順に記載されているため、失敗の連続が続きます。ご注意ください。(成功した対処は「対処3:OS(Accessファイル設定)」以降を参照します。)

Accessアプリ(内製)が起動しないんです。

今日、Windowsにサインインしたら、「こんにちは」なんて挨拶されて…、それでAccessアプリを実行したら、こんなエラーで起動しないんですよ。

なんて話が舞い込んで対処の依頼が。

これはまたなかなかに難しそうです。さっそく画面を確認。
エラーは…、

f:id:treedown:20201203032956p:plain
「データベースに含まれている VBA プロジェクトを読み取れないため、データベースを開くことができません。VBAプロジェクトを削除する必要があります。VBAプロジェクトを削除すると、モジュール、フォーム、およびレポートからすべてのコードが削除されます。データベースを開いてVBAプロジェクトを削除する前に、バックアップコピーを作成することをおすすめします。」

データやVBAプロジェクトが削除されるような表記があるエラーメッセージです。慎重にキャンセルを押下して画面を切り抜けます。(何度か表示されます。)

切り抜けたところで、空っぽのトップページが表示されました。

ん?これ、見たことある。

blog.treedown.net

ここのエラーと同じじゃないかと。またOfficeの内部バージョンで問題が発生した?

調査する

まずは、前回同様に対象のAccess2016バージョン情報を確認してみました。

f:id:treedown:20201203033118p:plain
現在のバージョンは2010(Office2010と同じように見えるからややこしいけど、Office2016の内部バージョン2010(2020年10月バージョンという意味の数字)だと思います。ビルドは13328.20356です。

いちおうWindows10の更新プログラムの履歴も確認しておきます。

f:id:treedown:20201203033201p:plain

特にOfficeのアップデートが適用された履歴は残っていませんでした。

以前の<OfficeのUpdateでAccessアプリが動作しなくなる。 - treedown’s Report>の時と同じようにOfficeのバージョンを操作してみますか。

対処1:最新にしてみる。

まずは最新にしてみるのを試してみることにしました。

f:id:treedown:20201203033236p:plain
今すぐ更新、で最新にしてみます。
しばらく待って、適用が完了、Access自体は再起動されます。

f:id:treedown:20201203033252p:plain
バージョン情報は、

f:id:treedown:20201203033305p:plain
最新になりました。
そこで、起動を確認するもやっぱダメでした。

対処2:前のバージョンにしてみる。

と、いうことは、前のバージョンでダウングレードということになりそうです。
以前やった方法を再び実行。

OfficeのUpdateでAccessアプリが動作しなくなる。 - treedown’s Report

このときはOfficeバージョン1708で問題が起きていました。今回も同じ問題のような気もしますが。
ん?しまった、コマンドで指定するバージョンは

f:id:treedown:20201203033336p:plain
この画面の数字(画面上の例では16.0.13425.20270)を指定しないといけないんだった。※ちなみにこれは2011にした後に確認したバージョン画面です。
こっちはバージョン2010の方。

f:id:treedown:20201203033425p:plain
たぶん、バージョン2009にしなきゃいけないんだけど、どうしたらバージョン番号が分るもんだろう。
調べて見たところ、最近のOfficeでは、バージョン16.0固定でビルド番号が続く数字で表現されているそうです。つまり、
16.0.13425.20270はビルド13425.20270のOffice2016ということになります。

となると、16.0.13425.20270が今なので、
戻すべきバージョンは、

2020 年の最新のチャネル リリースのリリース ノート - Office release notes | Microsoft Docs
ここを参照して、、、

バージョン 2010: 10 月 27 日
バージョン 2010 (ビルド 13328.20292)

という記載を見つけました。一つ前だとこの辺になるのかな?

そうなるとコマンドは、

%programfiles%\common files\Microsoft Shared\Clicktorun\officec2rclient.exe /update user updatetoversion=16.0.13328.20292

ということになります。。さっそく実行。

f:id:treedown:20201203033456p:plain
画面には、こう出るので、

f:id:treedown:20201203033516p:plain

しばらく待って、f:id:treedown:20201203033541p:plain完了。
改善しないなぁ…。もう1バージョン下げる。
バージョン 2009 : 10 月 21 日
バージョン 2009 (ビルド 13231.20418)
なら
%programfiles%\common files\Microsoft Shared\Clicktorun\officec2rclient.exe /update user updatetoversion=16.0.13231.20418
と実行、さらにもう1段階
%programfiles%\common files\Microsoft Shared\Clicktorun\officec2rclient.exe /update user updatetoversion=16.0.13127.20408
と、言う具合に

f:id:treedown:20201203033651p:plain
ここまで下げました。
と、このようにバージョンを遡っていくものの、動作の改善は無し。

Windows10…?

手詰まりだなぁ…、と思った時、ふと思い出したのが、
「Windows 10、バージョン 2004 の機能更新プログラム」

f:id:treedown:20201203033715p:plain
そうだ、そうですよ。だって「サインインしたら、「こんにちは」なんて挨拶されて…」ってユーザも言っていたじゃないですか。てことは、Windows10の大型アップデート適用後の不具合ということじゃないですか?それじゃあOfficeのバージョンコントロールなんて動作が改善しないわけですわ。

もしかして、Windows10の2004で不具合起きているんじゃないか?という仮説のもと、調べて見ると、

social.msdn.microsoft.com

これだ…。OSの不具合ということを断定し、いったんOfficeのバージョンは最新に戻すようにします。

f:id:treedown:20201203033824p:plain
この状況で、OS側の対処を実施していきます。

対処3:OS(Accessファイル設定)

早速対処を。

前述の「Windows 10 バージョン 2004 (20H1) / 20H2 上で 半角カナのフォームを含んだ Access ファイルでエラーが発生する」にある、互換モードで起動する回避策を実施していきます。

Accessの実行ファイルMSACCESS.EXEのプロパティ画面を開くべく、「C:\Program Files (x86)\Microsoft Office\root\Office16」を開きます。

f:id:treedown:20201203033956p:plain
起動ファイルが見つかりました。
このファイルのプロパティを開いて互換性タブ画面を開いて、

f:id:treedown:20201203034011p:plain
互換モードでWindows 8にする、という対処方法が必要らしい。(他にもレジストリ操作で切り抜ける方法なんかも記載がありますが、一番安全そうで手が早そうなのはこれ)

f:id:treedown:20201203034032p:plain
念のため、すべてのユーザーの互換性の画面で、互換モードでこのプログラムを実行する、の互換性をWindows 8指定にします。

これで既に破損したAccessアプリケーションファイルを正常に動作するAccessアプリケーションファイルに差し替えて起動してみると、無事エラーなく起動することができるようになりました。

…。良かったぁ、普通に起動した。

おまけ:Access Runtimeの場合

対象の環境にはAccess Runtime 2013も含まれているため、Access Runtimeの場合の対処方法も必要になったため記載しておきます。
Access Runtimeは互換性設定の時プログラムのテストができないだけで、MSIインストーラ版のAccessを対処するのと手順はほとんど同じになります。

まずはエクスプローラからAccess Runtimeを起動しているMSACCESS.EXEを探し出して、右クリックから「互換性のトラブルシューティング」をクリックします。

f:id:treedown:20201203034052p:plain
次の画面で「推奨設定を使用する」をクリックします。

f:id:treedown:20201203034105p:plain
そうすると、画面が遷移してプログラムの互換性をテストします画面に遷移。
ここで「Windows互換モード:Windows 8」と表示されていることを確認します。

f:id:treedown:20201203034120p:plain
画面上の「プログラムのテスト」をクリックしても確認は出来ません。Runtimeなので。
「次へ」をクリックして画面を進めます。すると

f:id:treedown:20201203034143p:plain
次の画面で「はい、このプログラムのこの設定を保存します」を選択(クリック)します。
これで、

f:id:treedown:20201203034156p:plain
無事に完了。
これで製品版のAccessと同じように互換性の設定ができます。実際起動してみると、正常起動が確認出来ました。

※元に戻す場合には、レジストリ(※)配下のMSACCESSへの設定を削除することになります。
※レジストリキーは<HKCU\Software\Microsoft\Windows NT\CurrentVersion\AppCompactFlags\Layers>

あとがき(がてらの抜粋)

前述のURLの文書「Windows 10 バージョン 2004 (20H1) / 20H2 上で 半角カナのフォームを含んだ Access ファイルでエラーが発生する」には
--------------------------------------------------------------
一度エラーが発生した Access ファイルは不整合の内容を保持しているため、上記対応方法を実施後もエラーが発生する可能性がございます。その場合、バックアップファイルから戻すといった修正が必要になります。

今後の方針や追加の回避方法等が分かり次第本資料を更新します。
--------------------------------------------------------------
と記載が末尾にあり、加えて途中に、
--------------------------------------------------------------
既にリリース済のバージョン 2004 および 20H2 において既存のバージョンのまま問題を回避することは機能仕様上出来ず、2021年以降の Windows 10 OS にて本問題を修正したバージョンがリリースされます。
これらのことから、バージョン 2004 および 20H2 においては、利用者様にて問題が発生しないように対応をしていただく必要があります。
--------------------------------------------------------------
と記載があります。
このため、2021年以降のWindows10大型アップデートで解消する可能性はありそうです。

Windows10のバージョン2004の不具合って…、結局解消を見ないまま翌年を迎えるってことなんですかね。

とりあえず、このエラーに悩まされている場合には、「Windows 10 バージョン 2004 (20H1) / 20H2 上で 半角カナのフォームを含んだ Access ファイルでエラーが発生する」←ここをこまめに(更新がないか)閲覧する以外に今は手がないようです。