Accessでクエリは破損していますと出てしまう対策について_3

2019/11/18

Office365はアップデートを削除できないと思っていたので、パート1パート2の対応方法をご紹介していましたが、コメントで貴重な情報をいただきました。マイクロソフトで公開されている以前のバージョンへのリビルド方法です。

Qiitaで簡単なリビルド方法が紹介されていたので、そちらを紹介します。方法としては、以下の文字列を管理者モードで開いたコマンドプロンプトで実行するだけです。

“C:\Program files\Common Files\microsoft shared\ClickToRun\officec2rclient.exe" /update user updatetoversion=16.0.12130.20272

これより下の情報でも問題なくリビルドできると思いますが、簡単なので上の方法を紹介しなおします。https://qiita.com/mindwood/items/de3d3e1251044a7f0029

管理者モードにする必要はありますが、バッチファイルで上記の文字列を実行させられるので、社内メールなどで配る場合はQiitaの情報をどうぞ。


ここから下は元々紹介していた情報です。

本家のサイトでは文字での説明だけでしたので、実際に試して紹介できたらと思います。

※残念ながら、私が実行してみたところ、更新に失敗してしまいました。サーバが混雑しているせいなのか、どこがわるかったのかいまいちわからず。自己責任で試してくださいね。

まずは症状を再現してみます

パート2でフォームを作って簡単なアプリを作りましたので、エラー発生することを確認してみます。

やはりエラーになります。UPDATEでWHEREで指定された項目を更新しようとするだけで"クエリは破損しています" となってしまいます。クエリは破壊!?と読み間違って青ざめました。

まずは現在のOffice365のバージョンを確認します。「ファイル」-「アカウント」で以下のように調べることができます。

問題が出ている最新バージョンは1902(ビルド11328.20468)でした。ビルドは頻繁に変わるので皆さんのPCとは異なっているかもしれません。

問題のバージョンと以前のバージョン番号を確認する

マイクロソフトの下記のリンクから、この問題が発生する前のバージョンが何かを確認します。

Office 365 ProPlus の更新履歴 (日付別の一覧)

あちこちのサイトでこの不具合が報告されているちょうどそのタイミングである2019年11月12日に3つのチャンネルで更新が公開されています。私の場合は一番右側の半期チャンネルのバージョン1902の適用で不具合が発生したものとみられます。

以下のリンクから、Officeデベロップメントツールの実行ファイルをダウンロードします。サイトは英語ですが問題ありません。

Office Deployment Tool (英語)

すぐにダウンロードできました。ちなみにファイルサイズは2.88MBでした。

ファイルを実行するとお決まりの同意文章が出てくるのでチェックを入れて次へ進みます。

解凍先(展開先)を求められるので、適当に指定します。デスクトップとかでも大丈夫でが、複数のファイルが解凍されるので、新しいフォルダを作ってその中に展開したほうが無難でしょう。

展開すると以下の4つのファイルが現れました。Setup.exeを使って、指定のバージョン番号のOffice365に書き戻すことができるようです。そのバージョン指定は拡張子が.xmlファイルで行いますが、解凍されたものはそのサンプルです。

Officeは32bit版か64bit版か?Windowsのbit数とは違うので要注意

先ほど解凍されたXMLファイルのファイル名を見ると64bitとx86表記されている32bitとどちらかを使えばよいのですが、ここで要注意。WindowsのBit数バージョン違いとOfficeのバージョンは必ず一致しているとは限りません。

まずWindows10のバージョン情報を見てみましょう。[スタート]-[設定]-[システム]-[バージョン情報]から確認します。

私のThinkPadは64bitです。もしここで32bitとかx86と書かれていれば、もんだいなくXMLもx86のほうを使ってください。

問題は64bitの場合です。64bitのWindowsでは32bitのOfficeも動きます。実はマクロなどでは両者に若干互換性の違いがあって、あえて32bitのOfficeを選んでインストールしている場合は多いのです。

最初に見えていた[Accessのバージョン情報]のところから確認しましょう。プロダクトIDなどと一緒にビット数も表示されていました。私の場合は32bitでした。

XMLファイルに前バージョンの数字を指定して書き換える

先ほど解凍したフォルダの上で右クリック。[新規作成]-[テキストドキュメント]を選択します。「新しいドキュメント.txt」というのができますのでダブルクリック。メモ帳などテキストエディタで開きます。

中身は空っぽですから、以下の文字列をそのままコピーします。

<Configuration>
<Updates Enabled="TRUE" TargetVersion="16.0.xxxxx.yyyyy" />
</Configuration>

コピーできたら、xxxxx.yyyyyのところを、戻したいバージョン番号に書き換えます。

私の場合は問題が出ていなかった前のバージョンである10月30日のものにしたいので、リストから バージョン 1910 (ビルド 12130.20272) を確認。以下のように変更しました。

<Configuration>
<Updates Enabled="TRUE" TargetVersion="16.0.12130.20272" />
</Configuration>

書き換えられたら保存してメモ帳を閉じます。閉じたらファイル名を config.xml に変更します。.txtから.xmlに拡張子を変更するので下記のような警告が出てきますが、出るのが正解です。

出ない場合は、拡張子を表示させていないからなので、エクスプローラーの[表示]-[ファイル名拡張子]にチェックを入れてから名前を変更しなおしましょう。

管理者モードのコマンドプロンプトを開く

いよいよ下準備ができたので適用していきます。AccessやOfficeソフトを実行していたら、閉じておきましょう。

ダウンロードしてきていたSetup.exeファイルはコマンドプロンプトを管理者モードで開き、先ほど作ったXMLファイルを読み込ませるような形で実行します。できるだけ入力しなくてもよいような方法で紹介します。

まず、画面左下の検索窓に「cmd」と3文字入力します。すると「コマンドプロンプト」が検索されてくるので、そのアイコンの上で右クリック。「管理者として実行」をクリックします。

先ほど解凍したフォルダ名の上で右クリック。[アドレスをテキストとしてコピー]をクリックします。

次に管理者モードで動いている(左上に管理者と表示されています)コマンドプロンプトの中に「cd 」と入力。半角スペースのあと、先ほどコピーしたディレクトリの場所を示す文字列をコピーして、エンターキーを押します。次の行にカーソルが移り、>の前に場所を示しているはずです。これで作業するフォルダへコマンドプロンプトで開いている場所を移動することができました。

いよいよ実行です。Excelやアクセスが閉じていることを確認して、下記の文字列を入力し、意を決してエンターキーをおしてください。(コピーでよいです。)

setup.exe /configure config.xml

ほんの2・3秒、オフィスのオレンジ色のポップアップが出て消えました。コマンドプロンプトも実行完了して次の行でカーソルが点滅しているので、操作は終わったようです。

バージョンがもどっているか確認する

では、問題が起こっていたOffice365のAccessを実行してバージョンを確認してみます。おっと、ライセンス認証が取り消されたとメッセージが出てきました。あわてず騒がず、サインインします。

この段階ではまだバージョンはかわっていないので、 “製品情報” セクションで、[更新オプション]、[今すぐ更新] を順にクリックします。

で・・・・

解決するはずだったのですが、サーバが混んでいるせいなのか、今回は更新に失敗してしまいました。この方法で解決したとの情報をいただいているので、正解であるはずですが、ご利用は計画的に。自己責任でお試しください。

情報をいただきありがとうございます。

Office365で直前のバージョンに戻す方法は僕もさがしたのですが見つかっていませんでした。このAccessのトラブルの記事その1を書いたのですが、そちらへのコメントで今回の情報をいただきました。

teffsの山崎様 情報ありがとうございました。

実際にこれで解決できているということですので、サーバの問題ではないかと思っています。成功したらまたこの記事で報告します。