--- sc/source/ui/vba//vbawsfunction.cxx	
+++ sc/source/ui/vba//vbawsfunction.cxx
@@ -51,9 +51,9 @@
 using namespace com::sun::star;
 using namespace org::openoffice;
 
-ScVbaWSFunction::ScVbaWSFunction( css::uno::Reference< css::uno::XComponentContext >& xContext):m_xContext(xContext)
+ScVbaWSFunction::ScVbaWSFunction( const uno::Reference< vba::XHelperInterface >& xParent, const css::uno::Reference< css::uno::XComponentContext >& xContext): ScVbaWSFunction_BASE( xParent, xContext )
 {
-	m_xNameAccess.set(  m_xContext->getServiceManager()->createInstanceWithContext( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.sheet.FunctionDescriptions") ), m_xContext ), uno::UNO_QUERY_THROW );
+	m_xNameAccess.set(  mxContext->getServiceManager()->createInstanceWithContext( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.sheet.FunctionDescriptions") ), mxContext ), uno::UNO_QUERY_THROW );
 }
 
 
@@ -66,10 +66,10 @@ ScVbaWSFunction::getIntrospection(void) 
 uno::Any SAL_CALL
 ScVbaWSFunction::invoke(const rtl::OUString& FunctionName, const uno::Sequence< uno::Any >& Params, uno::Sequence< sal_Int16 >& /*OutParamIndex*/, uno::Sequence< uno::Any >& /*OutParam*/) throw(lang::IllegalArgumentException, script::CannotConvertException, reflection::InvocationTargetException, uno::RuntimeException)
 {
-	uno::Reference< lang::XMultiComponentFactory > xSMgr( m_xContext->getServiceManager(), uno::UNO_QUERY_THROW );
+	uno::Reference< lang::XMultiComponentFactory > xSMgr( mxContext->getServiceManager(), uno::UNO_QUERY_THROW );
 	uno::Reference< sheet::XFunctionAccess > xFunctionAccess(
                         xSMgr->createInstanceWithContext(::rtl::OUString::createFromAscii(
-                        "com.sun.star.sheet.FunctionAccess"), m_xContext),
+                        "com.sun.star.sheet.FunctionAccess"), mxContext),
                         ::uno::UNO_QUERY_THROW);
 	uno::Sequence< uno::Any > aParamTemp;
 	sal_Int32 nParamCount = Params.getLength();
@@ -136,3 +136,22 @@ ScVbaWSFunction::getExactName( const ::r
 		return rtl::OUString();
 	return sName; 
 }
+
+rtl::OUString& 
+ScVbaWSFunction::getServiceImplName()
+{
+	static rtl::OUString sImplName( RTL_CONSTASCII_USTRINGPARAM("ScVbaWSFunction") );
+	return sImplName;
+}
+
+uno::Sequence< rtl::OUString > 
+ScVbaWSFunction::getServiceNames()
+{
+	static uno::Sequence< rtl::OUString > aServiceNames;
+	if ( aServiceNames.getLength() == 0 )
+	{
+		aServiceNames.realloc( 1 );
+		aServiceNames[ 0 ] = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("org.openoffice.excel.WorksheetFunction" ) );
+	}
+	return aServiceNames;
+}
