问题标签 [vsto]

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 投票
2 回答
641 浏览

c# - C# 技术 - 通过字符串获取常量值

有没有什么好方法可以将“xlSum”、“xlAverage”和“xlCount”等字符串转换为它们在 Microsoft.Office.Interop.Excel.XlConsolidationFunction 下的值?

我想反射会很慢(如果可能的话)。这些常数值大约有 10 个。如果可能的话,我试图避免使用大的 switch 语句。

0 投票
1 回答
1679 浏览

.net - 疑难解答:通过 Word 代码隐藏调用自定义代码时找不到引用的非托管 dll

语境:

  1. 我有一个 WPF 应用程序,它使用 D:\WordAutomation\MyApp_Source\Executables\MyApp 文件夹中的某些非托管 DLL。我可以双击 exe 并运行一切。
  2. 接下来我有一个 Word 2007 代码隐藏项目,它引用上述文件夹中的相关托管 DLL 并尝试做同样的事情.. 调出 App UI。经过充分的'macheting'后,我的用户界面就会显示出来。但是现在有一个用户操作强制加载一个非托管 dll,该 dll 与 FileNotFoundException 一致地爆炸(没有帮助/指示哪个文件丢失)

我在问题行放置了一个断点,清除了输出窗口,按 F10,在我运行该行时比较了输出(将对象添加到 ObservableCollection,其 CollectionChanged 处理程序具有加载非托管片段的代码)

案例1:双击EXE..完美运行(略剪)

案例 2:运行同一行,但从 Word 代码隐藏 .cs 文件中启动

我试过了

  • 将非托管 DLL 添加到与(word doc+VSTO dll)相同的文件夹中
  • 将文件夹添加到PATH 环境变量。还是一样。
  • 任何我能想到的......在过去的几天里

我注意到 Word 似乎正在将托管 ref 程序集复制到如下片段所示的位置。这可能是一个调查线。但是为什么 word 这样做以及它如何解决非托管 DLL .. 我不知道。同样在第一个片段中,有一些从 WinSXS 路径加载的 DLL,这也可能是另一个线索。

终于优雅地关闭了……救命!!

0 投票
1 回答
693 浏览

outlook - Outlook(2003) msg​​file 扩展名的注册表值代表什么?

如果要打开扩展名为 .msg 的 msg 电子邮件文件,Outlook 2003 将使用一些参数启动。因此,您可以找到以下注册表项:

第一个指向带有参数 /f "%1" 的 "outlook.exe"。这将使用打开邮件的信息启动 Outlook。但是“命令”键具有以下值:

谁能告诉我这到底有什么用?

我正在编写一个需要修改这些键的 vsto Outlook 插件。如果我修改“标准”键,Outlook 将正常启动,而无需使用我更改的键。如果我还修改“命令”键 Outlook 甚至不再启动。

只有当我删除“命令”键时,一切才能按预期正常工作。但是,如果不知道密钥的用途,这不可能是解决方案。

0 投票
3 回答
3991 浏览

vsto - VSTO“值不在预期范围内。”

我在 VS 中编译我的 VSTO(Visual Studio Tools for Office)项目时出错。

它说“价值不在预期范围内”。“安装过程中出现错误”

0 投票
2 回答
8188 浏览

vba - Excel VBA 或 VSTO - 如何循环数据透视表上的字段?

这是一些示例 VBA 代码:

第三行不完整/损坏。访问数据透视表中所有字段集合的正确方法是什么?我需要能够遍历它们。实际编码是在 C# VSTO 项目中完成的。

0 投票
3 回答
1422 浏览

outlook - 用于会议的 Outlook VSTO 插件

我们为 Outlook 会议创建了一个 VSTO 插件。

作为其中的一部分,我们捕获事件SendEvent的消息FormRegionShowing

然后该方法_apptEvents_Send测试几个属性并在适当的地方退出。

我们遇到的问题是某些用户的消息被发送了两次。一次是在发送会议时,第二次是在用户重新打开 Outlook 时。

我一直在寻找内存泄漏,认为某些东西可能没有被正确处理,并在所有 finally 调用中添加了显式对象处理,以尝试确保资源得到管理,但仍然在整个组织中不一致地获得功能。即我在开发过程中从未遇到过问题,在测试期间也没有其他开发人员遇到过。所有用户都是最新的框架 (3.5 SP1) 和 Outlook 修补程序。

有没有人对可能导致这种情况的原因有任何想法?

任何人可能有的任何想法都将不胜感激。

0 投票
2 回答
450 浏览

vb.net - 如何导致我的 VSTO 2005 SE Outlook 插件崩溃以使其被禁用?

出于测试目的,我需要禁用 Outlook 2003 插件 (vb.net),以便只能通过帮助菜单或从注册表中删除弹性键来重新激活它。

我试图通过在启动事件处理程序期间创建一个未处理的无效强制转换异常来实现这一点,但这无济于事。Outlook 只说它无法加载插件,但它没有禁用它。

如何创建禁用插件的崩溃?

0 投票
3 回答
4034 浏览

excel - 如何从 Excel 中的公式调用 VSTO 函数?

我希望能够从 Excel 工作表中的单元格调用 VSTO 插件公开的函数。更具体地说,如果我有一个返回“bar”的 VSTO 函数 Foo(),我希望能够在 A1 中编写 =Foo(),其计算结果为“bar”。

这可能吗?我需要采取哪些关键步骤?

能够利用托管代码和 VS08 IDE 进行 excel 开发的前景非常有吸引力。我认为 VSTO 可以让我轻松做到这一点,但我不再确定。我误解了这里的架构吗?文档有点粗制滥造。

0 投票
0 回答
1363 浏览

.net - 疑难解答:MS-Word VSTO 加载项中托管 dll 的程序集解析

我有一个 MS-Word VSTO 文档,其中包含一个名为WordDocument1.dll

项目文件夹 D:\Work\Seven\WordAutomation\ContentControls\WordDocument1\bin\Debug
我已将一些自定义代码复制到该MyAppExecs文件夹​​下的文件夹中。DLL 具有指定的专用 bin 路径,以便MyAppExecs可以访问其中的代码。

所以在启动时,我在应该弹出一个对话框Starter.DLLMyAppExecs文件夹中加载一个,它确实如此。但是,单击对话框上的按钮需要加载X.DLL,它具有非托管依赖项。(X.DLL有一些托管的 C++,有一些指定为附加依赖项的库。X 是无符号的,是一个私有程序集,不在 GAC 中)

但是,X.DLL 无法解析。从该fuslogvw工具中,我看到它正在尝试将这个 DLL 加载到 Office12 文件夹中并且失败。我也ProcMon运行过,但是,它没有显示任何未找到的非托管依赖文件错误。

  • 如何让 Word Executable 看到其中存在的 X.Dll D: \Work\Seven\WordAutomation\ContentControls\WordDocument1\bin\Debug

此外,它似乎很奇怪,它可以加载Starter.DLL和大量其他{ProjFolder}\MyAppExecs文件而没有任何问题,但看不到{ProjFolder}.

这是fuslogvw输出:

更新#1:解决了症状,但无法确定问题的原因。我通过 Assembly.load 手动加载了程序集。但是,上面的程序集解析错误一直被记录下来,但它不起作用。最后,在绝望的情况下,我将我的 word-project DLL 复制到{ProjFolder}\MyAppExecs这样所有的 DLL 都在一个文件夹中并且它开始工作了。

当我运行时,看起来一些非托管依赖项X.dll没有得到解决,{ProjFolder}...但是ProcMon没有显示任何迹象。还将 PATH 变量更新为 include {ProjFolder}\MyAppExecs,但没​​有运气。

因此,将它们全部复制到一个文件夹中是可行的。X.dll不是我的代码,所以我无法进一步调查。

0 投票
7 回答
32699 浏览

c# - Excel 互操作 - 效率和性能

我想知道我能做些什么来提高 Excel 自动化的性能,因为如果你在工作表中有很多事情,它可能会很慢......

以下是我自己发现的一些:

  • ExcelApp.ScreenUpdating = false-- 关闭屏幕重绘

  • ExcelApp.Calculation = Excel.XlCalculation.xlCalculationManual-- 关闭计算引擎,以便 Excel 在单元格值更改时不会自动重新计算(完成后重新打开)

  • 减少调用,Worksheet.Cells.Item(row, col)并且Worksheet.Range——我不得不轮询数百个单元来找到我需要的单元。实施一些单元位置缓存,将执行时间从约 40 秒减少到约 5 秒。

什么样的互操作调用会严重影响性能并且应该避免?您还能做些什么来避免进行不必要的处理?