最新Office 365でマクロ/VBAの問題が発生――「Semi-Annual Channel(半期チャネル)」で助かったという話:山市良のうぃんどうず日記(107)(2/2 ページ)
2017年9月、Office 2016バージョンのOffice 365デスクトップアプリの「Monthly Channel」と「Semi-Annual Channel(Targeted)」に、バージョン1708の更新が提供されました。この更新により、Excelのマクロなど、VBAプロジェクトを含むファイルで問題が発生する可能性があるので注意しましょう。影響を受ける場合、結構面倒なことになります。
簡単なExcelマクロで問題を再現してみる
この問題の影響を受けるVBAプロジェクトを含む簡単なExcelファイルを作成してみました。上書き保存のコードを実行するボタンをシート上に配置しただけのものです。この問題の影響を受けるように、既定のモジュール名「Module1」を「私のモジュール」に変更します(画面3)。準備はこれだけです。
この問題の影響を受けないExcel 2016(バージョン1708より前のバージョン)では、このボタンは正しく機能します。バージョン1708のExcel 2016で開くと、セキュリティ警告の「コンテンツの有効化」をクリックしたときに、画面4のように「このブック内のVisual Basic for Applications(VBA)マクロは破損しており、削除されました。」と表示され、その後、「'ファイル名'の一部の内容に問題が見つかりました。可能な限り内容を回復しますか?」と表示され、「はい」をクリックすると画面5のように表示されます。
ここまでは、VBAプロジェクトのコードが削除された状態で、ファイルが修復され開きます。そのためボタンは機能せず、マクロの実行はエラーになります。Excelの場合、修復されたファイルはメモリ上にあるので、オリジナルのExcelファイル内のVBAプロジェクトはまだ残っています。ただし、修復されたファイルをオリジナルのファイルに上書き保存してしまうと、VBAプロジェクトのコードは失われてしまうことに注意しましょう(画面6)。
Accessの場合は、エラーメッセージで[OK]ボタンをクリックしてデータベースを開いてしまうと、AccessデータベースからVBAプロジェクトのコードが削除されてしまう可能性があります。筆者が簡単に作成したAccessデータベースでは、削除されてしまいました(画面7)。そうなると、ファイルのバックアップコピーがなければ、復元することはできないでしょう。いずれにせよ、この問題に遭遇したときに対応を間違えると、大事なコードが失われてしまうということです。
画面7 Accessデータベースの場合、この画面で[OK]ボタンをクリックすると、オリジナルのファイルからコードが削除されてしまう可能性があるので注意。[キャンセル]をクリックしてもアプリが閉じることはなく、メッセージがループするだけだったので、「タスクマネージャー」から終了する必要があった
筆者は、プログラムのコード(モジュール名、ユーザー定義関数名、変数名などを含め)に日本語を使う(実際に使えるかどうかは別として)なんてことは考えもしませんでした。エンドユーザーでも簡単なプログラム開発(マクロなど)ができるVBA環境となると、自分が後で分かりやすいように、あるいは同僚に伝えやすいように、日本語でモジュール名を整理するということは、どうやらよくあることのようです。影響しない人には全く関係ありませんが、コードに日本語を積極的に使ってきた企業があるとしたら、今回の問題は重大事かもしれません。
少なくとも企業は、Semi-Annual Channelで運用するべきでしょう。文字通り、一部のクライアントでSemi-Annual Channel(Targeted)で運用し、互換性問題が発生しないかどうかを継続的に確認していれば、大事に至らずに済みます。
最新情報:Office 365のリリース情報
「Office 365 client update channel releases」(Office TechCenter)によると、この問題の修正を含むバージョン1708(ビルド8431.2094)がMonthly Channel向けにリリースされている模様です。ただし、2017年10月4日8時30分(日本時間)現在、筆者の環境ではこの更新を検出できません。
最新情報:Officeサポートチームのブログ更新
日本のOfficeサポートチームのブログ(https://blogs.msdn.microsoft.com/office_client_development_support_blog/2017/08/23/ver1708-issue-japanesenamevbamodule/)が更新され、Monthly Channel(コンシューマー向け、およびOffice 365 ProPlusを除く企業向けの既定)向けにこの問題を修正した更新プログラムについての説明が追加されています。
2017年10月4日時点では、通常の方法では修正されたバージョンに更新されることはありません。更新するには、コマンドラインでの操作が必要です。Semi-Annual Channel(Targeted)向けには提供されていません。また、まだ広く一般に提供されていないということは、十分にテストされていないと考えるべきでしょう。企業の場合は、問題を回避したい場合にのみ、小規模にテストした上で更新することをお勧めします。
2017年10月5日時点で、Monthly Channelの自動または手動更新により、修正されたバージョン1708(ビルド 8431.2094)に更新可能です。この問題を回避するために、過去のバージョンにロールバックし、自動更新を「無効」にしていた場合は、再び「有効」に戻すことが可能です。Semi-Annual Channel(Targeted)向けの修正されたバージョンの提供については、日本のOfficeサポートチームのブログやOffice 365のリリース情報で最新情報を確認してください。
筆者紹介
山市 良(やまいち りょう)
岩手県花巻市在住。Microsoft MVP:Cloud and Datacenter Management(Oct 2008 - Sep 2016)。SIer、IT出版社、中堅企業のシステム管理者を経て、フリーのテクニカルライターに。Microsoft製品、テクノロジーを中心に、IT雑誌、Webサイトへの記事の寄稿、ドキュメント作成、事例取材などを手掛ける。個人ブログは『山市良のえぬなんとかわーるど』。近著は『Windows Server 2016テクノロジ入門−完全版』(日経BP社)。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- Windows 10への移行計画を早急に進めるべき理由
本連載では、これからWindows 10への移行を本格的に進めようとしている企業/IT管理者に向け、移行計画、展開、管理、企業向けの注目の機能を解説していきます。第1回目は、「Windows 10に移行すべき理由」を説明します。 - Windows 7/8.1/10のサポート期限早見表
【2019年6月更新版】Windows OSは、提供開始から10年間のサポート期間が設けられている。この期間を把握しておかないと、システムのリプレース計画などに支障が出かねない。Windows 10では特に複雑になっているので、ここでWindows OSのサポート期間をまとめておく。 - “Windows Vistaのサポート終了のお知らせ”のお知らせ
3年前のWindows XPサポート終了の大騒ぎに、懐かしさや時間の経過の速さを感じますが、いよいよWindows Vistaの番が迫ってきました。Windows Vistaは、2017年4月11日(米国時間)に全てのサポートが終了します。 - Windows 10、サポートが終了した古いバージョンのその後の“運命”
2017年5月9日(日本では10日)、2015年7月末にリリースされた「Windows 10の初期リリース(ビルド10240)」のサポートが終了しました。同一ビルドがベースのWindows 10 Enterprise 2015 LTSBのサポートは継続され、2025年10月14日(日本では15日)まで提供されます。サポート終了から3カ月以上が経過したWindows 10初期リリースの”いま”を追ってみました。