问题标签 [xll]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - XLL 插件开发 - Excel SDK 功能问题
目前,我正在使用 Excel SDK 2010 开发 Excel 2010 加载项 (.xll)。不幸的是,微软提供的文档很少(或者我可能还没有找到)。我的加载项已加载到 Excel 中,它的菜单出现,并且我能够从菜单中调用一个函数,该函数确实被执行。在其中,我尝试收集所有工作表名称,但每次调用该函数都会产生不同的结果。返回的工作表名称中存在正确的工作表名称,XLOPER
但它们被不断变化的“奇怪”字符包围。
有问题的代码:
c++ - 在 Excel XLL 中返回数组
我使用 Excel 2010 和 Excel 2010 XLL SDK。我尝试使用此功能:
定义:
当xlValues
数组大小为 4 时,则返回 excel 4 个值,但第三个值为 TRUE (??)。当xlValues
数组大小为 10 时,它会向 Excel 返回 #NUM 错误。将数组返回到 Excel 的正确方法是什么?
PS我这篇文章使用这样的模板http://blogs.msdn.com/b/andreww/archive/2007/12/09/building-an-excel-xll-in-cc-with-vs-2008.aspx
c++ - XLL 函数参数签名类型
我使用此示例使用 C++ 为 Excel 构建 XLL。我创建了自己的函数,它需要 2 个双参数并返回字符串:
函数定义:
如果 P = 100,345 T = 200,567 我在输出中得到 P = 2061584302 和 T = -584115552 - 我使用了 debugPrintf 函数。当函数 args 很长时:
和函数签名“UJJ”我尝试 P = 100,345 T = 200,567 我得到 P=100 和 T = 201。
那么,我必须使用哪个正确的函数签名?
excel - 尽管有完全限定的范围参数,XLL 仅适用于特定的 Excel 工作表
我有一个带有以下代码的 XLL 文件(使用 xll.codeplex.com 库):
然后在 VBA 子程序中重复调用此函数。参数 x 和 y 是范围地址,例如 'XX'!B42。工作表名称是动态的。VBA 例程激活特定工作表,然后使用该工作表上的 XLL 函数进行计算。如果我手动运行 VBA 子程序,同时从正确的工作表开始,一切都会正常工作(直到它需要切换工作表)。所以我不相信这是一个 C++ 问题。如果我从任何其他工作表启动子程序,Excel 将在遇到第一个 XLL 调用时立即崩溃:
我的代码中没有对 ThisWorksheet 或 ActiveWorksheet 的引用。我设置了断点并确保正确设置了工作表变量。
为什么尽管给出了正确的范围地址(包括工作表名称),但 XLL 似乎在访问新激活的工作表时出现问题?
非常感激。
c++ - 从 XLL 函数返回 unicode 字符串
我在 VS 2010 中使用 Excel 2007 XLL SDK 编写 Excel 2007/2010 XLL。我的函数可以返回各种字符串:
当字符串值返回到 excel 时,它的值 - 'Ошибка диапазона параме' - 不是所有第一个字符串。但我告诉长度 os 字符串,字符串开头带有“\027”。我哪里错了?
编辑 1:
但我有这个:
你有什么想法?
编辑 2:我的函数签名类型:
deployment - How to deploy an Excel XLL Add-In and automatically register the Add-In in Excel
I have developed an Excel XLL using ExcelDNA and C#. I am at the point where I would like to begin testing the deployment, but cannot find much information that actually provides steps that work.
My project was developed as a Class library with ExcelDna references. In the .dna file, I have the code below that will pack all resources into a packed version of the XLL (i.e. the Pack="true" attribute).
I would like to deploy the packed XLL to the target machine in the path:
In order to automatically register the XLL with Excel, I need to add a registry key that depends on the version of Excel that the user has.
For instance, on my computer (Windows 7 64 bit running Excel 2007 32-bit), I would need to add a registry key to the following path:
The key would be type REG_SZ with the name OPEN (or OPEN1, OPEN2, etc.) and the value /R "ExcelXLL-packed.xll"
I have 2 problems though. The first is in determining which version of Excel that the user has to get the correct path and the 2nd is to determine the correct OPEN version that I need to create (for example, if the user already has OPEN, OPEN1, and OPEN2 then I would create an OPEN3 key).
I am trying to do the installation using either the Setup and Deployment project or a InstallShield LE project and cannot determine how to go about this. Does anyone know how to do this or a better way of doing it?
EDIT 1:
I have done a great deal of research on this and have looked at several windows installers.
In the Package and Deployment and InstallShield LE, I can get the install/uninstall to work by putting an installer class into my class library and bundling project output with the install. In this approach, I handle inserting/removing the registry key using the installer class. The problem that I have is that the user must uninstall first before running a new install (no update capability).
I downloaded the Setup Factory demo version and can get install/update to work but cannot do the framework check (not shipped with the demo). Also, the uninstall fails (though I may be able to get this to work with some more investigation).
I am interested in using the WiX installer, but would like to know if anyone has a sample of how to perform the deployment using WiX. I would also like to know if I need to use the installer class or if there is a different way to handle the search for the OPEN[n] key under HKCU\Software\Microsoft\Office[Version].0\Excel\Options. If I were to use the project output to enable the installer class, then I need to have 2 separate target directories (one under Program Files for the basic project output and one under %appdata%\Microsoft\AddIns for the packed XLL).
Any help is greatly appreciated.
Thanks,
Lee
c++ - 在已加载到 Excel 的 dll 中获取 Excel.Application IDispatch*
有谁知道如何获取Excel.Application
IDispatch*
与 Excel 进程关联的指针dll
与已加载
这里的一个关键是过程是excel.exe
,我需要的指针必须属于那个进程。使用正在运行的对象表不会飞,因为 Excel 只注册它的第一个实例。
我希望有一些低级的 COM 技巧,但我不是该领域的专家。
excel - XLL 像电子表格一样被加载到 Excel 中
我已经建立了一个 XLL。当我通过 Excel 加载项窗口将此 XLL 加载到 Excel 中时,我可以看到正在调用 xlAutoOpen 和 xlAutoAdd 方法。然后加载项正常工作。
但是,如果我再次关闭并重新打开 Excel,Excel 会将 XLL 加载到电子表格中,例如工作簿的标题是“DevAddIn.xll [只读]”,第一行是“Í!¸LÍ!This program cannot be在 DOS 模式下运行。”
有谁知道为什么我可以成功加载 XLL,但是下次加载时 Excel 似乎误解了加载项?
c++ - 如何从另一个 XLL 调用一个 XLL 中的加载项函数
我做了一个XLL+用户定义函数sum1,添加这个插件后,它可以在Excel中流畅运行。但现在我正在构建另一个 XLL,比如 sum2。我希望我可以在 sum2 中调用 sum1。由于 sum1 和 sum2 位于不同的 XLL 中,因此不能直接调用它们,需要一些代码来执行此操作。以前有没有人遇到过这个问题以及有什么好的方法呢?
我用谷歌搜索了这个问题并找到了下面的代码,这是由评估和 UDF 函数完成的。但似乎代码很旧,适用于 Visual Studio 2005,但不适用于 2012,运行时会出现 #Name 错误。
如果有人可以帮助我,我将不胜感激。非常感谢。
c# - 如何禁用在选择任何单元格时停止计算的 Excel 2010 功能/错误?
我正在处理一个 excel 表,在 xll 插件的帮助下,我正在尝试更新数据。我按 Ctrl+Alt+F9 开始计算,但计算在任何按键或单元格选择处停止。有没有办法覆盖此功能或错误?
这在 Excel 2003 上不会发生。