Repository: nvaccess/nvda

Issue:
No single keystroke to find out the current Excel worksheet
There is no single command which tells you which worksheet you are on in Excel without performing an action.

Object navigation can be used: NVDA+numpad 8 / NVDA+shift+up arrow jumps immediately to the sheet and tells you, however for those not overly familiar with object navigation, pressing it again jumps to the parent of the worksheet (Excel itself) which could be confusing.

The elements list will also tell you, although it defaults to charts, so you need to press NVDA+f7, then alt+s.

Alternatively there are seveal commands which perform actions which can be used, control+page up then control+page down, as long as the worksheet isn't the first one.

Similarly alt+tab to another application and back.

Knowing which worksheet you are on is important, but is it worth adding a new keystroke to give extra context information?  Possibly such information could be useful in other programs, such as knowing which section and page you are on in Onenote.


Discussion:
@MichaelDCurran would the report location command be a good fit here?


On 12/1/2016 8:33 PM, Quentin Christensen wrote:
>
> There is no single command which tells you which worksheet you are on 
> in Excel without performing an action.
>
> Object navigation can be used: NVDA+numpad 8 / NVDA+shift+up arrow 
> jumps immediately to the sheet and tells you, however for those not 
> overly familiar with object navigation, pressing it again jumps to the 
> parent of the worksheet (Excel itself) which could be confusing.
>
> The elements list will also tell you, although it defaults to charts, 
> so you need to press NVDA+f7, then alt+s.
>
> Alternatively there are seveal commands which perform actions which 
> can be used, control+page up then control+page down, as long as the 
> worksheet isn't the first one.
>
> Similarly alt+tab to another application and back.
>
> Knowing which worksheet you are on is important, but is it worth 
> adding a new keystroke to give extra context information? Possibly 
> such information could be useful in other programs, such as knowing 
> which section and page you are on in Onenote.
>
> —
> 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/6613>, or mute the thread 
> <https://github.com/notifications/unsubscribe-auth/AFGivZ-hg88Ju9eP_swXUeQNXcNu0GXLks5rD5GZgaJpZM4LCKh2>.
>

-- 
------------------------------------------------------------------------


    Derek Riemer

  * Department of computer science, third year undergraduate student.
  * Proud user of the NVDA screen reader.
  * Open source enthusiast.
  * Member of Bridge Cu
  * Avid skiier.

Websites:
Honors portfolio <http://derekriemer.com>
Awesome little hand built weather app! 
<http://django.derekriemer.com/weather/>

email me at derek.riemer@colorado.edu <mailto:derek.riemer@colorado.edu>
Phone: (303) 906-2194


Yes, we can just override the locationText property, and have it contain 
sheet name and cell coordinates.



It sounds like this one might be an easy win. Setting as a priority 2.
Example output: "Sheet MyWorksheet, G11"

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
@@ -966,6 +966,9 @@ def _getFormatFieldAndOffsets(self,offset,formatConfig,calculateOffsets=True):
 				pass
 		return formatField,(self._startOffset,self._endOffset)
 
+	def _get_locationText(self):
+		return self.obj.getCellPosition()
+
 class ExcelCell(ExcelBase):
 
 	def doAction(self):
@@ -1106,6 +1109,11 @@ def _get_columnNumber(self):
 
 	colSpan=1
 
+	def getCellPosition(self):
+		rowAndColumn = self.cellCoordsText
+		sheet = self.excelWindowObject.ActiveSheet.name
+		return "Sheet {0}, {1}".format(sheet, rowAndColumn)
+
 	def _get_tableID(self):
 		address=self.excelCellObject.address(1,1,0,1)
 		ID="".join(address.split('!')[:-1])


Test patch: