summaryrefslogtreecommitdiff
path: root/sc/source/filter/excel/xlescher.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'sc/source/filter/excel/xlescher.cxx')
-rw-r--r--sc/source/filter/excel/xlescher.cxx15
1 files changed, 11 insertions, 4 deletions
diff --git a/sc/source/filter/excel/xlescher.cxx b/sc/source/filter/excel/xlescher.cxx
index 538fd7fd7242..e1132c1b5606 100644
--- a/sc/source/filter/excel/xlescher.cxx
+++ b/sc/source/filter/excel/xlescher.cxx
@@ -35,6 +35,7 @@
#include "document.hxx"
#include "xistream.hxx"
#include "xlescher.hxx"
+#include <filter/msfilter/msvbahelper.hxx>
using ::rtl::OUString;
using ::com::sun::star::uno::Reference;
@@ -328,10 +329,16 @@ Reference< XControlModel > XclControlHelper::GetControlModel( Reference< XShape
#define EXC_MACRONAME_PRE "vnd.sun.star.script:Standard."
#define EXC_MACRONAME_SUF "?language=Basic&location=document"
-OUString XclControlHelper::GetScMacroName( const String& rXclMacroName )
+OUString XclControlHelper::GetScMacroName( const String& rXclMacroName, SfxObjectShell* pDocShell )
{
+ String sTmp( rXclMacroName );
if( rXclMacroName.Len() > 0 )
- return CREATE_OUSTRING( EXC_MACRONAME_PRE ) + rXclMacroName + CREATE_OUSTRING( EXC_MACRONAME_SUF );
+ {
+ ooo::vba::VBAMacroResolvedInfo aMacro = ooo::vba::resolveVBAMacro( pDocShell, rXclMacroName, false );
+ if ( aMacro.IsResolved() )
+ return ooo::vba::makeMacroURL( aMacro.ResolvedMacro() );
+
+ }
return OUString();
}
@@ -365,14 +372,14 @@ spTbxListenerData[] =
#define EXC_MACROSCRIPT "Script"
bool XclControlHelper::FillMacroDescriptor( ScriptEventDescriptor& rDescriptor,
- XclTbxEventType eEventType, const String& rXclMacroName )
+ XclTbxEventType eEventType, const String& rXclMacroName, SfxObjectShell* pShell )
{
if( rXclMacroName.Len() > 0 )
{
rDescriptor.ListenerType = OUString::createFromAscii( spTbxListenerData[ eEventType ].mpcListenerType );
rDescriptor.EventMethod = OUString::createFromAscii( spTbxListenerData[ eEventType ].mpcEventMethod );
rDescriptor.ScriptType = CREATE_OUSTRING( EXC_MACROSCRIPT );
- rDescriptor.ScriptCode = GetScMacroName( rXclMacroName );
+ rDescriptor.ScriptCode = GetScMacroName( rXclMacroName, pShell );
return true;
}
return false;