Ticket #32462

Excel 2010 の編集画面で ctrl + a するとエラーが出る

Open Date: 2013-11-18 04:09 Last Update: 2013-12-08 00:01

Reporter:
Owner:
(None)
Type:
Status:
Open
Component:
MileStone:
(None)
Priority:
5 - Medium
Severity:
5 - Medium
Resolution:
None
File:
None

Details

NVDA日本語テスト版 jpbeta131112 (本家 2013.3 の日本語版に向けたブランチ)にて、以下のご報告をいただいています。

  • Microsoft Excel 2010 のブック編集画面で ctrl + a するとコムエラーが起きています。
  • alt + tab して excel をアクティブウインドウを得た瞬間にもエラーが起きます。

ご報告いただいたエラーログの一部:

ERROR - eventHandler.executeEvent (12:31:11):
error executing event: gainFocus on <NVDAObjects.Dynamic_IAccessibleExcel7WindowWindowNVDAObject object at 0x02AD6990> 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 70, in event_gainFocus
  File "NVDAObjects\window\excel.pyo", line 57, 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))

COMError 関連の過去の記録:

  • チケット #30210 リリースビルドの作業手順に起因する不具合
  • チケット #30056 本家チケット 3064 の UIA と Office IME 2010 の不具合(解決済みとされている)
  • チケット #31261 Focus Highlight アドオンが一部のアプリで不具合(最新版で解決済み)

西本の環境 (Windows 7 32bit + Microsoft Office 2010) では再現しなかったので、再現方法について詳細な情報が必要と思われます。

Ticket History (3/9 Histories)

2013-11-18 04:09 Updated by: nishimoto
  • New Ticket "Excel 2010 の編集画面で ctrl + a するとエラーが出る" created
2013-11-19 17:04 Updated by: nishimoto
Comment

本家の 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))
2013-11-19 17:39 Updated by: nishimoto
Comment

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))
2013-11-20 17:20 Updated by: nishimoto
Comment

Windows 7 32bit で新しい開発環境を作り直して jpbranch をビルドしてみたのですが、やはり Excel 2010 で本件のエラーが発生しました。

どうやらビルド環境が Windows 8.1 になったことは原因ではないようです。

Windows 8.1 / IE11 のリリース時期である2013年10月ごろに起きた別の何かが原因と思われます。

2013-11-21 01:31 Updated by: nishimoto
Comment

この問題が Windows XP で起きているかどうか、もしご存じでしたら教えてください。

もしかすると Windows 7 以降に対する最近の Windows Update の影響で NVDA が電子署名されていないときに Excel 2010/2013 とのプロセス通信が失敗するのかもしれない、 と思い始めました。

2013-11-22 15:44 Updated by: nishimoto
Comment

もう一度本家版で確認しなおすと、本家版 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-12-05 14:37 Updated by: nishimoto
  • Resolution Update from None to Works For Me
Comment

本家版 2013.3 launcher 環境を Windows 8.1 + Excel 2013 で確認したところ、この問題は起こらないようです。

また 2013.3jp リリースブランチをソースから実行して Excel で A1からA5の5個のセルにデータを入力して Ctrl+A を押すなどしてみました。

エラー音が出ることはありますが、特に使用上の不具合はなさそうです。

このことから、本家の最近の Excel サポートの修正で解決した現象と、リリースビルドすれば解決する問題であると思われます。

最終的には日本語リリース候補版をビルドしてから判断したいと思います。

2013-12-08 00:01 Updated by: nishimoto
  • Resolution Update from Works For Me to Won't Fix
  • Component Update from (None) to 本家
Comment

2013.3jp リリース候補1および本家 2013.3 リリース版、2013.2jp などいくつかのバージョンを比較調査しています。

Excel 2007 以降では Ctrl+A で内部的なエラーが出てセル範囲が読み上げられない現象は頻繁に起きており、エラー音が鳴らないものの COM Error はログで確認できます。

Alt キーを2回押す(フォーカスをメニューバーに移動させてドキュメントに戻す)操作で正常に戻ることもあるようです。

また、空白のセルで Ctrl+A を押す場合と、何らかのデータがあるセルで Ctrl+A を押す場合の挙動も違うようです。

いずれにせよ、日本語版でのみ起きている不具合ではないため、本家の実装に起因する現象と思われます。

本件はいったんマイルストーン設定を解除させていただき、本家の Excel 関連の改良を見守りたいと思います。ご了承ください。

2013-12-08 00:01 Updated by: nishimoto
  • Milestone Update from 2013.3jp (closed) to (None)
  • Resolution Update from Won't Fix to None

Attachment File List

No attachments

Edit

Please login to add comment to this ticket » Login