summaryrefslogtreecommitdiff
path: root/sc/source/core
diff options
context:
space:
mode:
Diffstat (limited to 'sc/source/core')
-rw-r--r--sc/source/core/data/dpshttab.cxx28
1 files changed, 27 insertions, 1 deletions
diff --git a/sc/source/core/data/dpshttab.cxx b/sc/source/core/data/dpshttab.cxx
index fd50d2dfca9d..54efc6b9e5ae 100644
--- a/sc/source/core/data/dpshttab.cxx
+++ b/sc/source/core/data/dpshttab.cxx
@@ -234,13 +234,39 @@ const ScRange& ScSheetSourceDesc::GetSourceRange() const
{
// Obtain the source range from the range name first.
maSourceRange = ScRange();
+
+ // Range names referring a sheet contain a .
+ // See comment of ScCellShell::ExecuteDataPilotDialog
+ // paragraph "Populate named ranges"
+ sal_Int32 nAfterSheetName = ScGlobal::FindUnquoted( maRangeName, '.');
+
+ // let's consider the range name is global to the doc by default
ScRangeName* pRangeName = mpDoc->GetRangeName();
+ OUString searchRangeName(maRangeName);
+
+ // the range name concerns a specificsheet
+ if (nAfterSheetName != -1)
+ {
+ OUString sheetName = maRangeName.copy(0, nAfterSheetName);
+ ScGlobal::EraseQuotes( sheetName, '\'', false);
+ searchRangeName = maRangeName.copy(nAfterSheetName+1);
+
+ SCTAB nTab = 0;
+ if (!mpDoc->GetTable(sheetName, nTab))
+ {
+ // the sheetname should exist
+ assert(false);
+ return maSourceRange;
+ }
+ pRangeName = mpDoc->GetRangeName(nTab);
+ }
+
do
{
if (!pRangeName)
break;
- OUString aUpper = ScGlobal::pCharClass->uppercase(maRangeName);
+ OUString aUpper = ScGlobal::pCharClass->uppercase(searchRangeName);
const ScRangeData* pData = pRangeName->findByUpperName(aUpper);
if (!pData)
break;