我试图在运行时(huzzah)为加载项(双huzzah)创建一些条件格式,并且发现显然某些函数不能像在普通工作表中那样使用.(当我尝试创建引用我可以在单元格中调用的VBA函数的CF时,我只得到一个无效的过程调用错误5,即使它在加载项而不是工作簿中;我可以使用内置函数创建CF罚款在函数中.)我发现最清楚的确认是在这里,但它并没有真正解释问题是什么; 这是深奥的部分,我希望能够更多地了解我对此的期望.
橡胶与道路部分是:我可以完全避免使用VBA,并使用一系列仅限Excel的内置函数来验证给定单元格是否包含常量(即用户输入的值),公式(即某种计算,逻辑运算等 - 几乎以=)或链接(即对另一个工作表或另一个工作簿中的单元格的引用)开始?我知道Excel有这个决心触手可及; 见证GoTo/Special的用途和速度.如何我得到它虽然?
在此先感谢您的帮助.
我正在使用Visual Studio 2010创建Excel加载项.我想在用户单击组合键时运行一些代码.
这是我得到的代码
Public Class CC
Private Sub ThisAddIn_Startup() Handles Me.Startup
    EnableShortCut()
End Sub
Sub A1()
    MsgBox "A1"
End Sub
Sub A2()
    MsgBox "A2"
End Sub
Sub A3()
    MsgBox "A3"
End Sub
Public Sub EnableShortCut()
    With Application
        .OnKey "+^{U}", "A1"  'action A1 should be performed when user clicks  Ctrl + Shift + U
        .OnKey "+^{L}", "A2"  'action A2 should be performed when user clicks  Ctrl + Shift + L
        .OnKey "+^{P}", "A3"  'action A3 should be performed when user …我已经定义了自己的Excel函数(称为ADXExcelFunctionDeescriptor).方法存根如下所示:
public static object ExecuteMyFunction(object values, object tagName)
{ // Some code here }
该方法接收一个double值数组和一个名为name的字符串.
在设计视图中,我的ADXExcelFunctionDeescriptor如下所示:

我通过以下代码行调用并设置函数:
var formula = string.Format(@"={0}({1};{2})", Temp.FORMULA_NAME, this.DataRangeTextBox.Text, tagCaption);
resultRange.set_Value(Type.Missing, formula);
resultRange.Formula = resultRange.Value;
这将导致异常!例外情况如下:
System.Runtime.InteropServices.COMException occurred
  HResult=-2146827284
  Message=Ausnahme von HRESULT: 0x800A03EC
  Source=""
  ErrorCode=-2146827284
  StackTrace:
       bei System.RuntimeType.ForwardCallToInvokeMember(String memberName, BindingFlags flags, Object target, Int32[] aWrapperTypes, MessageData& msgData)
       bei Microsoft.Office.Interop.Excel.Range.set_Value(Object RangeValueDataType, Object )
       bei bb.ExcelToolbar.Controls.bbControl.ApplyFormula(Object sender, EventArgs e) in c:\xx\yy\zz\bb\bb.ExcelToolbar\Controls\bbControlcs:Zeile 88.
  InnerException: 
此外,如果我没有传递tagName参数,该函数将返回一个没有任何异常或错误的结果.
var formula = string.Format(@"={0}({1})", Temp.FORMULA_NAME, this.DataRangeTextBox.Text, tagCaption);
resultRange.set_Value(Type.Missing, formula);
resultRange.Formula …有没有办法从python调用Excel加载项?在我的公司中,有几个可用的 excel 加载项,它们通常提供对某些数据库的直接访问并进行额外的计算。
直接从 python 调用这些函数的最佳方法是什么?
澄清一下,我对从 excel 访问 python 不感兴趣。我对从 python 访问 excel-addins 感兴趣。
我有一个在VBA中开发的Excel插件,部署在网络上.
插件从Oracle数据库中读取,并在新工作表中粘贴表,该工作表还将包含一个用于刷新表的按钮(三角形).
一切都很好,但我必须用密码保护代码.
当我这样做时,某些机器上会出现以下错误:
隐藏模块中的编译错误:Main.当代码与此应用程序的版本,平台或体系结构不兼容时,通常会发生此错误.
虽然它在解锁时完美编译.
在其他机器上,它需要关闭VBA密码,即使我没有在关闭事件下定义的类型.
我希望保护我的代码,而不会遇到上述问题.任何建议表示赞赏.
我使用Add-in Express在.NET中编写了一个Microsoft Excel加载项,并将其部署到大约50个不同的用户站点,所有这些站点都在Windows XP上运行Office 2003.加载项在大多数站点上都能正常工作,但在少数情况下,Excel似乎会在一段时间后禁用加载项,并且必须在禁用的项目列表中找到它才能重新启用.重新启用似乎会照顾它,至少是暂时的,尽管现在说它是否会再次发生还为时尚早.所以我试图找出Excel为什么禁用加载项,但我在这里寻找的只是一种通用的方法来找出Excel禁用加载项的原因.在我的情况下,加载项在远程站点上运行,并且我对访问故障的访问权限有限.我确实查看了事件日志并没有发现任何事情.我的加载项中也有错误记录,但没有捕获任何内容.
有什么建议?
我想在excel加载项中编写一个小日志功能,我将从许多不同的工作簿中调用它.我希望能够通过仅传递日志文本来调用它,并且日志函数本身可以处理时间戳,工作簿名称等.
但是,我不能使用ThisWorkbook或ActiveWorkbook来确定哪个工作簿负责进行调用,因为Thisworkbook将返回对加载项本身的引用,而在工作簿中运行的VBA代码可以在Excel中主动关注的工作簿中运行进行调用,但ActiveWorkbook将返回窗口中具有焦点的那个.
Application.Caller看起来像一个可能的解决方案,但这似乎仅在从单元格调用函数时才起作用,而不是从VBA调用.
我想做什么不可能?
根据> 1人,这实际上是不可能的.如果有人碰巧知道一些聪明的解决方法,请大声说出来.
office-js由于显然缺少“office-addin-debugging”,我无法启动Excel 任务窗格加载项项目。但是,我注意到该模块包含在我的开发依赖项中。我按照官方网站上的示例教程进行操作。错误消息可以在下面看到
'office-addin-debugging' is not recognized as an internal or external command,
operable program or batch file.
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! office-addin-taskpane-js@0.0.1 start:web: `office-addin-debugging start manifest.xml web`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the office-addin-taskpane-js@0.0.1 start:web script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
我正在尝试使用 Excel Javascript API 创建一个插件:
window.data = "data")。据我所知,不可能ShowTaskpane通过按钮上的多个操作来做到这一点,因为这似乎不适用于共享运行时。
我目前采取的方法是:
<FunctionFile resid="Taskpane.Url"/>
(其中<bt:Url id="Taskpane.Url" DefaultValue="https://localhost:3000/taskpane.html"/>)
<Control xsi:type="Button" id="FirstButton">
    ...
    <Action xsi:type="ExecuteFunction">
        <FunctionName>first</FunctionName>
    </Action>
</Control>
<Control xsi:type="Button" id="SecondButton">
    ...
    <Action xsi:type="ExecuteFunction">
        <FunctionName>second</FunctionName>
    </Action>
</Control>
first和second作为函数(并在taskpane.html文件中定义)。这些函数中的每一个 a) 在 Taskpane 应用程序中设置一些状态(以使其显示不同的内容,具体取决于函数调用),然后调用Office.addin.showAsTaskpane(). 代码大致如下:但是,这不会按预期工作。也就是说,它在任务窗格一侧的单独 iframe 中打开任务窗格。它看起来像这样:
当我添加Office.addin.showAsTaskpane()对share函数的调用时,它看起来像这样:
如何使用执行功能操作但在任务窗格中执行此操作?我想要一个共享的运行时,并且我希望所有的运行时都打开并位于任务窗格中。该文档使 AppDomains 似乎可以实现这一目标,但我不确定我做错了什么。
感谢您提供任何信息 - 我真的很感激!
大约一年半前,我使用 OfficeJS API 编写了一个 Excel 加载项,它一直工作到大约两周前。Excel 似乎已经进行了更新,现在我可以右键单击任务窗格并查看开发工具,而以前我无法做到这一点,并且必须运行外部 MS Edge 开发工具应用程序进行调试。这似乎是一个相对较新的问题,我似乎找不到任何有关它的信息。我尝试将 MS Edge 的跟踪预防设置减少为基本设置,如下所示:
我向 appsforoffice.microsoft.com 授予了 javascript 权限,因为 devtools 说它正在阻止此文件,特别是控制台中的https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js 。我还只包含了 microsoft.com 以及该公司的 URL 和 cdn url。我还添加了 localhost,因为这也在我的计算机本地发生。我似乎无法专门更改 Excel 中的任何阻止设置,但我的假设是 Excel 为加载项运行 Edge 实例,因为我可以在 Edge devtools 中跟踪它。
我阅读了此处找到的文章https://learn.microsoft.com/en-us/microsoft-edge/web-platform/tracking-prevention,以了解我可以更改什么,但这里的解决方案都不适合我。看起来 Edge 的设置几乎没有被读入 Excel,因此它总是阻止任何尝试从 localStorage/sessionStorage 读取数据的应用程序。
我在加载项中使用 sessionStorage 来写入数据以进行读回,并尝试了 localStorage,但我仍然遇到相同的错误。
更奇怪的是,我试图读出的数据来自我写入存储的数据,当我查看 devtools 中的存储选项卡时可以看到它的写入没有问题,因此问题仅限于读取存储。
有谁知道如果这些更改没有从 MS Edge 更新或者最近与 Excel 一起发布了一个新错误,则需要在哪里对跟踪进行更改才能使 Excel 加载项能够从存储中读取数据?
编辑:为了更清楚地了解确切的问题,我的添加基本上从单元格中读取文本和值,并根据我为用户定义的标签,这些值将在包含用户想要的标签的 HTML 元素中输出产生。例如,当用户想要一个段落时,他们可以使用 /para 和 /end para 标记单元格,并且其间的行/单元格中的任何文本和值都将在 HTML 段落标记中输出。他们还可以构建这样的 HTML 表格。在读取文本和值的过程中,这一切都会构建成一个名为previewString我存储在 sessionStorage 中的字符串,以便可以打开一个对话框窗口并previewString从 …