本家の master ブランチを私の作業環境 (Windows 8.1 64bit) で scons して python source\nvda.pyw で実行し、さらに Excel 2013 を起動して Ctrl-A すると、ご報告いただいたログとほぼ同じ、下記のエラーが出ました。
本家 2013.3rc2 の launcher 環境と Excel 2013 の組み合わせでは同じエラーを再現できていないので、もしかするとビルド環境が原因かも知れません。
ERROR - scriptHandler.executeScript (23:48:37): error executing script: <bound method ExcelWorksheet.script_changeSelection of <NVDAObjects.window.excel.ExcelWorksheet object at 0x05197F50>> with gesture u'\u30b3\u30f3\u30c8\u30ed\u30fc\u30eb+a' Traceback (most recent call last): File "scriptHandler.py", line 174, in executeScript script(gesture) File "NVDAObjects\window\excel.py", line 104, in script_changeSelection self.fireFocusOnSelection() File "NVDAObjects\window\excel.py", line 61, in fireFocusOnSelection elif selection.Count>1: File "comtypesMonkeyPatches.py", line 32, in new__getattr__ return old__getattr__(self,name) File "C:\Python27\lib\site-packages\comtypes\client\lazybind.py", line 149, in __getattr__ return self._comobj._invoke(descr.memid, descr.invkind, 0) File "C:\Python27\lib\site-packages\comtypes\automation.py", line 664, in _invoke dp, var, None, argerr) COMError: (-2147352567, '\x97\xe1\x8aO\x82\xaa\x94\xad\x90\xb6\x82\xb5\x82\xdc\x82\xb5\x82\xbd\x81B', (None, None, None, 0, None))
Windows 8.1 英語環境で Excel 2013 (日本語版)を起動して Ctrl-A したときの 本家 master 版のログを転記します。
ERROR - scriptHandler.executeScript (00:35:40): error executing script: <bound method ExcelWorksheet.script_changeSelection of <NVDAObjects.window.excel.ExcelWorksheet object at 0x12E14C10>> with gesture u'ctrl+a' Traceback (most recent call last): File "scriptHandler.py", line 174, in executeScript script(gesture) File "NVDAObjects\window\excel.py", line 104, in script_changeSelection self.fireFocusOnSelection() File "NVDAObjects\window\excel.py", line 61, in fireFocusOnSelection elif selection.Count>1: File "comtypesMonkeyPatches.py", line 32, in new__getattr__ return old__getattr__(self,name) File "C:\Python27\lib\site-packages\comtypes\client\lazybind.py", line 149, in __getattr__ return self._comobj._invoke(descr.memid, descr.invkind, 0) File "C:\Python27\lib\site-packages\comtypes\automation.py", line 664, in _invoke dp, var, None, argerr) COMError: (-2147352567, 'Exception occurred.', (None, None, None, 0, None))
Windows 7 32bit で新しい開発環境を作り直して jpbranch をビルドしてみたのですが、やはり Excel 2010 で本件のエラーが発生しました。
どうやらビルド環境が Windows 8.1 になったことは原因ではないようです。
Windows 8.1 / IE11 のリリース時期である2013年10月ごろに起きた別の何かが原因と思われます。
この問題が Windows XP で起きているかどうか、もしご存じでしたら教えてください。
もしかすると Windows 7 以降に対する最近の Windows Update の影響で NVDA が電子署名されていないときに Excel 2010/2013 とのプロセス通信が失敗するのかもしれない、 と思い始めました。
もう一度本家版で確認しなおすと、本家版 2013.3rc2 でもこのエラーが起きています。 日本語版 2013.2jp でも起きています。
リリースビルドではこのようなエラーが起きてもログに残るだけで音が出ないので、エラーに気づきませんでした。
Windows XP SP3 と Excel 2003 の組み合わせではこのエラーはまだ確認していません。
日本語チームとしてはきちんとバグレポートを書いて、修正は本家に依頼したほうがよいかも知れません。
以下は Windows 7 SP1 32bit + SAPI5 日本語音声 + NVDA 2013.3rc2 (本家リリース候補2)の launcher 環境(インストール環境ではない) + Excel 2010 で確認したログです。
INFO - __main__ (15:32:52): Starting NVDA INFO - core.main (15:32:52): Config dir: C:\Users\nishimotz\AppData\Roaming\nvda INFO - core.main (15:32:53): NVDA version 2013.3rc2 INFO - core.main (15:32:53): Using Windows version sys.getwindowsversion(major=6, minor=1, build=7601, platform=2, service_pack='Service Pack 1') INFO - core.main (15:32:53): Using Python version 2.7.5 (default, May 15 2013, 22:43:36) [MSC v.1500 32 bit (Intel)] INFO - core.main (15:32:53): Using comtypes version 0.6.2 INFO - synthDriverHandler.setSynth (15:32:53): Loaded synthDriver sapi5 INFO - core.main (15:32:53): Using wx version 2.8.12.1 (msw-unicode) INFO - braille.initialize (15:32:53): Using liblouis version 2.5.3 INFO - braille.BrailleHandler.setDisplayByName (15:32:53): Loaded braille display driver noBraille, current display has 0 cells. INFO - brailleInput.initialize (15:32:53): Braille input initialized INFO - core.main (15:32:54): NVDA initialized INFO - config.ConfigManager.save (15:32:58): Base configuration saved ERROR - eventHandler.executeEvent (15:32:59): error executing event: gainFocus on <NVDAObjects.Dynamic_IAccessibleExcel7WindowWindowNVDAObject object at 0x043BA350> with extra args of {} Traceback (most recent call last): File "eventHandler.pyo", line 136, in executeEvent File "eventHandler.pyo", line 84, in __init__ File "eventHandler.pyo", line 91, in next File "NVDAObjects\window\excel.pyo", line 74, in event_gainFocus File "NVDAObjects\window\excel.pyo", line 61, in fireFocusOnSelection File "comtypesMonkeyPatches.pyo", line 32, in new__getattr__ File "comtypes\client\lazybind.pyo", line 149, in __getattr__ File "comtypes\automation.pyo", line 664, in _invoke COMError: (-2147352567, '\x97\xe1\x8aO\x82\xaa\x94\xad\x90\xb6\x82\xb5\x82\xdc\x82\xb5\x82\xbd\x81B', (None, None, None, 0, None)) ERROR - eventHandler.executeEvent (15:33:04): error executing event: gainFocus on <NVDAObjects.Dynamic_IAccessibleExcel7WindowWindowNVDAObject object at 0x04500AF0> with extra args of {} Traceback (most recent call last): File "eventHandler.pyo", line 136, in executeEvent File "eventHandler.pyo", line 84, in __init__ File "eventHandler.pyo", line 91, in next File "NVDAObjects\window\excel.pyo", line 74, in event_gainFocus File "NVDAObjects\window\excel.pyo", line 61, in fireFocusOnSelection File "comtypesMonkeyPatches.pyo", line 32, in new__getattr__ File "comtypes\client\lazybind.pyo", line 149, in __getattr__ File "comtypes\automation.pyo", line 664, in _invoke COMError: (-2147352567, '\x97\xe1\x8aO\x82\xaa\x94\xad\x90\xb6\x82\xb5\x82\xdc\x82\xb5\x82\xbd\x81B', (None, None, None, 0, None)) ERROR - eventHandler.executeEvent (15:34:51): error executing event: gainFocus on <NVDAObjects.Dynamic_IAccessibleExcel7WindowWindowNVDAObject object at 0x04500C70> with extra args of {} Traceback (most recent call last): File "eventHandler.pyo", line 136, in executeEvent File "eventHandler.pyo", line 84, in __init__ File "eventHandler.pyo", line 91, in next File "NVDAObjects\window\excel.pyo", line 74, in event_gainFocus File "NVDAObjects\window\excel.pyo", line 61, in fireFocusOnSelection File "comtypesMonkeyPatches.pyo", line 32, in new__getattr__ File "comtypes\client\lazybind.pyo", line 149, in __getattr__ File "comtypes\automation.pyo", line 664, in _invoke COMError: (-2147352567, '\x97\xe1\x8aO\x82\xaa\x94\xad\x90\xb6\x82\xb5\x82\xdc\x82\xb5\x82\xbd\x81B', (None, None, None, 0, None))
本家版 2013.3 launcher 環境を Windows 8.1 + Excel 2013 で確認したところ、この問題は起こらないようです。
また 2013.3jp リリースブランチをソースから実行して Excel で A1からA5の5個のセルにデータを入力して Ctrl+A を押すなどしてみました。
エラー音が出ることはありますが、特に使用上の不具合はなさそうです。
このことから、本家の最近の Excel サポートの修正で解決した現象と、リリースビルドすれば解決する問題であると思われます。
最終的には日本語リリース候補版をビルドしてから判断したいと思います。
2013.3jp リリース候補1および本家 2013.3 リリース版、2013.2jp などいくつかのバージョンを比較調査しています。
Excel 2007 以降では Ctrl+A で内部的なエラーが出てセル範囲が読み上げられない現象は頻繁に起きており、エラー音が鳴らないものの COM Error はログで確認できます。
Alt キーを2回押す(フォーカスをメニューバーに移動させてドキュメントに戻す)操作で正常に戻ることもあるようです。
また、空白のセルで Ctrl+A を押す場合と、何らかのデータがあるセルで Ctrl+A を押す場合の挙動も違うようです。
いずれにせよ、日本語版でのみ起きている不具合ではないため、本家の実装に起因する現象と思われます。
本件はいったんマイルストーン設定を解除させていただき、本家の Excel 関連の改良を見守りたいと思います。ご了承ください。
NVDA日本語テスト版 jpbeta131112 (本家 2013.3 の日本語版に向けたブランチ)にて、以下のご報告をいただいています。
ご報告いただいたエラーログの一部:
COMError 関連の過去の記録:
西本の環境 (Windows 7 32bit + Microsoft Office 2010) では再現しなかったので、再現方法について詳細な情報が必要と思われます。