问题标签 [comaddin]

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.

0 投票
1 回答
1109 浏览

excel - 如何使用 Installshield 2008 为 Excel 创建 VSTO (COM) 插件的 InstallShield 设置

我在 Excel 2010 的 Visual Studio Tools for Office (VSTO) 中创建了一个 com 插件,我想为最终用户创建一个 exe 安装文件。我已经用谷歌搜索了这个问题,但我能找到的只是使用 Visual Studio 的解决方案。我想使用 Installshield 程序创建设置。

0 投票
1 回答
648 浏览

c# - Outlook.Store.GetDefaultFolder Outlook 在新的 .pst 文件中创建奇怪的文件夹

创建新的 .pst 文件后,仅使用新的 Outlook.Store(.pst) 创建了 2 个文件夹。

示例 1:

新的.pst

关闭 Outlook 并重新打开后,会创建多个文件夹。有些是标准文件夹,例如回收站、RSSFeed 等。但有些很奇怪,名字也很奇怪(带有奇怪的字符)。

示例 2:

新文件夹

当我调试 COM 插件的例程时,我发现在插件的“启动”事件中,有一个代码可以检查 Outlook.Store 的默认文件夹。

使用 Outlook.Store 对象的“GetDefaultFolder”方法。Microsoft 建议使用此方法来识别 Outlook.Store 的默认文件夹。

执行此方法时,根据参数,它会在 Outlook.Store 中创建文件夹。我创建了一个简单的 COM 插件来举例说明:

在启动事件中,我这样做了:

我加载新的 .pst 文件 (Outlook.Store) 并获取所有默认文件夹。但在少数情况下会添加新文件夹。

这段代码的日志是:

日志

前任

qtd:1 文件夹种类:olFolderCalendar qtd:2

qtd:2 文件夹类型:olFolderConflicts qtd:2

qtd:2 文件夹类型:olFolderContacts qtd:3

qtd:3 文件夹种类:olFolderDeletedItems qtd:3

qtd:3 文件夹类型:olFolderDrafts qtd:4

qtd:4 文件夹类型:olFolderInbox qtd:4

qtd:4 文件夹类型:olFolderJournal qtd:5

qtd:5 文件夹种类:olFolderJunk qtd:6

qtd:6 文件夹类型:olFolderLocalFailures qtd:6

qtd:6 文件夹类型:olFolderManagedEmail qtd:6

qtd:6 文件夹种类:olFolderNotes qtd:7

qtd:7 文件夹类型:olFolderOutbox qtd:8

qtd:8 文件夹类型:olFolderRssFeeds qtd:9

qtd:9 文件夹类型:olFolderSentMail qtd:9

qtd:9 文件夹类型:olFolderServerFailures qtd:9

qtd:9 文件夹类型:olFolderSuggestedContacts qtd:9

qtd:9 文件夹类型:olFolderSyncIssues qtd:9

qtd:9 文件夹种类:olFolderTasks qtd:10

qtd:10 文件夹种类:olFolderToDo qtd:10

qtd:10 文件夹类型:olPublicFoldersAllPublicFolders qtd:10

问题

Outlook 创建的这个奇怪的文件夹是什么?为什么 Outlook.Store.GetDefaultFolder 方法会创建文件夹?是否可以使用另一种方法来返回与 GetDefaultFolder 相同的信息但不创建文件夹?

0 投票
1 回答
50 浏览

ms-office - 如何从 Visual Studio Ultimate 发布 Outlook Com 加载项

我已经查看了几个关于如何安装 Com 插件的文档,但我仍然遇到测试问题。我使用 Visual Studio Ultimate 2010 创建了一个加载项。我发布了加载项,然后运行 ​​Outlook 的安装程序。当我查看 COM 加载项列表时,我看到了已安装的加载项,但尽管它是一个功能区实用程序,但我似乎无法找到它来添加到我的功能区中。我错过了什么吗?一位不再和我们在一起的老同事制作了一个类似的插件,当我想要自定义我的功能区时,我可以看到他创建的按钮作为添加到其他功能区选项卡的选项,但我仍然找不到我的。

更新:这是功能区 xml

0 投票
2 回答
795 浏览

ms-word - 事件顺序颠倒了“Ribbon_Load”和“ThisAddin_Startup”字 VSTO 外接程序。(从 8201.2025 开始构建)

从 Build 8201.2025 开始,在 Word 中加载带有功能区的 VSTO 插件时,事件顺序发生了意外更改。

  • 使用 Office 版本 16.0.8067.2115 或更早版本。加载插件时,会观察到以下事件顺序(一直如此)。

Ribbon_Load 事件

ThisAddin_Startup 事件

  • 使用 Office 版本 8201.2025、8201.2064 或 8201.2075 或更高版本时,事件顺序会颠倒,这是一个意外的重大更改。

ThisAddin_Startup 事件

Ribbon_Load 事件

  • 我使用可视化设计器功能区创建了一个简单的 VSTO 插件来演示该问题。

>

  • 16.0.8067.2115 32 位的调试输出

    • [7772] 调用 Ribbon1_Load 事件。

    • [7772] 调用了 ThisAddin_Startup

    • [7772] 功能区已成功捕获。

  • 16.0.8201.2075 32 位的调试输出

    • [13556] 调用了 ThisAddin_Startup
    • [13556] MyRibbon 什么都不是 - 功能区未被捕获。
    • [13556] 调用 Ribbon1_Load 事件

我已将其发布在Microsoft 支持论坛上,但他们已停止响应,并且自从将此版本发布到当前办公频道后,我需要开发社区的帮助。

有没有人找到成功的解决方法?这种时间变化给我们的初始化方式带来了很多问题。在他们调查此错误之前,Microsoft 支持人员最好提供解决方案或解决方法。

0 投票
3 回答
3291 浏览

wix - 当启动应用程序触发重复、无休止的 Windows Installer 自我修复时,我该怎么办?

Windows Installer 自我修复可能会给开发人员系统管理员最终用户带来问题。如果您的 MSI 经验有限,则可能很难找到解决方案。

这是一个问答式的答案,旨在作为解决自我修复问题的清单。以下是一些常见的问题场景:

  • 每当您在工作站上启动应用程序时,可能会发生重复的 Windows Installer 自我修复。如何解决这个问题,或者如何禁用组件以使其不再发生?
  • 可能会部署 WiX 安装程序,并且每当您尝试启动应用程序时,您都会看到重复的 Windows 安装程序自我修复。
  • 在启用或安装 MS Office 插件时,您会在一个或多个 MS Office 应用程序的应用程序启动时体验到持续的 Windows Installer 自我修复。
  • 在 VB6 或 VBA 中处理遗留解决方案时,当您启动主要的开发人员 IDE 时,会针对不相关的产品进行自我修复。
  • 在 Outlook、Excel 或 Word 或类似应用程序中打开表单时,会针对其他供应商的不相关产品启动自我修复。

关键字:Windows Installer 意外启动。MSI 显示异常。Windows Installer 每次都会出现。打开应用程序启动 Windows 安装程序。Windows 安装程序自我修复。包裹如何自我修复。MSI 自我修复最佳实践。Windows 安装程序修复。自我修复。禁用 Windows 安装程序。Windows Installer 反复运行。应用程序快捷方式改为启动安装程序。Windows 安装程序意外出现。

0 投票
4 回答
46103 浏览

excel - Excel COM add 在启动期间未加载,必须手动添加

Excel COM 插件在启动期间未加载,每次我必须手动添加它。检查File > OPtions > Add-ins > Manage -> COM addins后,我看到“加载项”处于“未加载”状态。不知道如何让它在启动时自动加载。

在此处输入图像描述

0 投票
1 回答
647 浏览

ms-office - 显示或隐藏 VSTO 插件功能区

如果使用特定参数启动 Office 应用程序,我的目标是简单地提供我的插件。

不幸的是,我找不到任何东西可以帮助我做到这一点。我尝试使用 Office Application Load Addin 开关/lc:Addin.dll,但没有成功。我接受的一个选项是在希望启动插件时创建所有 Office 插件注册表项,但这似乎非常笨拙并且开销很大。此外,对我来说,交易破坏者需要注册表创建提升权限才能初始化插件。

我决定让我的插件在启动时不做任何事情,除非存在某个环境变量。

为了做到这一点,我需要将功能区默认设置为不可见,并在发现 env 变量时显示功能区。或者相反,默认情况下功能区可见,并在发现 env 变量时隐藏功能区。

我尝试过的事情

  • 设置功能区的选项卡Globals.Ribbons.MyRibbon.MyTab.visible = false
  • 使功能区无效Globals.Ribbons.MyRibbon.RibbbonUi.Invalidate()
  • 将 visible 设置为 false 后使选项卡无效Globals.Ribbons.MyRibbon.RibbbonUi.InvalidateControl(tabCtrlId)

尝试的事情不包括在某些情况下尝试仅加载插件的几十件事。

0 投票
2 回答
106 浏览

c# - 带有可选参数的 C# 编写的 VBA 函数(COM 插件)

我正在开发一些 VBA COM 插件和 Excel 插件,它们的核心代码是用 C# 编写的。我想为函数设置一个可选参数,我知道这对 C# 和 VBA 甚至 Excel WorksheetFunction 都是合法的。但我发现最后只有 Excel 函数运行良好,但 VBA 函数在库已在 COM 插件和 Excel 插件中注册后总是说类型不匹配。

这是一个简单的例子:在 C# 中我们有一些函数叫做

在 Excel 电子表格中,我可以成功调用

或者

两者都给出了正确的结果。但是在VBA中,以下是成功的,

很好,虽然

因“类型不匹配”而失败。

任何人都可以帮助解决这个问题吗?

///////////////////////////////////////// /////////////////////// 2018 年 8 月 10 日更新

请查看简化的示例代码:在“MyLibraryExcel.cs”中,我有

在“MyLibraryVBA.cs”中,我有

构建项目后,两个库都已注册。在 Excel 电子表格中,我想调用

预计返回 5,并调用

预计将返回 2。

在 VBA 宏中,我有一些代码

预计也将获得 5 和 2。

有趣的是,如果我运行 Excel 电子表格的两个函数(单击单元格并按 Enter),两者都工作正常,然后运行 ​​VBA 的两个函数,只有第一个工作,第二个失败,“键入不匹配”。但是,如果我先运行 VBA,两个 test() 都可以正常工作,然后运行 ​​Excel 电子表格的两个函数,只有第一个可以工作,第二个会显示 #Value。

0 投票
0 回答
543 浏览

vb.net - Excel 数据验证损坏工作表(复制时?)

编辑:

我进一步研究了这个问题,现在有一个最小的文件,我可以在其中重现错误/错误。所有加载项都已停用,我只使用 4 行 VBA 代码:

该文件有 2 张表格,上面有格式、数据验证、大纲(3 个级别)和一些数据。

我做什么来破坏文件:

  • 打开文件
  • 在大纲级别 2 上单击 3 次(--> 隐藏一些行)
  • 在大纲级别 3 上单击 3 次(--> 取消隐藏行)
  • 双击单元格以通过 VBA 代码复制两行
  • 关闭文件
  • 重复直到文件损坏(有时需要 10 次或更多循环,有时文件在 1 次循环后损坏)

文件中损坏的工作表中没有任何代码,并且在这些循环中未激活。这是损坏数据验证的前后对比:

腐败前:

腐败后:

我仍然不知道为什么会这样。如果有人有同样的问题或知道解决方法,这样腐败就不会发生,那将会很有趣。(我尝试了明显的 Application.Screenupdating,Application.Wait,...)

编辑结束---

不幸的是,我不能说这个问题是什么时候发生的,因为我只得到了损坏的工作簿。

我们在 VB.net 中为 Excel 编写了一个 COM-AddIn,它可以执行各种操作(即以特定结构复制单元格和工作表、与 SQL-DB 的数据连接、保存工作簿......)

现在,我从 AddIn 的用户那里获得了一些已损坏的工作簿。问题是用户正在处理文件并且没有问题。只有在保存、关闭和重新打开文件后,Excel 才会显示是否应该修复文件的问题。根据文件类型(我们使用 *.xlsx 和 *.xlsb)Excel 会“修复”文件并从 1 张纸上删除所有格式 - 在 *.xlsb 中它根本不会修复和打开。

在浏览了 xml-Sheet 文件后,我发现损坏发生在 dataValidation-Tags 中。不是在一个特定的数据验证中,有时在一个中,有时在另一个中。

损坏的 dataValidation-tags 如下所示:

修复数据验证或文件不是问题。到目前为止,我可以很好地恢复我的工作簿。我的主要问题是我找不到任何线索来解决这个问题。

在工作表上发生的大多数操作是复制和插入(而不是粘贴)整行。在有时会损坏的一张纸上,只有“复制自”,没有粘贴或插入。似乎文件的一般性能也会影响问题发生的频率。

由于我无法提供发生这种损坏的任何代码,因此我不希望在这里找到解决方案,但也许有人遇到了类似的问题并且有一个提示,可以告诉我正确的方向。

附加信息:问题发生在不同的机器上。我没有设法重现腐败过程。据我所知,该问题仅发生在 Excel 2016 上,但我不能排除早期版本同样会损坏文件。我检查了(至少在某些机器上)Office 和 Windows 的所有更新都已安装。数据验证中的公式(方式)少于 255 个字符。在损坏的工作表上,没有与数据库的数据连接。

任何想法或提示表示赞赏!

0 投票
0 回答
76 浏览

excel - Workbooks.Open() 上的 Excel 加载项问题卡在 Excel 主屏幕上

以前,此用于打开和激活(将工作簿置于前面)的代码适用于 Microsoft Office 的其他版本,但 Microsoft 的最新版本(16.0.11126.20234)似乎在打开现有 Excel 工作簿时出现问题。

问题是在启动 excel 并在工作簿上使用“打开”方法时:

  1. Excel 应用程序启动

  2. 窗口顶部的标题更改为您尝试打开的工作簿名称,但窗口的主体仍然是默认的 Excel 主屏幕(主页、选项、最近的工作簿、模板)

  3. 在初始屏幕上选择选项或任何其他项目会导致初始屏幕关闭并显示要打开的工作簿

我尝试删除任何现有代码,并仅使用 Microsoft 文档提供的用于加载和显示工作簿的代码创建了一个新的 AddIn 解决方案。

我知道有一些解决方法,包括:

  • 您可以直接从 excel 禁用开始屏幕。
  • 您可以单击选项然后退出它,这将打开工作表
  • 您可以打开 excel,它会正常工作

但我正在为我的 AddIn 启动时寻找一种编程解决方案/解决方法,并查看其他人是否在 Microsoft Office 的最新版本中遇到了同样的问题。