1 diff --git sc/source/filter/excel/excform.cxx sc/source/filter/excel/excform.cxx
2 index b1e05d0..f30eb80 100644
3 --- sc/source/filter/excel/excform.cxx
4 +++ sc/source/filter/excel/excform.cxx
5 @@ -904,7 +904,8 @@ ConvErr ExcelToSc::Convert( const ScTokenArray*& pErgebnis, XclImpStream& aIn, s
8 // stream seeks to first byte after <nFormulaLen>
9 -ConvErr ExcelToSc::Convert( _ScRangeListTabs& rRangeList, XclImpStream& aIn, sal_Size nFormulaLen, const FORMULA_TYPE eFT )
10 +ConvErr ExcelToSc::Convert( _ScRangeListTabs& rRangeList, XclImpStream& aIn, sal_Size nFormulaLen,
11 + SCsTAB nTab, const FORMULA_TYPE eFT )
13 RootData& rR = GetOldRoot();
15 @@ -1072,7 +1073,7 @@ ConvErr ExcelToSc::Convert( _ScRangeListTabs& rRangeList, XclImpStream& aIn, sal
17 ExcRelToScRel( nUINT16, nByte, aSRD, bRangeName );
19 - rRangeList.Append( aSRD );
20 + rRangeList.Append( aSRD, nTab );
24 @@ -1099,7 +1100,7 @@ ConvErr ExcelToSc::Convert( _ScRangeListTabs& rRangeList, XclImpStream& aIn, sal
25 else if( IsComplRowRange( nRowFirst, nRowLast ) )
28 - rRangeList.Append( aCRD );
29 + rRangeList.Append( aCRD, nTab );
33 @@ -1136,7 +1137,7 @@ ConvErr ExcelToSc::Convert( _ScRangeListTabs& rRangeList, XclImpStream& aIn, sal
35 ExcRelToScRel( nUINT16, nByte, aSRD, bRNorSF );
37 - rRangeList.Append( aSRD );
38 + rRangeList.Append( aSRD, nTab );
42 @@ -1162,7 +1163,7 @@ ConvErr ExcelToSc::Convert( _ScRangeListTabs& rRangeList, XclImpStream& aIn, sal
43 else if( IsComplRowRange( nRowFirst, nRowLast ) )
46 - rRangeList.Append( aCRD );
47 + rRangeList.Append( aCRD, nTab );
51 @@ -1232,10 +1233,10 @@ ConvErr ExcelToSc::Convert( _ScRangeListTabs& rRangeList, XclImpStream& aIn, sal
52 b3D = ( static_cast<SCTAB>(nTabLast) != aEingPos.Tab() );
53 aCRD.Ref2.SetFlag3D( b3D );
54 aCRD.Ref2.SetTabRel( FALSE );
55 - rRangeList.Append( aCRD );
56 + rRangeList.Append( aCRD, nTab );
59 - rRangeList.Append( aSRD );
60 + rRangeList.Append( aSRD, nTab );
64 @@ -1290,7 +1291,7 @@ ConvErr ExcelToSc::Convert( _ScRangeListTabs& rRangeList, XclImpStream& aIn, sal
65 else if( IsComplRowRange( nRowFirst, nRowLast ) )
68 - rRangeList.Append( aCRD );
69 + rRangeList.Append( aCRD, nTab );
70 }//ENDE in aktuellem Workbook
73 diff --git sc/source/filter/excel/excform8.cxx sc/source/filter/excel/excform8.cxx
74 index 1bf13ef..22da392 100644
75 --- sc/source/filter/excel/excform8.cxx
76 +++ sc/source/filter/excel/excform8.cxx
77 @@ -877,7 +877,8 @@ ConvErr ExcelToSc8::Convert( const ScTokenArray*& rpTokArray, XclImpStream& aIn,
80 // stream seeks to first byte after <nFormulaLen>
81 -ConvErr ExcelToSc8::Convert( _ScRangeListTabs& rRangeList, XclImpStream& aIn, sal_Size nFormulaLen, const FORMULA_TYPE eFT )
82 +ConvErr ExcelToSc8::Convert( _ScRangeListTabs& rRangeList, XclImpStream& aIn, sal_Size nFormulaLen,
83 + SCsTAB nTab, const FORMULA_TYPE eFT )
85 BYTE nOp, nLen;//, nByte;
87 @@ -1008,7 +1009,7 @@ ConvErr ExcelToSc8::Convert( _ScRangeListTabs& rRangeList, XclImpStream& aIn, sa
89 ExcRelToScRel8( nRow, nCol, aSRD, bRangeName );
91 - rRangeList.Append( aSRD );
92 + rRangeList.Append( aSRD, nTab );
96 @@ -1036,7 +1037,7 @@ ConvErr ExcelToSc8::Convert( _ScRangeListTabs& rRangeList, XclImpStream& aIn, sa
97 else if( IsComplRowRange( nRowFirst, nRowLast ) )
100 - rRangeList.Append( aCRD );
101 + rRangeList.Append( aCRD, nTab );
105 @@ -1080,7 +1081,7 @@ ConvErr ExcelToSc8::Convert( _ScRangeListTabs& rRangeList, XclImpStream& aIn, sa
107 ExcRelToScRel8( nRow, nCol, aSRD, bRNorSF );
109 - rRangeList.Append( aSRD );
110 + rRangeList.Append( aSRD, nTab );
114 @@ -1106,7 +1107,7 @@ ConvErr ExcelToSc8::Convert( _ScRangeListTabs& rRangeList, XclImpStream& aIn, sa
115 else if( IsComplRowRange( nRowFirst, nRowLast ) )
118 - rRangeList.Append( aCRD );
119 + rRangeList.Append( aCRD, nTab );
123 @@ -1148,10 +1149,10 @@ ConvErr ExcelToSc8::Convert( _ScRangeListTabs& rRangeList, XclImpStream& aIn, sa
124 aCRD.Ref2.nCol = aSRD.nCol;
125 aCRD.Ref2.nRow = aSRD.nRow;
126 aCRD.Ref2.nTab = nLastScTab;
127 - rRangeList.Append( aCRD );
128 + rRangeList.Append( aCRD, nTab );
131 - rRangeList.Append( aSRD );
132 + rRangeList.Append( aSRD, nTab );
136 @@ -1184,7 +1185,7 @@ ConvErr ExcelToSc8::Convert( _ScRangeListTabs& rRangeList, XclImpStream& aIn, sa
137 else if( IsComplRowRange( nRw1, nRw2 ) )
140 - rRangeList.Append( aCRD );
141 + rRangeList.Append( aCRD, nTab );
145 diff --git sc/source/filter/excel/frmbase.cxx sc/source/filter/excel/frmbase.cxx
146 index ad4bf6b..aef072f 100644
147 --- sc/source/filter/excel/frmbase.cxx
148 +++ sc/source/filter/excel/frmbase.cxx
149 @@ -81,7 +81,7 @@ _ScRangeListTabs::~_ScRangeListTabs()
153 -void _ScRangeListTabs::Append( ScSingleRefData a, const BOOL b )
154 +void _ScRangeListTabs::Append( ScSingleRefData a, SCsTAB nTab, const BOOL b )
158 @@ -101,19 +101,24 @@ void _ScRangeListTabs::Append( ScSingleRefData a, const BOOL b )
163 + if( nTab == SCTAB_MAX)
170 - _ScRangeList* p = ppTabLists[ a.nTab ];
171 + _ScRangeList* p = ppTabLists[ nTab ];
174 - p = ppTabLists[ a.nTab ] = new _ScRangeList;
176 + p = ppTabLists[ nTab ] = new _ScRangeList;
183 -void _ScRangeListTabs::Append( ScComplexRefData a, const BOOL b )
184 +void _ScRangeListTabs::Append( ScComplexRefData a, SCsTAB nTab, const BOOL b )
188 @@ -161,12 +166,17 @@ void _ScRangeListTabs::Append( ScComplexRefData a, const BOOL b )
192 - if( a.Ref1.nTab >= 0 )
193 + if( nTab == SCTAB_MAX)
196 + nTab = a.Ref1.nTab;
200 - _ScRangeList* p = ppTabLists[ a.Ref1.nTab ];
201 + _ScRangeList* p = ppTabLists[ nTab ];
204 - p = ppTabLists[ a.Ref1.nTab ] = new _ScRangeList;
205 + p = ppTabLists[ nTab ] = new _ScRangeList;
209 diff --git sc/source/filter/excel/xiname.cxx sc/source/filter/excel/xiname.cxx
210 index 3647a51..72f4701 100644
211 --- sc/source/filter/excel/xiname.cxx
212 +++ sc/source/filter/excel/xiname.cxx
213 @@ -160,16 +160,18 @@ XclImpName::XclImpName( XclImpStream& rStrm, sal_uInt16 nXclNameIdx ) :
217 + SCsTAB const nLocalTab = (nXclTab == EXC_NAME_GLOBAL) ? SCTAB_MAX : (nXclTab - 1);
219 // --- print ranges or title ranges ---
220 rStrm.PushPosition();
223 case EXC_BUILTIN_PRINTAREA:
224 - if( rFmlaConv.Convert( GetPrintAreaBuffer(), rStrm, nFmlaSize, FT_RangeName ) == ConvOK )
225 + if( rFmlaConv.Convert( GetPrintAreaBuffer(), rStrm, nFmlaSize, nLocalTab, FT_RangeName ) == ConvOK )
226 nNameType |= RT_PRINTAREA;
228 case EXC_BUILTIN_PRINTTITLES:
229 - if( rFmlaConv.Convert( GetTitleAreaBuffer(), rStrm, nFmlaSize, FT_RangeName ) == ConvOK )
230 + if( rFmlaConv.Convert( GetTitleAreaBuffer(), rStrm, nFmlaSize, nLocalTab, FT_RangeName ) == ConvOK )
231 nNameType |= RT_COLHEADER | RT_ROWHEADER;
234 diff --git sc/source/filter/inc/excform.hxx sc/source/filter/inc/excform.hxx
235 index c587569..a067f9d 100644
236 --- sc/source/filter/inc/excform.hxx
237 +++ sc/source/filter/inc/excform.hxx
238 @@ -64,7 +64,7 @@ public:
239 virtual ConvErr Convert( const ScTokenArray*&, XclImpStream& rStrm, sal_Size nFormulaLen,
240 bool bAllowArrays, const FORMULA_TYPE eFT = FT_CellFormula );
242 - virtual ConvErr Convert( _ScRangeListTabs&, XclImpStream& rStrm, sal_Size nFormulaLen, const FORMULA_TYPE eFT = FT_CellFormula );
243 + virtual ConvErr Convert( _ScRangeListTabs&, XclImpStream& rStrm, sal_Size nFormulaLen, SCsTAB nTab, const FORMULA_TYPE eFT = FT_CellFormula );
245 virtual ConvErr ConvertExternName( const ScTokenArray*& rpArray, XclImpStream& rStrm, sal_Size nFormulaLen,
246 const String& rUrl, const ::std::vector<String>& rTabNames );
247 @@ -140,7 +140,7 @@ public:
249 virtual ConvErr Convert( const ScTokenArray*& rpTokArray, XclImpStream& rStrm, sal_Size nFormulaLen, bool bAllowArrays, const FORMULA_TYPE eFT = FT_CellFormula );
251 - virtual ConvErr Convert( _ScRangeListTabs&, XclImpStream& rStrm, sal_Size nFormulaLen, const FORMULA_TYPE eFT = FT_CellFormula );
252 + virtual ConvErr Convert( _ScRangeListTabs&, XclImpStream& rStrm, sal_Size nFormulaLen, SCsTAB nTab, const FORMULA_TYPE eFT = FT_CellFormula );
254 virtual ConvErr ConvertExternName( const ScTokenArray*& rpArray, XclImpStream& rStrm, sal_Size nFormulaLen,
255 const String& rUrl, const ::std::vector<String>& rTabNames );
256 diff --git sc/source/filter/inc/formel.hxx sc/source/filter/inc/formel.hxx
257 index 9b5d524..c025393 100644
258 --- sc/source/filter/inc/formel.hxx
259 +++ sc/source/filter/inc/formel.hxx
260 @@ -154,8 +154,8 @@ public:
261 _ScRangeListTabs( void );
262 virtual ~_ScRangeListTabs();
264 - void Append( ScSingleRefData aSRD, const BOOL bLimit = TRUE );
265 - void Append( ScComplexRefData aCRD, const BOOL bLimit = TRUE );
266 + void Append( ScSingleRefData aSRD, SCsTAB nTab, const BOOL bLimit = TRUE );
267 + void Append( ScComplexRefData aCRD, SCsTAB nTab, const BOOL bLimit = TRUE );
269 inline BOOL HasRanges( void ) const;
271 @@ -216,7 +216,7 @@ public:
273 virtual ConvErr Convert( const ScTokenArray*& rpErg, XclImpStream& rStrm, sal_Size nFormulaLen,
274 bool bAllowArrays, const FORMULA_TYPE eFT = FT_CellFormula ) = 0;
275 - virtual ConvErr Convert( _ScRangeListTabs&, XclImpStream& rStrm, sal_Size nFormulaLen,
276 + virtual ConvErr Convert( _ScRangeListTabs&, XclImpStream& rStrm, sal_Size nFormulaLen, SCsTAB nTab,
277 const FORMULA_TYPE eFT = FT_CellFormula ) = 0;