summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sc/source/filter/inc/defnamesbuffer.hxx4
-rw-r--r--sc/source/filter/oox/defnamesbuffer.cxx10
2 files changed, 8 insertions, 6 deletions
diff --git a/sc/source/filter/inc/defnamesbuffer.hxx b/sc/source/filter/inc/defnamesbuffer.hxx
index da1024672e03..b7b82a54d6bd 100644
--- a/sc/source/filter/inc/defnamesbuffer.hxx
+++ b/sc/source/filter/inc/defnamesbuffer.hxx
@@ -105,8 +105,8 @@ public:
/** Creates a defined name in the Calc document. */
void createNameObject( sal_Int32 nIndex );
/** Converts the formula string or BIFF token array for this defined name. */
- void convertFormula();
- std::unique_ptr<ScTokenArray> getScTokens();
+ void convertFormula( const css::uno::Sequence<css::sheet::ExternalLinkInfo>& rExternalLinks );
+ std::unique_ptr<ScTokenArray> getScTokens( const css::uno::Sequence<css::sheet::ExternalLinkInfo>& rExternalLinks );
/** Returns true, if this defined name is global in the document. */
inline bool isGlobalName() const { return mnCalcSheet < 0; }
/** Returns true, if this defined name is a special builtin name. */
diff --git a/sc/source/filter/oox/defnamesbuffer.cxx b/sc/source/filter/oox/defnamesbuffer.cxx
index feb6c2f166cd..9de5851e3978 100644
--- a/sc/source/filter/oox/defnamesbuffer.cxx
+++ b/sc/source/filter/oox/defnamesbuffer.cxx
@@ -326,11 +326,13 @@ void DefinedName::createNameObject( sal_Int32 nIndex )
mnTokenIndex = nIndex;
}
-std::unique_ptr<ScTokenArray> DefinedName::getScTokens()
+std::unique_ptr<ScTokenArray> DefinedName::getScTokens(
+ const css::uno::Sequence<css::sheet::ExternalLinkInfo>& rExternalLinks )
{
ScTokenArray aTokenArray;
ScCompiler aCompiler(&getScDocument(), ScAddress(0, 0, mnCalcSheet));
aCompiler.SetGrammar(formula::FormulaGrammar::GRAM_OOXML);
+ aCompiler.SetExternalLinks( rExternalLinks);
std::unique_ptr<ScTokenArray> pArray(aCompiler.CompileString(maModel.maFormula));
// Compile the tokens into RPN once to populate information into tokens
// where necessary, e.g. for TableRef inner reference. RPN can be discarded
@@ -343,7 +345,7 @@ std::unique_ptr<ScTokenArray> DefinedName::getScTokens()
return pArray;
}
-void DefinedName::convertFormula()
+void DefinedName::convertFormula( const css::uno::Sequence<css::sheet::ExternalLinkInfo>& rExternalLinks )
{
// macro function or vba procedure
if(!mpScRangeData)
@@ -352,7 +354,7 @@ void DefinedName::convertFormula()
// convert and set formula of the defined name
if ( getFilterType() == FILTER_OOXML )
{
- std::unique_ptr<ScTokenArray> pTokenArray = getScTokens();
+ std::unique_ptr<ScTokenArray> pTokenArray = getScTokens( rExternalLinks);
mpScRangeData->SetCode( *pTokenArray );
}
@@ -450,7 +452,7 @@ void DefinedNamesBuffer::finalizeImport()
/* Now convert all name formulas, so that the formula parser can find all
names in case of circular dependencies. */
- maDefNames.forEachMem( &DefinedName::convertFormula );
+ maDefNames.forEachMem( &DefinedName::convertFormula, getExternalLinks().getLinkInfos());
}
DefinedNameRef DefinedNamesBuffer::getByIndex( sal_Int32 nIndex ) const