<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Another Whitepaper - Developing UDFs for Excel 2007 and Excel Services</title><link>http://blogs.msdn.com/excel/archive/2006/09/22/764030.aspx</link><description>Danny Khen is back (Danny wrote a number of posts on programmability topics over the past year) with a white paper on developing UDFs for Excel client and server. In a few past posts, we discussed investments in user-defined functions (UDFs) in Excel</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Off topic - AddressOf operator</title><link>http://blogs.msdn.com/excel/archive/2006/09/22/764030.aspx#766371</link><pubDate>Fri, 22 Sep 2006 19:39:26 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:766371</guid><dc:creator>John Greenan</dc:creator><description>This is a bit cheeky, but what the hell, I am stuck and casting around for help anywhere. &amp;nbsp;I posted this on the excel.programming newsgroup and I reproduce it here wondering if anyone has any ideas....&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;In Excel 97 there was no inbuilt way to refer to the address of a function. Kaplan and Getz put together a workaround for this ( &lt;br&gt;&lt;a rel="nofollow" target="_new" href="http://www.trigeminal.com/lang/1033/codes.asp?ItemID=19#19"&gt;http://www.trigeminal.com/lang/1033/codes.asp?ItemID=19#19&lt;/a&gt;) which is very useful when required.&lt;br&gt;&lt;br&gt;Excel 2000 and above have the native AddressOf operator, which offers very similar functionality with one major difference. &amp;nbsp;AddressOf &amp;nbsp;returns a long, but only takes as a parameter a function name written in text - no quotes, just the name. &amp;nbsp;It also will not accept a variable as a parameter.&lt;br&gt;&lt;br&gt;Kaplan and Getz offered their workaround for Excel 97 with this method signature&lt;br&gt;Public Function AddrOf(strFuncName As String) As Long&lt;br&gt;In this case we can see that we can have a variable function name and the code figures out the address of the function and returns a long. &amp;nbsp;&lt;br&gt;&lt;br&gt;So, the Kaplan &amp;amp; Getz code does not work in Excel 2002 and above (the platform I MUST use). &amp;nbsp;A few hacks around show that the issue is that the library they reference - vba332.dll is not implemeted in the same way in vbe6.dll.&lt;br&gt;&lt;br&gt;So, with the constraints &amp;quot;MUST be in Excel 2002&amp;quot; and &amp;quot;must work with variable names for the callback address&amp;quot; I find myself stuck. I am working on a project where I cannot &lt;br&gt;re-engineer to use text for the function names, they have to be variables and I cannot use another version of Excel.&lt;br&gt;&lt;br&gt;&lt;br&gt;</description></item><item><title>re: Another Whitepaper - Developing UDFs for Excel 2007 and Excel Services</title><link>http://blogs.msdn.com/excel/archive/2006/09/22/764030.aspx#768031</link><pubDate>Sat, 23 Sep 2006 18:58:37 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:768031</guid><dc:creator>Mike Rosenblum</dc:creator><description>Hi John,&lt;br&gt;&lt;br&gt;I tracked down your thread to here:&lt;br&gt;&lt;br&gt;&amp;lt;a href=&amp;quot;&lt;a rel="nofollow" target="_new" href="http://msdn.microsoft.com/newsgroups/default.aspx?&amp;amp;query=addressof&amp;amp;lang=en&amp;amp;cr=US&amp;amp;guid=&amp;amp;sloc=en-us&amp;amp;dg=microsoft.public.excel.programming&amp;amp;p=1&amp;amp;tid=bf92f52f-46d7-4435-a7f1-9423c7ebfcf2&amp;quot;&amp;gt;AddressOf"&gt;http://msdn.microsoft.com/newsgroups/default.aspx?&amp;amp;query=addressof&amp;amp;lang=en&amp;amp;cr=US&amp;amp;guid=&amp;amp;sloc=en-us&amp;amp;dg=microsoft.public.excel.programming&amp;amp;p=1&amp;amp;tid=bf92f52f-46d7-4435-a7f1-9423c7ebfcf2&amp;quot;&amp;gt;AddressOf&lt;/a&gt; limitations 2002 vs. 97 in excel.programming&amp;lt;/a&amp;gt;&lt;br&gt;&lt;br&gt;I replied, but I don't know if I was helpful. My guess is that you're aware of the suggestions I made, but the flip-side is that it's hard to understand why you are saddled with the requirements that you state -- namely a string-based AddressOf operator.&lt;br&gt;&lt;br&gt;Anyway, this is probably not the right place do discuss it, so I guess that anyone that is interested should just continue on your thread in excel.programming...&lt;br&gt;&lt;br&gt;Mike</description></item><item><title>re: Another Whitepaper - Developing UDFs for Excel 2007 and Excel Services</title><link>http://blogs.msdn.com/excel/archive/2006/09/22/764030.aspx#768039</link><pubDate>Sat, 23 Sep 2006 19:06:49 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:768039</guid><dc:creator>Mike Rosenblum</dc:creator><description>Sorry about the bad link in the above... I guess this system does not accept HTML links?&lt;br&gt;&lt;br&gt;Hopefully this will work better:&lt;br&gt;&lt;br&gt;&lt;a rel="nofollow" target="_new" href="http://msdn.microsoft.com/newsgroups/default.aspx?&amp;amp;query=addressof&amp;amp;lang=en&amp;amp;cr=US&amp;amp;guid=&amp;amp;sloc=en-us&amp;amp;dg=microsoft.public.excel.programming&amp;amp;p=1&amp;amp;tid=bf92f52f-46d7-4435-a7f1-9423c7ebfcf2"&gt;http://msdn.microsoft.com/newsgroups/default.aspx?&amp;amp;query=addressof&amp;amp;lang=en&amp;amp;cr=US&amp;amp;guid=&amp;amp;sloc=en-us&amp;amp;dg=microsoft.public.excel.programming&amp;amp;p=1&amp;amp;tid=bf92f52f-46d7-4435-a7f1-9423c7ebfcf2&lt;/a&gt;&lt;br&gt;&lt;br&gt;Mike</description></item><item><title>re: Another Whitepaper - Developing UDFs for Excel 2007 and Excel Services</title><link>http://blogs.msdn.com/excel/archive/2006/09/22/764030.aspx#770550</link><pubDate>Mon, 25 Sep 2006 17:13:33 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:770550</guid><dc:creator>Hein Rutjes</dc:creator><description>Hi David,&lt;br&gt;&lt;br&gt;We are busy investigating on how to put the new features in Excel 2007 to good use. We are very interested in the RTD functionality as an efficient way of getting our data into Excel. The RTD interface is however somewhat too generic for widespread use so we were thinking of making UDF functions in an XLL which wrap the RTD function. Will this be supported? And if so, would you recommend such an approach when used with very large quantities of these functions? Additionally would you recommend using multiple (in-process) RTD servers or a single (in-process) RTD server when it comes to performance? &lt;br&gt;&lt;br&gt;Kind regards,&lt;br&gt;Hein</description></item><item><title>RTD thru UDFs</title><link>http://blogs.msdn.com/excel/archive/2006/09/22/764030.aspx#770687</link><pubDate>Mon, 25 Sep 2006 19:19:16 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:770687</guid><dc:creator>Danny Khen (MS)</dc:creator><description>Hein,&lt;br&gt;Not sure what you mean by &amp;quot;too generic&amp;quot;; however if you want to deploy the solution also to Excel Services (on Office SharePoint Server), RTD is not directly supported.&lt;br&gt;Shahar Prish has written about a way to implement something like what you're suggesting - RTD thru UDFs on the server. This can be found in 2 posts: &lt;a rel="nofollow" target="_new" href="http://blogs.msdn.com/cumgranosalis/archive/2006/05/23/RTDPart1.aspx"&gt;http://blogs.msdn.com/cumgranosalis/archive/2006/05/23/RTDPart1.aspx&lt;/a&gt; and &lt;a rel="nofollow" target="_new" href="http://blogs.msdn.com/cumgranosalis/archive/2006/05/24/RTDPart2.aspx"&gt;http://blogs.msdn.com/cumgranosalis/archive/2006/05/24/RTDPart2.aspx&lt;/a&gt;.&lt;br&gt;Please drop me a line at Danny.Khen AT microsoft DOT com if you'd like to keep discussing this.&lt;br&gt;Thanks!</description></item><item><title>re: Another Whitepaper - Developing UDFs for Excel 2007 and Excel Services</title><link>http://blogs.msdn.com/excel/archive/2006/09/22/764030.aspx#771709</link><pubDate>Tue, 26 Sep 2006 08:12:05 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:771709</guid><dc:creator>David Gainer</dc:creator><description>Hein,&lt;br&gt;&lt;br&gt;You can call =RTD() from an XLL. &amp;nbsp;It's less performant than calling from a worksheet directly, but should be faster than doing the UDF wrapper in VBA.&lt;br&gt;&lt;br&gt;I don't know for sure, but we expect a single server with multiple topics would be more performant than multiple servers. &amp;nbsp;Also, having the server in-proc would most likely be more performant.&lt;br&gt;</description></item><item><title>Wrapping RTD's</title><link>http://blogs.msdn.com/excel/archive/2006/09/22/764030.aspx#771843</link><pubDate>Tue, 26 Sep 2006 10:45:36 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:771843</guid><dc:creator>Hein Rutjes</dc:creator><description>Thanks Danny &amp;amp; David,&lt;br&gt;&lt;br&gt;I was wondering about one more thing. What is the performance penalty of wrapping the =RTD() function? Will there only be a performance penalty when the input-arguments to the function change? After the RTD registrations are in-place the wrapping function will no longer be called right (unless the arguments change of course)?&lt;br&gt;&lt;br&gt;Kind regards,&lt;br&gt;Hein</description></item><item><title>re: Another Whitepaper - Developing UDFs for Excel 2007 and Excel Services</title><link>http://blogs.msdn.com/excel/archive/2006/09/22/764030.aspx#775802</link><pubDate>Thu, 28 Sep 2006 21:10:12 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:775802</guid><dc:creator>David Gainer</dc:creator><description>Hi Hein,&lt;br&gt;&lt;br&gt;I am pretty sure that the penalty would be every time the data changed. &amp;nbsp;When we do RTD work, we mark the currently calcing cell as &amp;quot;having RTD data&amp;quot;, so each time an RTD update is received, we'll calc the cell.</description></item></channel></rss>