質問
2019年2月13日水曜日 4:25
お世話になります。
Excel 2016 の VBA で Format 関数を使っています。
昨日まで動作していましたが、今日、「今すぐ更新」を実行し、新しいもの(ビルド?)になりました。
すると、Format 関数で実行時エラーが発生するようになりました。
【現在の状態】
【VBA コード】最もシンプルと思われるコードでテストしました。
Private Sub cmd_Test_Click()
Range("B2").Value = Date
Range("B3").Value = Format(Date, "yyyy-mm-dd")
End Sub
エラーは Format(Date, "yyyy-mm-dd") の行で発生しています。
同様の現象が発生した方、対応なさった方がおられたら、お知恵をお貸しください。
以上、よろしくお願いいたします。
【追記 1】
書くのを忘れていたので、追記いたします。
Windows 10 Pro(バージョン 1809、ビルド 17763.253、 64-bit)です。
Excel 2016 を更新する前に、Windows Update(2019年2月、Patch Tuesday)を行っていました。
なお、Windows Update および Excel 2016 の更新を行う前に取得していたイメージを戻したところ、
前述の実行時エラーは出なくなりました。★ 1 ★
なので、考えられる原因は Windows Update または Excel 2016 の更新だと思われます。
**【追記 2】
** Excel に原因があるだろうと思ったので、★ 1 ★ の状態で、Windows Update を行いました。
すると、実行時エラーが出るようになりました。
なので、2月13日の Windows Update に原因があったものと思われます。
【追記 3】
WinBuzzer に記事が出ていました。
Microsoft Details Known Windows Issues Following Patch Tuesday
ひとことで言うと、2月の更新プログラムを適用すると、
日付をパースする時に元号名がトラブルの元になることがある、のようです。
Windows 10/Windows 7
Finally, Microsoft also describes an issue that is specific to Windows 7 and
Windows 10, except the original (version 1507) build:
Known Issue: After installing this update, the first character of the Japanese era name is not recognized as an abbreviation and may cause date parsing issues.
Workaround: Modify the registry with the two-character abbreviation for Japanese eras as follows:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\Calendars\Japanese\Eras]
- “1868 01 01″=”明治_明_Meiji_M”
- “1912 07 30″=”大正_大_Taisho_T”
- “1926 12 25″=”昭和_昭_Showa_S”
- “1989 01 08″=”平成_平_Heisei_H”
すべての返信 (2)
2019年2月14日木曜日 0:21
手元の環境
Excle 2016 / 32bit / Ver 1901, ビルド 11231.20130 クイック実行
では再現しませんでした。
「今すぐ更新」でバージョンを上げたところ
Excle 2016 / 32bit / Ver 1901, ビルド 11231.20174 クイック実行
に更新されました。しかし、Format 関数が失敗する事象は確認できず、引き続き問題無く使用できています。
参照設定が破損して「参照不可」になっていないかどうかも確認してみてください。
また、直近で導入した Windows Update が何をインストールしていたかも情報共有頂けると助かります。
なお当環境は Windows 10 Pro 1803 (ビルド 17134.590) , x64 です。
直近の更新履歴は、一昨日に KB4487017 と KB4487038 が導入されていた程度です。
手元の Win10 には 1809 が降ってきていないので試せませんが、
対応するのは KB4487044 と KB4487038 でしょうか。
上記パッチだと、和暦対応も含まれていそうですが、当方のエントリはこんな感じ。
あれ…。いつのまにか "昭和_昭_Show_S" が "昭和_㍼_Show_S" になってる…?
# "2019 05 01" (一文字元号「㋿」U;32FF)は流石に見当たらず。
【追記】
本件とは無関係ですが、いつの間にか Excel で
CDate("平成元年1月8日")
CDate("平元年1月8日")
CDate("㍻元年1月8日")
表記が許容されてるっぽい…?
(元号対応は、手元のビルド 11231.20174 では OK 、ビルド 11231.20130 では NG でしたが、調査対象 PC が物理 2 台だけだったので、因果関係は未確認です。)
2019年2月14日木曜日 3:36
魔界の仮面弁士 さん、
お忙しい折、お調べいただき、ありがとうございました。
再現する環境は次のとおりです。
Windows 10 Pro / バージョン 1809(昨年 10月に配信された時、アップグレードしたもの) / ビルド 17763.316 / 64-bit
Excel Pro. Plus 2016 / バージョン 1901 / ビルド 11231.20174 / 32-bit
(1) Excel 参照設定に破損はありません。
最初の質問に書いているのが、新規作成したブック内の VBA コードです。
(2) Windows Update で入ってきたもの(関係しそうなものをピックアップしました)
KB4487038
;KB4483452
KB4462174
KB4018313
下図2つは拙作ソフト(別もの)による Windows Update の履歴一覧です・・・
【誤】<S>なお、この現象は3台の物理マシンで再現しています(Windows, Excel のバージョン、ビルド、アーキテクチャは同じ)。
正常時(2月 Windows Update、Excel アップデート実施前)のイメージを使ってリストアして、その後で Windows Update、Excel アップデートを行ったところ、3台とも再現しました。</S>
**【正】**3台の物理マシン(Windows, Excel のバージョン、ビルド、アーキテクチャは同じ)のうち、1台のみで再現します。他の2台では再現しません。
仕事に影響するので、リストアしたら、当面は Windows Update を控えようと考えています。
また、そのうち Microsoft による対応が行われると思っていますので、気にしないことにしました。
ありがとうございました。
【2019-02-16 追記】
Excel 実行時エラーの原因が分かりました。
2019年2月の更新プログラム KB4487044 によるものでした。
これをアンインストールして解消しました。
ただし、その影響があるのは1台のみで、他のPCは KB4487044 が入っていても不具合なしです。
魔界の仮面弁士さんがお書きになっているように
不具合なしのPC(レジストリー)では、元号の省略形が「昭」ではなく「㍼」、「平」ではなく「㍻」などとなっていました。
不具合ありのPCでは、「明」「大」「昭」「平」でした。
この間の詳細を**ブログ**に書いています。ご興味のある方はご笑覧ください。
Ashidacchi -- https://ssl01.rocketnet.jp/hokusosha.com/default.html