#NEWLINE# def get_named_range( self , range_string ) : #NEWLINE# #INDENT# '\n        Returns a 2D array of cells, with optional row and column offsets.\n\n        :param range_string: `named range` name\n        :type range_string: string\n\n        :rtype: tuples of tuples of :class:`openpyxl.cell.Cell`\n        ' #NEWLINE# named_range = self . _parent . get_named_range ( range_string ) #NEWLINE# if ( named_range is None ) : #NEWLINE# #INDENT# msg = ( '%s is not a valid range name' % range_string ) #NEWLINE# raise NamedRangeException ( msg ) #NEWLINE# #UNINDENT# if ( not isinstance ( named_range , NamedRange ) ) : #NEWLINE# #INDENT# msg = ( '%s refers to a value, not a range' % range_string ) #NEWLINE# raise NamedRangeException ( msg ) #NEWLINE# #UNINDENT# result = [ ] #NEWLINE# for destination in named_range . destinations : #NEWLINE# #INDENT# ( worksheet , cells_range ) = destination #NEWLINE# if ( worksheet is not self ) : #NEWLINE# #INDENT# msg = ( 'Range %s is not defined on worksheet %s' % ( cells_range , self . title ) ) #NEWLINE# raise NamedRangeException ( msg ) #NEWLINE# #UNINDENT# for row in self . iter_rows ( cells_range ) : #NEWLINE# #INDENT# result . extend ( row ) #NEWLINE# #UNINDENT# #UNINDENT# return tuple ( result )