Repository: nvaccess/nvda

Issue:
Extremely slow navigating between cells in MS Excel 2016 when a cell contains a comment or dropdown
when using MS office 2016 as a direct enterprise install, or MS office 365, I notice a real slow down when using ms excel and using the arrow keys to navigate between cells. Sometimes it can take up to 2 seconds to move between cells. I have seen this issue on many different types of coputer. I have attached an excell file which you can see the problem in. with office 2010, this does not appear to be an issue. sometimes there is no speech at all when moving between cells, particularly if i have entered something into a cell and then hit enter to update it. I have noticed this is particularly present when inputting numbers, which you can do by using the price column in my excel sheet i've attached. The only way to fix this seems to alt tab out of the excel window and then back in again before it starts reading the cells, all be it very slowly. Incidentely I just have it reading cell coordinates, not boarders or other information beyond the text in the cells.
I have noticed this issue for about the last 8 months using the NVDA next builds, but just haven't gotten around to reporting it. My bad.
I use Excel daily for work now so this is getting to be a real issue for me. Any help you could offer would be most appreciated and I am happy to try things to help. many Thanks.
[collection.xlsx](https://github.com/nvaccess/nvda/files/1118055/collection.xlsx)



Discussion:
@MichaelDCurran

On Sun, Jul 2, 2017 at 2:02 PM, Ednunp <notifications@github.com> wrote:

> when using MS office 2016 as a direct enterprise install, or MS office
> 365, I notice a real slow down when using ms excel and using the arrow keys
> to navigate between cells. Sometimes it can take up to 2 seconds to move
> between cells. I have seen this issue on many different types of coputer. I
> have attached an excell file which you can see the problem in. with office
> 2010, this does not appear to be an issue. sometimes there is no speech at
> all when moving between cells, particularly if i have entered something
> into a cell and then hit enter to update it. I have noticed this is
> particularly present when inputting numbers, which you can do by using the
> price column in my excel sheet i've attached. The only way to fix this
> seems to alt tab out of the excel window and then back in again before it
> starts reading the cells, all be it very slowly. Incidentely I just have it
> reading cell coordinates, not boarders or other information beyond the text
> in the cells.
> I have noticed this issue for about the last 8 months using the NVDA next
> builds, but just haven't gotten around to reporting it. My bad.
> I use Excel daily for work now so this is getting to be a real issue for
> me. Any help you could offer would be most appreciated and I am happy to
> try things to help. many Thanks.
> collection.xlsx
> <https://github.com/nvaccess/nvda/files/1118055/collection.xlsx>
>
> —
> You are receiving this because you are subscribed to this thread.
> Reply to this email directly, view it on GitHub
> <https://github.com/nvaccess/nvda/issues/7348>, or mute the thread
> <https://github.com/notifications/unsubscribe-auth/AFGivZJ2H7YtuDUIAExahC3D99IPO_1Hks5sJ_dNgaJpZM4OLrUT>
> .
>



-- 

Derek Riemer: Improving the world one byte at a time!

   - University of Colorado Boulder Department of computer science, 4th
   year undergraduate student.
   - Accessibility enthusiast.
   - Proud user of the NVDA screen reader.
   - Open source enthusiast.
   - Skier.

Personal website <http://derekriemer.com>

I'm seeing roughly a 1-second lag.
Also interesting is https://github.com/nvaccess/nvda/issues/5750#issuecomment-293169775
I am noticing something here.

When I maximise the window, this is when excel goes incredibly slow and 
I am seeing a 3 or 4 second lag. If I restore the window, the lag 
decreases. However, I need the windddow maximised. If it is not 
maximised, when I press f2, to edit a cell, i just hear the word "payne" 
and i'm not able to use the cursor to read what's in the cell." any 
thoughts?


Thanks.


On 05/07/2017 13:22, Davy Kager wrote:
>
> I'm seeing roughly a 1-second lag.
> Also interesting is #5750 (comment) 
> <https://github.com/nvaccess/nvda/issues/5750#issuecomment-293169775>
>
> —
> You are receiving this because you authored the thread.
> Reply to this email directly, view it on GitHub 
> <https://github.com/nvaccess/nvda/issues/7348#issuecomment-313087035>, 
> or mute the thread 
> <https://github.com/notifications/unsubscribe-auth/AcdfxCAKsRYzwbF5ART0sOawzMzw7pO8ks5sK4ADgaJpZM4OLrUT>.
>


It looks like Excel becomes massively slow when maximized, if the worksheet also contains one or more comments. It seems that all calls to properties on an Excel range object become 3 to 4 times slower in this situation. 
A part from reporting this to Microsoft, all we can really try to do is limit the amount of object model calls we make, which is very tricky. 
@Ednunp: Can you confirm that the problem goes away if you remove the comment from the collection.xlsx workbook you attached?
The comment is on cell A21. The easiest way to do this is:
* Arrow down to a21.
* Open the NVDA Python console by pressing NVDA+control+z
* Paste the following  text (with out the quotes) into the console and press enter: "nav.excelCellObject.worksheet.comments.item(1).delete()"
* Close the python console with alt+f4.
* Arrowing around the sheet should be a lot faster.
@qchristensen: I wonder whether you can reproduce the slow down (or lack there of)  with Excel without running NVDA? E.g. is the active cell slower to change with the arrow keys? Also, does Excel choose to show any specific information (say a comments margin) when maximized as opposed to restored?
I can reproduce the slowdown when navigating a sheet which has a comment and the Excel window is maximised.

There does still seem to be some slowdown if the window is not maximised but not as much as when the window is maximised (say 1 second to start reading a cell rather than 3).

The slowdown is only on the sheet with the comment, but it seems to be the same anywhere on that sheet.

I tried with a couple of older versions of NVDA, and it seems to be something that was introduced in NVDA 2015.2.  Looking back at the what's new for that version, we added a couple of things for Excel: "In Microsoft Excel, NVDA now reports when a cell has overflowing or cropped content. (#3040)
In Microsoft Excel, you can now use the Elements List (NVDA+f7) to allow listing of charts, comments and formulas. (#1987)
Support for reading charts in Microsoft Excel. To use this, select the chart using the Elements List (NVDA+f7) and then use the arrow keys to move between the data points. (#1987) "

Visually, there isn't anything extra on screen (aside from more of the ribbon) when the screen is maximised than when it is smaller.  Excel doesn't display comments like Word does.  The corner of a cell with comments is coloured red (in the same way a cell with a different formula to surround cells has the top left coloured green.  If you hover the mouse over a cell with a comment, you get a pop up balloon with black text on yellow - very similar to the old style balloon notifications - with the comment in it (this happens whether NVDA is running or not).

The slowdown is twofold - when you press say down arrow, the border around the current cell moves down.  That is slower than usual but takes say 1 second for me.  Then there is the time between that and the contents of the newly focussed cell being read out, another two seconds.  If you delete the comment (Press alt+r then d to delete the comment for the current cell), the situation immediately improves.  There is no delay in the focus moving without NVDA running.

I went to try with Narrator, but I can't seem to get Narrator to behave at all in this new build of Windows (fast insider build 16237).
The main problem I foresee, is that lots of people using Excel, especially sighted people,  will put comments into the cells. Removing them may not be an option for many people

Sent from my iPhone

> On 11 Jul 2017, at 04:58, Quentin Christensen <notifications@github.com> wrote:
> 
> I can reproduce the slowdown when navigating a sheet which has a comment and the Excel window is maximised.
> 
> There does still seem to be some slowdown if the window is not maximised but not as much as when the window is maximised (say 1 second to start reading a cell rather than 3).
> 
> The slowdown is only on the sheet with the comment, but it seems to be the same anywhere on that sheet.
> 
> I tried with a couple of older versions of NVDA, and it seems to be something that was introduced in NVDA 2015.2. Looking back at the what's new for that version, we added a couple of things for Excel: "In Microsoft Excel, NVDA now reports when a cell has overflowing or cropped content. (#3040)
> In Microsoft Excel, you can now use the Elements List (NVDA+f7) to allow listing of charts, comments and formulas. (#1987)
> Support for reading charts in Microsoft Excel. To use this, select the chart using the Elements List (NVDA+f7) and then use the arrow keys to move between the data points. (#1987) "
> 
> Visually, there isn't anything extra on screen (aside from more of the ribbon) when the screen is maximised than when it is smaller. Excel doesn't display comments like Word does. The corner of a cell with comments is coloured red (in the same way a cell with a different formula to surround cells has the top left coloured green. If you hover the mouse over a cell with a comment, you get a pop up balloon with black text on yellow - very similar to the old style balloon notifications - with the comment in it (this happens whether NVDA is running or not).
> 
> The slowdown is twofold - when you press say down arrow, the border around the current cell moves down. That is slower than usual but takes say 1 second for me. Then there is the time between that and the contents of the newly focussed cell being read out, another two seconds. If you delete the comment (Press alt+r then d to delete the comment for the current cell), the situation immediately improves. There is no delay in the focus moving without NVDA running.
> 
> I went to try with Narrator, but I can't seem to get Narrator to behave at all in this new build of Windows (fast insider build 16237).
> 
> —
> You are receiving this because you were mentioned.
> Reply to this email directly, view it on GitHub, or mute the thread.
> 

Hi. I removed comment as instructed and it now works much much better. I wonder if There is a way of locating all cells  with comments in them?

Sent from my iPhone

> On 11 Jul 2017, at 04:58, Quentin Christensen <notifications@github.com> wrote:
> 
> I can reproduce the slowdown when navigating a sheet which has a comment and the Excel window is maximised.
> 
> There does still seem to be some slowdown if the window is not maximised but not as much as when the window is maximised (say 1 second to start reading a cell rather than 3).
> 
> The slowdown is only on the sheet with the comment, but it seems to be the same anywhere on that sheet.
> 
> I tried with a couple of older versions of NVDA, and it seems to be something that was introduced in NVDA 2015.2. Looking back at the what's new for that version, we added a couple of things for Excel: "In Microsoft Excel, NVDA now reports when a cell has overflowing or cropped content. (#3040)
> In Microsoft Excel, you can now use the Elements List (NVDA+f7) to allow listing of charts, comments and formulas. (#1987)
> Support for reading charts in Microsoft Excel. To use this, select the chart using the Elements List (NVDA+f7) and then use the arrow keys to move between the data points. (#1987) "
> 
> Visually, there isn't anything extra on screen (aside from more of the ribbon) when the screen is maximised than when it is smaller. Excel doesn't display comments like Word does. The corner of a cell with comments is coloured red (in the same way a cell with a different formula to surround cells has the top left coloured green. If you hover the mouse over a cell with a comment, you get a pop up balloon with black text on yellow - very similar to the old style balloon notifications - with the comment in it (this happens whether NVDA is running or not).
> 
> The slowdown is twofold - when you press say down arrow, the border around the current cell moves down. That is slower than usual but takes say 1 second for me. Then there is the time between that and the contents of the newly focussed cell being read out, another two seconds. If you delete the comment (Press alt+r then d to delete the comment for the current cell), the situation immediately improves. There is no delay in the focus moving without NVDA running.
> 
> I went to try with Narrator, but I can't seem to get Narrator to behave at all in this new build of Windows (fast insider build 16237).
> 
> —
> You are receiving this because you were mentioned.
> Reply to this email directly, view it on GitHub, or mute the thread.
> 

To find all comments, press NVDA+f7 to bring up the Elements list and 
then choose the Comments radio button.


Has this issue been documented for other Office applications?  I've wondered for years why NVDA goes incredibly slow when attempting to type/edit comments in MS Word 2016 (possibly 2013 as well).  Sounds like it may be the same issue?  There is a 2-second delay for each arrow keypress.  I think that many folks who use Word are forced to do so because we work collaboratively in some way, and that generally means comments.  For instance, I am a college professor and require my students to use Word so I can comment in their papers, even though I've tried everything to find an alternative.  So, blind college students will need comments as well.  I can plug a new issue in, since I can't find mention of it, but wanted to check here first.  Can object calls really not be reduced in Office apps for NVDA?  Note that Voiceover in Office Mac apps has the same problem: the more objects, the slower it goes.  Jaws is far less sesseptible, somehow.  Are these likely all the same type of issue?
Labeling this as a regression, since according to Quentins testing, this behaviour seems to have started in NVDA 2015.2. Giving a priority 2 to investigate and understand the cause of this.
Disabling screen updating while making all the object model calls (I.e. application.screenUpdating=False) drastically improves performance. It seems that when comments or dropdown arrows are on a sheet, Excel redraws the screen for every object model call unless screen updating is disabled. This is most definitely a bug with MS Excel, but I am not having luck  getting this address by Microsoft so far. We can sort of work around this by disabling screen updating during Excel cell focus events.
But currently this is causing some issues with keyboard input where if a key is sent while screen updating is disabled, Excel does not correctly update some properties for the selection. 
It is also worth noting that this bug does not affect UIA, so eventually switching to UIA (at least for Excel 2016) would get around this also. It is curious though that UIA is not affected meaning that the screen redrawing is happening at quite a high level to COM.
For anyone experiencing the major slowdown in Excel spreadsheets containing comments or dropdowns, please test the following try build and report back:
https://ci.appveyor.com/api/buildjobs/12py6i000i9ea4vx/artifacts/output%2Fnvda_snapshot_try-i7348-14872%2Cbdbaad79.exe
Hi all, So I have been reading your comments, and I just had this issue with in the past week at my job. I am using office 365  and I am getting a more than 1 second delay when going between cells. I am not sure why this issue is happening, but it happened in the last official build of NBDA to. I am using the latest build of NVDA,. And the issue is seeming to get worse and worse. Like they said in earlier comments, the only way I found to get rid of it for a short time is to alt tab out of the spreadsheet and back in again.
@tayarndt [This week's In Process](https://www.nvaccess.org/post/in-process-26th-april-2018/) has a suggestion that might work.
Hi. now seeing a new issue with latest NVDA Next build and office 365. when
I hit f2 to edit a cell, it just says unknown, unknown  and no amountt of
moving the cursor does anything. Forgive me guys but this is extremely
frustrating. It seems that the behavior in Excel isn't constant  and it's
really affecting my ability to perform day to day tasks. I'm not clear if
it's Microsoft making changes their end, or NVDA. If it's NVDA, I could run
a stable copy and not update it. If it's Microsoft, can we ask them kindly
not to do this? as slow response times and the inability to edit cells
often prevents me from doing my job. Many people at work put comments into
Excel and I can't very well ask them to stop doing that. Forgive my
frustration, it just seems that we've had excel issues for over a year now
and they're not getting any better. Is there anything at all we can do to
keep them fairly constant?

Ed.

On 21 February 2018 at 05:43, Michael Curran <notifications@github.com>
wrote:

> For anyone experiencing the major slowdown in Excel spreadsheets
> containing comments or dropdowns, please test the following try build and
> report back:
> https://ci.appveyor.com/api/buildjobs/12py6i000i9ea4vx/
> artifacts/output%2Fnvda_snapshot_try-i7348-14872%2Cbdbaad79.exe
>
> —
> You are receiving this because you were mentioned.
> Reply to this email directly, view it on GitHub
> <https://github.com/nvaccess/nvda/issues/7348#issuecomment-367220123>, or mute
> the thread
> <https://github.com/notifications/unsubscribe-auth/AcdfxCdqmAtLFkuEjllGq854hzyYYHe2ks5tW60BgaJpZM4OLrUT>
> .
>

Ed, the F2 unknown issue is separate from the slow navigating.  It is something Microsoft have changed (if you go back and run an older version of NVDA, the problem still happens).  I did publish a workaround in In-Process which is to disable the "Allow editing in cells" option in Excel's advanced options: https://www.nvaccess.org/category/in-process/

HI guys, in latest NVDA next build navigating in excel is once again
extremely slow. When I type into a cell then try to move around, I get no
response what so ever from NVDA. I have to alt tab back out and into the
application again. Can this be looked into please? I'm reluctant to raise
more bugs but will do whatever works best for you guys. It seems in 365 the
code base for excel is constantly shifting and so is very difficult to use
in a constant state.

Thanks.

Ed.

On 21 February 2018 at 05:43, Michael Curran <notifications@github.com>
wrote:

> For anyone experiencing the major slowdown in Excel spreadsheets
> containing comments or dropdowns, please test the following try build and
> report back:
> https://ci.appveyor.com/api/buildjobs/12py6i000i9ea4vx/
> artifacts/output%2Fnvda_snapshot_try-i7348-14872%2Cbdbaad79.exe
>
> —
> You are receiving this because you were mentioned.
> Reply to this email directly, view it on GitHub
> <https://github.com/nvaccess/nvda/issues/7348#issuecomment-367220123>, or mute
> the thread
> <https://github.com/notifications/unsubscribe-auth/AcdfxCdqmAtLFkuEjllGq854hzyYYHe2ks5tW60BgaJpZM4OLrUT>
> .
>

Although the fix for Excel fixed this particular issue where comments or 
dropdowns slow down Excel, it caused a lot of other issues in general, 
and therefore had to be backed out of next.
I am going to have to re-think how to solve this.
Most likely the only way is to go the whole way and switch entirely to 
UI automation for Excel, and stop using the Excel object model.
That is a lot of work, but seems necessary now.


[**@michaelDCurran**](https://github.com/michaelDCurran) commented on [30 mei 2018 23:36 CEST](https://github.com/nvaccess/nvda/issues/7348#issuecomment-393327746 "2018-05-30T21:36:50Z - Replied by Github Reply Comments"):
> Most likely the only way is to go the whole way and switch entirely to 
> UI automation for Excel, and stop using the Excel object model.
> That is a lot of work, but seems necessary now.

What would be the priority of such a rewrite?
Apologies, I replied via email and thought my comment had been included, so am replying here. Personally for me, the priority is extremely high, because I need to use Excel on a daily basis. It seems that there are a couple of different issues happening now which may all be linked. The first I can see is that there is lag when moving between cells in 2016. This is noticeable when the cells have comments or dropdowns, or when there are many rows, for example over 100. The other issue I'm noticing, is that when you enter information in a cell and press enter to update it, nvda simply stops speaking for about a minute, at which point you can navigate around the cells again. If you need me to raise this as a sepperate issue I can do this. However, I think at present, excel 2016 is actually unusable for the most part with NVDA because of this, unless very very small sheets with the most basic data are being used. So priority would be very high I would imagine for Office support. I am happy to assist in any way I can with testing etc.
The original plan was to focus on switching to using UI Automation. However, after speaking with Microsoft, UI Automation support is still not complete, thus I am reopening investigation on how we can work around this with our current code.
If it helps, I've done some more investigation and it does appear that the thing that really really slows down Excel is special cells, i.e. dropdown Cells. Most times you can get people to simply not use them and enter values manually, although I have noticed that when you enter text in any cell, you have to alt tab out of Excel and back in again, wiggle the cursor around to get it reading smoothly again. feel free to send anything you want testing my way. To be honest I think Excel is the only thing causing such a major issue at the moment in Office. PS I have asked my company if they can switch me to 2010 but sadly MS exchange needs Outlook 2016 so no go.
@michaelDCurran is it possible to use UIA partially, perhaps similar to how Narrator and Jaws work? Narrator seems to not lag at all in the same sheets I've tried.
One thing that might help, is making several features optional by allowing them to be disabled in the document formatting settings. I"m thinking about cropped/overflowing announcements, dropdown announcements, comments (is already there), etc.
Fair point, though I would also think that dropdowns and comments are essential if you are a serious Excel user.
Agree with @dkager, being able to access those without massive lag is really important.
also fair point!

viewing big word documents without a lag is necessary for serious 
microsoft word user, especially if he works in an organization or studies..


W dniu 20.07.2018 o 11:04, Davy Kager pisze:
>
> Fair point, though I would also think that dropdowns and comments are 
> essential if you are a serious Excel user.
>
> —
> You are receiving this because you are subscribed to this thread.
> Reply to this email directly, view it on GitHub 
> <https://github.com/nvaccess/nvda/issues/7348#issuecomment-406537553>, 
> or mute the thread 
> <https://github.com/notifications/unsubscribe-auth/AKohk-p9cNjKRQznTSgkNhSv2Mjyu55wks5uIZ0agaJpZM4OLrUT>.
>


Ultimately we do need to find a method of navigating large documents in Office that contain lots of comments and formatting, especially for people that use it in their jobs, as companys like mine think nothing of putting everything into Excel and filling it with dropdowns, comments, formula and lots of forms into Word. It's just a shame that each version of Office seems to make things slower and slower. If Word or Excel had the speed of Notepad, I'd be a very very happy man :)
well, if NV Access along with us as a community can do nothing, the only 
option will be switching to office 2003

or 2010. that also worked well but as I say above, the issue is MS exchange has been upgraded and a lot of orgs now need Outlook 2016.
Please test the following try build: https://ci.appveyor.com/api/buildjobs/61fcgsixufesu9fe/artifacts/output%2Fnvda_snapshot_try-i7348-15623%2C235c9242.exe
Let me know if:
1. Spreadsheets with comments and or dropdowns are faster
2. All other spreadsheets are not majorly slower.
Note that I would currently advise against testing this on Windows Insider builds for RS5 at the moment as another major UI Automation regression exists making Excel even slower again.
Hi Michael, thanks for the build. please find below my observations:

This was tested against Office 365 Excel build 16.0.10228.20134 32 bit

1. All worksheets now have a lag of about 1.5 seconds when navigating between cells.
2. passing over Dropdown cells does not appear to make the lag slower.
3. It is not possible now to read the contents of the dropdown cell when the cell is clicked.I.e. if a cell has a yes and a no, one cannot audibly navigate to those options within the dropdown cell.
4. When changing a dropdown or adding more information to any other cells, Excel does not lock up like it used to and NVDA carries on reading, all be it with the lag.
5. When inserting a comment, Excel becomes unresponsive, NVDA stops reading and it is not possible to navigate around. Excel will lock up for minutes at a time in a large sheet and as yet I have found no foolproof method of releasing it so one can navigate again. I am not even sure a comment was correctly inserted, since when I hit right click m for insert comment, typed text and pressed enter, the whole program became unresponsive.

Hope this helps.


clear? has there been any thoughts on this since that last test build or anything else I should be testing? Thanks, Ed.
I am currently in discussions with the Excel team at Microsoft to get 
something done about this.
I will note anything of importance here if it comes up.
For now, (at least for sheets that contain comments, but not dropdowns), 
On the Ribbon, try going to Review -> show / hide comment and activating it.
Does this at all make a difference with NVDA 2018.2.1 or current alpha / 
beta builds?


It seems that recent versions of Excel 2016 has a totally new comments implementation.
This new implementation in Excel does not seem to cause lag when navigating sheets.
It looks as though all that is needed to upgrade the comments is to:
* Press NVDA's pass key through command (NVDA+f2)
* Press shift+f2 to turn on Excel's own comment editing mode (note this is not accessible)
* Press escape twice to exit comment editing mode.

Does this remove the lag? I am not sure in what specific build of Excel 2016 this was introduced. My build number is: 16.0.10325.20082

Note this would only solve the comments problem, not the dropdowns problem.

I am still working with Microsoft to get the original problem fixed though, as the way NvDA currently sets comments with its own comment edit dialog, still causes sheets to have the lag. 

No I have not found this issue before

Sent from my iPhone

> On Aug 16, 2018, at 7:49 PM, comanna <notifications@github.com> wrote:
> 
> Hi all,
> 
> 
> 
> I am really grateful to all our developers for the wonderful achievement of NVDA!
> 
> 
> 
> I went to the Help menu to read the User Guide in version 2018.2.without success! 
> 
> 1.	I opened the help menu
> 2.	It pointed to the User Guide so I pressed enter
> 3.	The guide failed to appear, 
> 4.	there were no error ot other messages and I dropped back to the open Outlook file that I was reading prior to looking for the User Guide. 
> 
> 
> 
> 
> 
> Has anyone else found this?
> 
> 
> 
> 
> 
> All the best,
> 
> 
> 
> Cearbhall
> 
> 
> 
> m +353 (0)833323487 Ph: _353 (0)1-2864623 e: cearbhall.omeadhra@blbc.ie
> 
> 
> 
> 
> 
> From: Michael Curran <notifications@github.com> 
> Sent: Tuesday, August 7, 2018 3:05 PM
> To: nvaccess/nvda <nvda@noreply.github.com>
> Cc: Subscribed <subscribed@noreply.github.com>
> Subject: Re: [nvaccess/nvda] Extremely slow navigating between cells in MS Excel 2016 when a cell contains a comment or dropdown (#7348)
> 
> 
> 
> It seems that recent versions of Excel 2016 has a totally new comments implementation.
> This new implementation in Excel does not seem to cause lag when navigating sheets.
> It looks as though all that is needed to upgrade the comments is to:
> 
> *	Press NVDA's pass key through command (NVDA+f2)
> *	Press shift+f2 to turn on Excel's own comment editing mode (note this is not accessible)
> *	Press escape twice to exit comment editing mode.
> 
> Does this remove the lag? I am not sure in what specific build of Excel 2016 this was introduced. My build number is: 16.0.10325.20082
> 
> Note this would only solve the comments problem, not the dropdowns problem.
> 
> I am still working with Microsoft to get the original problem fixed though, as the way NvDA currently sets comments with its own comment edit dialog, still causes sheets to have the lag.
> 
> —
> You are receiving this because you are subscribed to this thread.
> Reply to this email directly, view it on GitHub <https://github.com/nvaccess/nvda/issues/7348#issuecomment-411067933> , or mute the thread <https://github.com/notifications/unsubscribe-auth/AVWs8iKH8AYs1JKU4E0apKzch7uOpxY7ks5uOZ57gaJpZM4OLrUT> . <https://github.com/notifications/beacon/AVWs8tU52A9spJpCoqKQADG55dOyP2Fpks5uOZ57gaJpZM4OLrUT.gif> 
> 
> —
> You are receiving this because you were mentioned.
> Reply to this email directly, view it on GitHub, or mute the thread.

Sorry but this issue has nothing to do with Excel unless I'm missing something. Can we please stay on topic? A new issue should be opened for the above.
Hi. I have just tried NVDA alpha 15933 on Excel 2010 and noticed it's a lot slwoer than it used to be. Has some fiddling to make it work in 2016 possibly affected  the 2010 version/ I should say that in this instance i'm not able to deploy lots of fixes on to the 2010 machine as it is a secure laptop and I have to get permission to do this which takes a week at a time. Just thought I'd check though as I do not remember it being this slow before. It takes between 2 and 3 seconds to navigate between cells in a completely blank workbook with no information, no cells filled, no comments or dropdowns.
HI guys, very concerned that this has not been updated in a while. Excel is still fairly unusuable with large sheets, we still have to use the formula bar when editing cells with f2 which does not always work if the formula is large, we still can't add comments or use dropdowns. What is Microsoft in conjunction with NVDA doing about this please? as it's just not practical to use Excel in a work environment with office 2016. Do we expect the next version of Office to be better, has anyone tried? Does MS have a way that NVDA can read excel without being so slow?
Thanks.

Ed.
Just looking at this issue again, yes the issue is still present in Excel 365 as at 15 October 2018.  Deleting the comment (Move to the cell with the comment, A21 in the originally linked workbook, press the context menu and press M for delete comment) does speed things up.

With NVDA not running there isn't a slowdown, and also turning off everything in NVDA's document formatting doesn't help (I wondered if turning off reporting of comments might help, but it turns out even turning everything in that dialog off doesn't make a difference).  Also changing synthesizers (at least between Windows OneCore and eSpeak NG doesn't help.

Not related to this issue, but one thing which we did find in another issue, which affects Office 365 at least - NVDA can't read the contents of a cell when editing cells with F2, if the Excel setting "Allow editing directly in cells" is enabled.  Disable that in Excel's advanced settings if you are having problems editing (Not directly related to this issue, but may help with some frustration).


Hi Quentin, thanks for the confirmation that these issues are still present. You are indeed correct that removing comments, and also dropdowns, as these are another slowdown does improve things. Excel is still very slow in large sheets of data say over 100 rows and 7 columns wide, but it does help. Sadly however many people especially in my organisation use these,a as I suspect to many others.
Turning off editing in cells doesn't help very much, yes you can use the formula bar but as I said in my post on the 14th, sometimes if the formula is too big, you can't read this and it locks up.

However, forgive me, your post doesn't mention how any of this is to be resolved. It seems to me we have a lot of issues building up in Excel that make it very hard or frustrating to use especially in an office environment, with no clear resolution path. Given these issues were first raised months ago, I'm curious to know how Microsoft and NVDA plan to work together to firstly fix them and secondly, ensure that when MS make future changes they inform NVDA before it breaks again.

In a similar vain, we now have an issue in Outlook where NVDA cannot read the auto suggest names completion box when composing emails. This has also been open for several months and seems to have been as a result of MS making changes in an update.
These issues make the programs difficult or very frustrating to use on a day to day basis which is a shame because NVDA is a fantastic screen reader with MS Office when it works properly. Is there a plan to engage with MS or have them engage more directly with NVDA to resolve any of this either in this version of Office or the upcoming versions?

Thanks.

Ed.
The same is true for Word as well, support has deteriorated to a point where it lags when editing documents that you'd encounter in a day to day office environment.
Not clear what is to be done here in that case. It seems that the relationship between NVDA and the Office devs is breaking down if this is happening or if we can't find a resolution. Surely there must be something we can do? I am going to ring the MS disability help desk today though I'm not sure how involved they can get people in these sort of generalised screen reader related matters.

Resolving patch:
diff --git a/source/NVDAObjects/window/excel.py b/source/NVDAObjects/window/excel.py
--- a/source/NVDAObjects/window/excel.py
+++ b/source/NVDAObjects/window/excel.py
@@ -4,6 +4,9 @@
 #This file is covered by the GNU General Public License.
 #See the file COPYING for more details.
 
+import abc
+from six import with_metaclass
+import ctypes
 from comtypes import COMError
 import comtypes.automation
 import wx
@@ -12,6 +15,7 @@
 import re
 import uuid
 import collections
+import NVDAHelper
 import oleacc
 import ui
 import speech
@@ -539,9 +543,9 @@ def _iterNodesByType(self,nodeType,direction="next",pos=None):
 		if nodeType=="chart":
 			return ChartExcelCollectionQuicknavIterator( nodeType , self.rootNVDAObject.excelWorksheetObject , direction , None ).iterate()
 		elif nodeType=="comment":
-			return CommentExcelCollectionQuicknavIterator( nodeType , self.rootNVDAObject.excelWorksheetObject , direction , None ).iterate()
+			return CommentExcelCellInfoQuicknavIterator( nodeType , self.rootNVDAObject, direction , None ).iterate()
 		elif nodeType=="formula":
-			return FormulaExcelCollectionQuicknavIterator( nodeType , self.rootNVDAObject.excelWorksheetObject , direction , None ).iterate()
+			return FormulaExcelCellInfoQuicknavIterator( nodeType , self.rootNVDAObject, direction , None ).iterate()
 		elif nodeType=="sheet":
 			return SheetsExcelCollectionQuicknavIterator( nodeType , self.rootNVDAObject.excelWorksheetObject , direction , None ).iterate()
 		elif nodeType=="formField":
@@ -631,7 +635,6 @@ def _getSelection(self):
 			isMerged=selection.mergeCells
 		except (COMError,NameError):
 			isMerged=False
-
 		try:
 			numCells=selection.count
 		except (COMError,NameError):
@@ -639,12 +642,10 @@ def _getSelection(self):
 
 		isChartActive = True if self.excelWindowObject.ActiveChart else False
 		obj=None
-		if isMerged:
-			obj=ExcelMergedCell(windowHandle=self.windowHandle,excelWindowObject=self.excelWindowObject,excelCellObject=selection.item(1))
-		elif numCells>1:
+		if not isMerged and numCells>1:
 			obj=ExcelSelection(windowHandle=self.windowHandle,excelWindowObject=self.excelWindowObject,excelRangeObject=selection)
-		elif numCells==1:
-			obj=ExcelCell(windowHandle=self.windowHandle,excelWindowObject=self.excelWindowObject,excelCellObject=selection)
+		elif numCells>=1:
+			obj=ExcelCell(windowHandle=self.windowHandle,excelWindowObject=self.excelWindowObject,excelCellObject=selection.item(1))
 		elif isChartActive:
 			selection = self.excelWindowObject.ActiveChart
 			import _msOfficeChart
@@ -822,12 +823,6 @@ def forgetHeaderCell(self,cell,isColumnHeader=False,isRowHeader=False):
 		return True
 
 	def fetchAssociatedHeaderCellText(self,cell,columnHeader=False):
-		# #4409: cell.currentRegion fails if the worksheet is protected.
-		try:
-			cellRegion=cell.excelCellObject.currentRegion
-		except COMError:
-			log.debugWarning("Possibly protected sheet")
-			return None
 		for info in self.headerCellTracker.iterPossibleHeaderCellInfosFor(cell.rowNumber,cell.columnNumber,columnHeader=columnHeader):
 			textList=[]
 			if columnHeader:
@@ -1017,8 +1012,146 @@ def _getFormatFieldAndOffsets(self,offset,formatConfig,calculateOffsets=True):
 	def _get_locationText(self):
 		return self.obj.getCellPosition()
 
+NVCELLINFOFLAG_ADDRESS=0x1
+NVCELLINFOFLAG_TEXT=0x2
+NVCELLINFOFLAG_INPUTMESSAGE=0x4
+NVCELLINFOFLAG_STATES=0x8
+NVCELLINFOFLAG_COORDS=0x10
+NVCELLINFOFLAG_OUTLINELEVEL=0x20
+NVCELLINFOFLAG_COMMENTS=0x40
+NVCELLINFOFLAG_FORMULA=0x80
+NVCELLINFOFLAG_ALL=0xffff
+
+class ExcelCellInfo(ctypes.Structure):
+		_fields_=[
+			('text',comtypes.BSTR),
+			('address',comtypes.BSTR),
+			('inputTitle',comtypes.BSTR),
+			('inputMessage',comtypes.BSTR),
+			('states',ctypes.c_longlong),
+			('rowNumber',ctypes.c_long),
+			('rowSpan',ctypes.c_long),
+			('columnNumber',ctypes.c_long),
+			('columnSpan',ctypes.c_long),
+			('outlineLevel',ctypes.c_long),
+			('comments',comtypes.BSTR),
+			('formula',comtypes.BSTR),
+		]
+
+class ExcelCellInfoQuickNavItem(browseMode.QuickNavItem):
+
+	def __init__( self , parentIterator, cellInfo):
+		self.excelCellInfo = cellInfo
+		self.parentIterator=parentIterator
+		super( ExcelCellInfoQuickNavItem ,self).__init__( parentIterator.itemType , parentIterator.document )
+
+	def activate(self):
+		pass
+
+	def isChild(self,parent):
+		return False
+
+	def report(self,readUnit=None):
+		pass
+
+	def __lt__(self,other):
+		return (self.excelCellInfo.rowNumber,self.excelCellInfo.columnNumber)<(other.excelCellInfo.rowNumber,other.excelCellInfo.columnNumber)
+
+	def moveTo(self):
+		cell=self.parentIterator.document.excelWorksheetObject.cells(self.excelCellInfo.rowNumber,self.excelCellInfo.columnNumber)
+		cell.Activate()
+		eventHandler.queueEvent("gainFocus",api.getDesktopObject().objectWithFocus())
+
+	@property
+	def isAfterSelection(self):
+		activeCell=self.parentIterator.selectedCellInfo
+		return (self.excelCellInfo.rowNumber,self.excelCellInfo.columnNumber)>(activeCell.rowNumber,activeCell.columnNumber)
+
+	@property
+	def label(self):
+		return "%s: %s"%(self.excelCellInfo.address.split('!')[-1],self.excelCellInfo.text)
+
+class CommentExcelCellInfoQuickNavItem(ExcelCellInfoQuickNavItem):
+
+	@property
+	def label(self):
+		return "%s: %s"%(self.excelCellInfo.address.split('!')[-1],self.excelCellInfo.comments)
+
+class FormulaExcelCellInfoQuickNavItem(ExcelCellInfoQuickNavItem):
+
+	@property
+	def label(self):
+		return "%s: %s"%(self.excelCellInfo.address.split('!')[-1],self.excelCellInfo.formula)
+
+class ExcelCellInfoQuicknavIterator(with_metaclass(abc.ABCMeta,object)):
+	cellInfoFlags=NVCELLINFOFLAG_ADDRESS|NVCELLINFOFLAG_COORDS
+
+	@abc.abstractproperty
+	def QuickNavItemClass(self):
+		""" The particular L{ExcelCellInfoQuicknavItem} subclass for objects that  should be emitted from the L{iterate} method."""
+		pass
+
+	def __init__(self, itemType , document , direction , includeCurrent):
+		"""
+		See L{QuickNavItemIterator} for itemType, document and direction definitions.
+		@ param includeCurrent: if true then any item at the initial position will be also emitted rather than just further ones. 
+		"""
+		self.document=document
+		self.itemType=itemType
+		self.direction=direction if direction else "next"
+		self.includeCurrent=includeCurrent
+		self.selectedCellInfo=self.document._getSelection().excelCellInfo
+
+	@abc.abstractmethod
+	def collectionFromWorksheet(self,worksheetObject):
+		""" An Excel range object covering all the cells that should be emitted by the L{iterate} method."""
+		pass
+
+	def iterate(self):
+		worksheet=self.document.excelWorksheetObject
+		try:
+			collectionObject=self.collectionFromWorksheet(worksheet)
+		except COMError:
+			return
+		if not collectionObject:
+			return
+		count=collectionObject.count
+		cellInfos=(ExcelCellInfo*count)()
+		numCellsFetched=ctypes.c_long()
+		NVDAHelper.localLib.nvdaInProcUtils_excel_getCellInfos(self.document.appModule.helperLocalBindingHandle,self.document.windowHandle,collectionObject._comobj,self.cellInfoFlags,count,cellInfos,ctypes.byref(numCellsFetched))
+		for index in xrange(numCellsFetched.value):
+			ci=cellInfos[index]
+			if not ci.address:
+				log.debugWarning("cellInfo at index %s has no address"%index)
+				break
+			yield self.QuickNavItemClass(self,ci)
+
+class CommentExcelCellInfoQuicknavIterator(ExcelCellInfoQuicknavIterator):
+	QuickNavItemClass=CommentExcelCellInfoQuickNavItem
+	cellInfoFlags=ExcelCellInfoQuicknavIterator.cellInfoFlags|NVCELLINFOFLAG_COMMENTS
+
+	def collectionFromWorksheet(self,worksheetObject):
+		return worksheetObject.usedRange.SpecialCells( xlCellTypeComments)
+
+class FormulaExcelCellInfoQuicknavIterator(ExcelCellInfoQuicknavIterator):
+	QuickNavItemClass=FormulaExcelCellInfoQuickNavItem
+	cellInfoFlags=ExcelCellInfoQuicknavIterator.cellInfoFlags|NVCELLINFOFLAG_FORMULA
+
+	def collectionFromWorksheet(self,worksheetObject):
+		return worksheetObject.usedRange.SpecialCells( xlCellTypeFormulas)
+
 class ExcelCell(ExcelBase):
 
+	def _get_excelCellInfo(self):
+		if not self.appModule.helperLocalBindingHandle:
+			return None
+		ci=ExcelCellInfo()
+		numCellsFetched=ctypes.c_long()
+		res=NVDAHelper.localLib.nvdaInProcUtils_excel_getCellInfos(self.appModule.helperLocalBindingHandle,self.windowHandle,self.excelCellObject._comobj,NVCELLINFOFLAG_ALL,1,ctypes.byref(ci),ctypes.byref(numCellsFetched))
+		if res!=0 or numCellsFetched.value==0:
+			return None
+		return ci
+
 	def doAction(self):
 		pass
 
@@ -1119,11 +1252,7 @@ def _get_excelRangeObject(self):
 		return self.excelCellObject
 
 	def _get_role(self):
-		try:
-			linkCount=self.excelCellObject.hyperlinks.count
-		except (COMError,NameError,AttributeError):
-			linkCount=None
-		if linkCount:
+		if controlTypes.STATE_LINKED in self.states:
 			return controlTypes.ROLE_LINK
 		return controlTypes.ROLE_TABLECELL
 
@@ -1132,30 +1261,51 @@ def _get_role(self):
 	def _isEqual(self,other):
 		if not super(ExcelCell,self)._isEqual(other):
 			return False
-		thisAddr=self.getCellAddress(self.excelCellObject,True)
+		# call range.address directly here as object equality checks may be done quite frequently and otherwise would not require all of cellInfo
+		addressArgs=(
+			False, # relative row 
+			False, # relative column
+			xlA1, # 'a1' format
+			True # include book / sheet name
+		)
 		try:
-			otherAddr=self.getCellAddress(other.excelCellObject,True)
+			thisAddr=self.excelCellObject.address(*addressArgs)
+			otherAddr=other.excelCellObject.address(*addressArgs)
 		except COMError:
 			#When cutting and pasting the old selection can become broken
 			return False
 		return thisAddr==otherAddr
 
 	def _get_cellCoordsText(self):
-		return self.getCellAddress(self.excelCellObject)
-
-	def _get__rowAndColumnNumber(self):
-		rc=self.excelCellObject.address(True,True,xlRC,False)
-		return [int(x) if x else 1 for x in re_absRC.match(rc).groups()]
+		if self.excelCellInfo:
+			rawAddress=self.excelCellInfo.address
+		else:
+			rawAddress=self.excelCellObject.address(False,False,1,False)
+		coords=rawAddress.split('!')[-1].split(':')
+		if len(coords)==2:
+			return "%s through %s"%(coords[0],coords[1])
+		else:
+			return coords[0]
 
 	def _get_rowNumber(self):
-		return self._rowAndColumnNumber[0]
+		if not self.excelCellInfo:
+			return None
+		return self.excelCellInfo.rowNumber
 
-	rowSpan=1
+	def _get_rowSpan(self):
+		if not self.excelCellInfo:
+			return None
+		return self.excelCellInfo.rowSpan
 
 	def _get_columnNumber(self):
-		return self._rowAndColumnNumber[1]
+		if not self.excelCellInfo:
+			return None
+		return self.excelCellInfo.columnNumber
 
-	colSpan=1
+	def _get_colSpan(self):
+		if not self.excelCellInfo:
+			return None
+		return self.excelCellInfo.columnSpan
 
 	def getCellPosition(self):
 		rowAndColumn = self.cellCoordsText
@@ -1164,56 +1314,25 @@ def getCellPosition(self):
 		return _(u"Sheet {0}, {1}").format(sheet, rowAndColumn)
 
 	def _get_tableID(self):
-		address=self.excelCellObject.address(1,1,0,1)
-		ID="".join(address.split('!')[:-1])
-		ID="%s %s"%(ID,self.windowHandle)
-		return ID
+		if not self.excelCellInfo:
+			return None
+		rawAddress=self.excelCellInfo.address
+		return u"!".join(rawAddress.split('!')[:-1])
 
 	def _get_name(self):
-		return self.excelCellObject.Text
-
-	def _getCurSummaryRowState(self):
-		try:
-			row=self.excelCellObject.rows[1]
-			if row.summary:
-				return controlTypes.STATE_EXPANDED if row.showDetail else controlTypes.STATE_COLLAPSED
-		except COMError:
-			pass
-
-	def _getCurSummaryColumnState(self):
-		try:
-			col=self.excelCellObject.columns[1]
-			if col.summary:
-				return controlTypes.STATE_EXPANDED if col.showDetail else controlTypes.STATE_COLLAPSED
-		except COMError:
-			pass
+		if not self.excelCellInfo:
+			return self.excelCellObject.text
+		return self.excelCellInfo.text
 
 	def _get_states(self):
 		states=super(ExcelCell,self).states
-		summaryCellState=self._getCurSummaryRowState() or self._getCurSummaryColumnState()
-		if summaryCellState:
-			states.add(summaryCellState)
-		if self.excelCellObject.HasFormula:
-			states.add(controlTypes.STATE_HASFORMULA)
-		try:
-			validationType=self.excelCellObject.validation.type
-		except (COMError,NameError,AttributeError):
-			validationType=None
-		if validationType==3:
-			states.add(controlTypes.STATE_HASPOPUP)
-		try:
-			comment=self.excelCellObject.comment
-		except (COMError,NameError,AttributeError):
-			comment=None
-		if comment:
-			states.add(controlTypes.STATE_HASCOMMENT)
-		if self._overlapInfo is not None:
-			if self._overlapInfo['obscuredFromRightBy'] > 0:
-				states.add(controlTypes.STATE_CROPPED)
-			if self._overlapInfo['obscuringRightBy'] > 0:
-				states.add(controlTypes.STATE_OVERFLOWING)
-		if self.excelWindowObject.ActiveSheet.ProtectContents and (not self.excelCellObject.Locked):
-			states.add(controlTypes.STATE_UNLOCKED)
+		cellInfo=self.excelCellInfo
+		if not cellInfo:
+			return states
+		stateBits=cellInfo.states
+		for k,v in vars(controlTypes).iteritems():
+			if k.startswith('STATE_') and stateBits&v:
+				states.add(v)
 		return states
 
 	def event_typedCharacter(self,ch):
@@ -1225,116 +1344,6 @@ def event_typedCharacter(self,ch):
 			return
 		super(ExcelCell,self).event_typedCharacter(ch)
 
-	def getCellTextWidth(self):
-		#handle to Device Context
-		hDC = ctypes.windll.user32.GetDC(self.windowHandle)
-		tempDC = ctypes.windll.gdi32.CreateCompatibleDC(hDC)
-		ctypes.windll.user32.ReleaseDC(self.windowHandle, hDC)
-		#Compatible Bitmap for current Device Context
-		hBMP = ctypes.windll.gdi32.CreateCompatibleBitmap(tempDC, 1, 1)
-		#handle to the bitmap object
-		hOldBMP = ctypes.windll.gdi32.SelectObject(tempDC, hBMP)
-		#Pass Device Context and LOGPIXELSX, the horizontal resolution in pixels per unit inch
-		dpi = ctypes.windll.gdi32.GetDeviceCaps(tempDC, LOGPIXELSX)
-		#Fetching Font Size and Weight information
-		iFontSize = self.excelCellObject.Font.Size
-		iFontSize = 11 if iFontSize is None else int(iFontSize)
-		#Font  Weight for Bold FOnt is 700 and for normal font it's 400
-		iFontWeight = 700 if self.excelCellObject.Font.Bold else 400
-		#Fetching Font Name and style information
-		sFontName = self.excelCellObject.Font.Name
-		sFontItalic = self.excelCellObject.Font.Italic
-		sFontUnderline = True if self.excelCellObject.Font.Underline else False
-		sFontStrikeThrough = self.excelCellObject.Font.Strikethrough
-		#If FontSize is <0: The font mapper transforms this value into device units
-		#and matches its absolute value against the character height of the available fonts.
-		iFontHeight = iFontSize * -1
-		#If Font Width is 0, the font mapper chooses a closest match value.
-		iFontWidth = 0
-		iEscapement = 0
-		iOrientation = 0
-		#Default CharSet based on System Locale is chosen
-		iCharSet = 0
-		#Default font mapper behavior
-		iOutputPrecision = 0
-		#Default clipping behavior
-		iClipPrecision = 0
-		#Default Quality
-		iOutputQuality = 0
-		#Default Pitch and default font family
-		iPitchAndFamily = 0
-		#Create a font object with the correct size, weight and style
-		hFont = ctypes.windll.gdi32.CreateFontW(iFontHeight, iFontWidth, iEscapement, iOrientation, iFontWeight, sFontItalic, sFontUnderline, sFontStrikeThrough, iCharSet, iOutputPrecision, iClipPrecision, iOutputQuality, iPitchAndFamily, sFontName)
-		#Load the font into the device context, storing the original font object
-		hOldFont = ctypes.windll.gdi32.SelectObject(tempDC, hFont)
-		sText = self.excelCellObject.Text
-		textLength = len(sText)
-		class structText(ctypes.Structure):
-			_fields_ = [("width", ctypes.c_int), ("height",ctypes.c_int)]
-		StructText = structText()
-		getTextExtentPoint = ctypes.windll.gdi32.GetTextExtentPoint32W
-		getTextExtentPoint.argtypes = [ctypes.c_void_p, ctypes.c_wchar_p, ctypes.c_int, ctypes.POINTER(structText)]
-		getTextExtentPoint.restype = ctypes.c_int
-		sText = unicode(sText)
-		#Get the text dimensions
-		ctypes.windll.gdi32.GetTextExtentPoint32W(tempDC, sText, textLength,ctypes.byref(StructText))
-		#Restore the old Font Object
-		ctypes.windll.gdi32.SelectObject(tempDC, hOldFont)
-		#Delete the font object we created
-		ctypes.windll.gdi32.DeleteObject(hFont)
-		#Restore the old Bitmap Object
-		ctypes.windll.gdi32.SelectObject(tempDC, hOldBMP)
-		#Delete the temporary BitMap Object
-		ctypes.windll.gdi32.DeleteObject(hBMP)
-		#Release & Delete the device context
-		ctypes.windll.gdi32.DeleteDC(tempDC)
-		#Retrieve the text width
-		textWidth = StructText.width
-		return textWidth
-
-	def _get__overlapInfo(self):
-		textWidth = self.getCellTextWidth()
-		if self.excelCellObject.WrapText or self.excelCellObject.ShrinkToFit:
-			return None
-		isMerged = self.excelWindowObject.Selection.MergeCells
-		try:
-			adjacentCell = self.excelCellObject.Offset(0,1)
-		except COMError:
-			# #5041: This cell is at the right edge.
-			# For our purposes, treat this as if there is an empty cell to the right.
-			isAdjacentCellEmpty = True
-		else:
-			isAdjacentCellEmpty = not adjacentCell.Text
-		info = {}
-		if isMerged:
-			columns=self.excelCellObject.mergeArea.columns
-			columnCount=columns.count
-			firstColumn=columns.item(1)
-			lastColumn=columns.item(columnCount)
-			firstColumnLeft=firstColumn.left
-			lastColumnLeft=lastColumn.left
-			lastColumnWidth=lastColumn.width
-			cellLeft=firstColumnLeft
-			cellRight=lastColumnLeft+lastColumnWidth
-		else:
-			cellLeft=self.excelCellObject.left
-			cellRight=cellLeft+self.excelCellObject.width
-		pointsToPixels=self.excelCellObject.Application.ActiveWindow.PointsToScreenPixelsX
-		cellLeft=pointsToPixels(cellLeft)
-		cellRight=pointsToPixels(cellRight)
-		cellWidth=(cellRight-cellLeft)
-		if textWidth <= cellWidth:
-			info = None
-		else:
-			if isAdjacentCellEmpty:
-				info['obscuringRightBy']= textWidth - cellWidth
-				info['obscuredFromRightBy'] = 0
-			else:
-				info['obscuredFromRightBy']= textWidth - cellWidth
-				info['obscuringRightBy'] = 0
-		self._overlapInfo = info
-		return self._overlapInfo
-
 	def _get_parent(self):
 		worksheet=self.excelCellObject.Worksheet
 		self.parent=ExcelWorksheet(windowHandle=self.windowHandle,excelWindowObject=self.excelWindowObject,excelWorksheetObject=worksheet)
@@ -1357,33 +1366,21 @@ def _get_previous(self):
 			return ExcelCell(windowHandle=self.windowHandle,excelWindowObject=self.excelWindowObject,excelCellObject=previous)
 
 	def _get_description(self):
-		try:
-			inputMessageTitle=self.excelCellObject.validation.inputTitle
-		except (COMError,NameError,AttributeError):
-			inputMessageTitle=None
-		try:
-			inputMessage=self.excelCellObject.validation.inputMessage
-		except (COMError,NameError,AttributeError):
-			inputMessage=None
-		if inputMessage and inputMessageTitle:
-			return _("Input Message is {title}: {message}").format( title = inputMessageTitle , message = inputMessage)
+		if not self.excelCellInfo:
+			return None
+		inputTitle=self.excelCellInfo.inputTitle
+		inputMessage=self.excelCellInfo.inputMessage
+		if inputMessage and inputTitle:
+			return _("Input Message is {title}: {message}").format( title = inputTitle , message = inputMessage)
 		elif inputMessage:
 			return _("Input Message is {message}").format( message = inputMessage)
 		else:
 			return None
 
 	def _get_positionInfo(self):
-		try:
-			level=int(self.excelCellObject.rows[1].outlineLevel)-1
-		except COMError:
-			level=None
-		if level==0:
-			try:
-				level=int(self.excelCellObject.columns[1].outlineLevel)-1
-			except COMError:
-				level=None
-		if level==0:
-			level=None
+		if not self.excelCellInfo:
+			return None
+		level=max(self.excelCellInfo.outlineLevel-1,0) or None
 		return {'level':level}
 
 	def script_reportComment(self,gesture):


Test patch: