Tag: xll

VSTO和.XLL之间的通信

在Visual Studio中,我有一个解决scheme。 在这个解决scheme中,我有2个项目。 一个是VSTO,所以我们可以为Excel创build一个插件。 另一个项目是用来创build一个.xll文件,以便我们可以有自定义函数。 VSTO帮助我们在excel上创build一个login系统,以便他们可以做某些事情。 但是,因为我们只希望我们的用户能够使用我们的自定义函数,他们必须login。我认为这两个项目不能直接通信,所以.xll插件不会知道用户是否login。 这两个项目有没有交stream? 也许通过一个像静态variables类的中间人? 编辑: 更多信息: 这两个项目都是用C#代码编写的。 我可以通过使用ExcelDNA为.xll文件做到这一点。 因此,如果有什么办法可以创build一个C#类,它可以在两个项目之间协调或共享数据,这将非常棒。 由于login数据不是我们想分享的唯一东西。 我希望在类中将有一个静态布尔variables保持用户是否login。所以VSTO可以设置布尔值和.xll可以得到它。

Excel XLL插件可以有多less内存?

我正在使用C ++编写Microsoft Excel的.XLL插件,在XLW库的帮助下。 我的操作系统是Windows 7 64位版本,32 GB RAM; 但我的Excel是Excel 2010,32位版本。 使用GlobalMemoryStatusEx检查,它显示XLL中的代码只能看到大约1200 MB的可用虚拟内存(来自struct _MEMORYSTATUSEX中的 ullAvailVirtual ),尽pipe可用的物理内存( ullAvailPhys )大约为23 GB。 由于我的代码需要相当多的内存(每个计算线程大约100MB),所以在发出12个线程之后,它会遇到错误的分配错误。 有没有办法增加可用内存? 这是Excel XLL插件的限制吗? 在控制台应用程序中, GlobalMemoryStatusEx报告大约2034 MB可用的虚拟内存。 这是XLW library的限制吗? 这是32-bit Excel的限制吗?

在未安装可视化的计算机上安装xll

我用visual studio 2010和excel 2010开发了一个xll,它在安装了visual的计算机上的excel上工作的很好。 但是现在,我试图在没有安装可视化的计算机上使用我的xll,所以我想创build一个设置。 事实上,我试图在没有安装任何东西的窗口上执行我的xll(只有Excel 2010):它不工作。 所以我在X64和X86上安装了“Visual 2010 C ++可再分发软件包”。 当我再次尝试在Excel中执行我的xll,并且不再工作。 编辑 :我用我的两个xll“depends.exe”。 在不工作的xll上,C:\ windows \ system32 \ SHLWAPI.DLL在左边有一个红色的图片,但是正在工作的xll在错误时没有这个dll: 所以我的问题是什么xll需要附加到C ++包在计算机上执行没有视觉? 或者你有一个简单的方法来创build一个xll的设置(我创build了一个设置与视觉,它不工作,所以也许有另一种方法…)。

对于Excel 2003,XLL中的UDF可以使用多个线程吗?

FYI 1:UDF =用户定义(工作表)函数FYI 2:XLL = Excel加载项(DLL – > XLL) 我正在使用Microsoft的Excel4()API在C / C ++中编写用于Excel的XLL加载项。 链接: http : //msdn.microsoft.com/en-us/library/bb687835.aspx 我有一个“复杂”的任务,我想使用多个线程来获得更好的性能。 虽然我明白在Excel 2003中的计算是单线程的,但我想知道我的UDF是否可以(a)产生线程来完成工作,(b)等待线程完成,以及(c)返回结果。 要非常清楚,我不会做任何Excel自动化,也不会在线程中调用Excel4()。 伪代码: 变体MyComplexUDF(变体input1,变体input2) { 线程t1 =新的WorkerThread(input1); 线程t2 =新的WorkerThread(input2); t1.join(); t2.join(); return [t1.Result(),t2.Result()]; } 表面上,这似乎是好的,但我不是在DLL / XLL和线程的专家。 PS我已经search了谷歌(高和低)这个答案,并没有find关于此事的任何事情。

Excel不能识别我的xll文件

我用codeblocks&mingw创build了我的第一个xll文件,按照这个指南http://support.microsoft.com/kb/178474/en-us 问题是DLL文件,被重命名为xll文件,不被excel识别。 我不明白指导的第10点的含义,因此这可能是我的问题。 我以为def文件是编译器的输出。 为什么指南build议他们是一个input? 如果他们是一个input,我怎样才能设置codeblocks作为一个input的def文件? 谢谢。 [编辑]问题解决:如果有人遇到同样的问题,这个问题绝对是导出函数的命名约定。 通过正确使用Def文件,问题就解决了。

XLL插件开发 – Excel SDKfunction问题

目前,我正在开发Excel 2010 2010的Excel加载项。不幸的是,微软的文档很less(或者我目前还没有看到)。 我达到了我的加载项被加载到Excel的内部,我可以从加载项的菜单中调用一个函数。 在里面,我尝试收集所有的表名,但每次调用函数都会得到不同的结果。 正确的名称总是返回,但它们被改变“奇怪”的字符包围。 相应的代码: LPXLOPER12 GetWorkbook(void){ LPXLOPER12 workbooksheets=new XLOPER12,xworkbookname = new XLOPER12; memset(xworkbookname,0,sizeof(XLOPER12)); memset(workbooksheets,0,sizeof(XLOPER12)); Excel12f(xlfGetDocument,xworkbookname,1,TempInt12(88)); Excel12f(xlfGetWorkbook,workbooksheets,2,TempInt12(1),xworkbookname); return 0; }

我怎样才能从DLL中获得XLL?

任何人都可以给我一些链接或解释我如何从一个DLL(对于Excel)build立一个XLL? 我不能使用Visual C ++,所以我依靠CodeBlocks + GCC。 到目前为止,我有源代码,我从中获得了一个DLL。 我怎样才能从DLL中获得XLL? 这似乎是最后一步,但我找不到完整的文档。 即使在微软网站上也没有太多关于它的内容。 我想有一步一步的解释来做这个转换… 谢谢。 平台:64位Windows 7,32位Excel 2010,CodeBlocks,MinGW / GCC

将XLL插件function转换为本地VB模块:问题刷新公式

我有一个.xll插件,它在一些地方注册了我们在excel表格中使用的一些函数。 性能非常差,我们没有原始代码,所以我们通过在VB模块中编写函数来复制function。 function按预期工作,性能更好。 问题是表单不会自动识别新function。 例如,假设一个单元格的公式是“= CustomFunction()” ,它是在xll中定义的,现在已经在VB中定义了。 这将继续显示为“#NAME”,除非我手动编辑单元格,然后按Enter键。 然后正确地拿起VB公式并计算。 重新计算公式的标准技巧:Ctrl / Alt / Shift / F9没有奏效。 有没有人经历过这个? 任何想法如何解决这个问题?

Web请求在Excel AddIn中的Excel启动时运行

我有一个Excel AddIn,当Excel启动时,它将访问一个Web服务(GET),这是一个简单的Web服务请求,应该立即完成说:类似于https://mywebservice.com&application=myapp&user=currentuser ,结果是一个短(<200bytes)的JSONexpression式。 如果我在浏览器中运行这个请求,它就像预期的那样很快。 在我的AddIn中,我经常logging从Web请求的开始到结束的时间(大约40-50%的时间)需要3-5秒,而其他时间,从浏览器运行起来真的很快。 如果速度慢,Excel没有响应,只需在状态栏中显示“注册MyaddIn.xll …”即可。 我很困惑,不知道如何debugging/解决这个问题。 谢谢 这里是我用来调用Web服务的C# private static int DownloadInfoFromServer(string entUrl, string localFilename) { // Function will return the number of bytes processed // to the caller. Initialize to 0 here. int bytesProcessed = 0; // Assign values to these objects here so that they can // be referenced in the […]

加载多个项目DLL

有人可以帮我解决我所面临的这个XLL负载问题吗? 我有一个DLL解决scheme,我有prj1和prj2。 prj1有prj1cppfile有几个我写的用户定义函数。 prj2有prj2cppfile有我写的一些更多的用户定义的函数。 现在,我select解决schememake prj1作为我的启动项目。 然后我打F5开始在debugging模式下使用我的代码。 我观察到的是(在打开的Excel电子表格中)我只有prj1cppfiles的函数。 当我selectprj2作为我的启动项目时,我看到了prj2cppfiles中的函数。 现在我想要的是同时加载prj1和prj2,以便我看到prj1cppfile和prj2cppfile坐在两个不同的项目中的函数。 有人可以帮我解决这个问题。 我想以这样的方式build立一个解决scheme,无论我select哪个启动项目(prj1或prj2),我都应该能够在excel中公开所有的函数(来自prj1cppfile和prj2cppfile)。 我正在使用Visual Studio 2008,我正在使用来自Codeplex的Keith Lewis代码的XLL代码。 我是写XLL的新手,所以请给我一个详细的答案,因为我正在尝试学习这个过程。 我观察到的是在解决schemeprj1.dll和prj2.dll的debugging文件夹中存在。 我selectprj1作为我的启动项目,按f5键打开excel。 然后我去debugging文件夹并拖放prj2.dll在打开的Excel中。 当我这样做,我有访问所有的function是在prj1.dll和prj2.dll。 是不可能有一个主dll将包含不同的DLL持有的所有function? 什么是build立这个主dll的方法。 最好