问题标签 [office-automation]

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 投票
3 回答
10844 浏览

c# - 服务器上出现错误“此命令不可用,因为没有打开文档”

我使用此代码将数据发送到 Word 模板并发送到客户端。

此代码在本地运行良好且正确,但是当我发布此站点并将其放到我的服务器上时,运行时出现此错误。

此命令不可用,因为没有打开文档。说明:执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。异常详细信息:System.Runtime.InteropServices.COMException:此命令不可用,因为没有打开文档。

源错误:在执行当前 Web 请求期间产生了未处理的异常。可以使用下面的异常堆栈跟踪来识别有关异常起源和位置的信息。

为什么服务器打不开?如何解决此错误?

我使用 Windows7、VS2010、SQLServer2008、office2010,在服务器中使用 Windows Server 2008、IIS7、office2010。

我应该为服务器上的这个错误做些什么?

0 投票
2 回答
8224 浏览

excel - Excel 2010 的连接字符串?

我正在使用 OLEDB 连接到 Excel 2010。此操作所需的连接字符串是什么?

0 投票
1 回答
5753 浏览

vba - 从 Outlook 调用 Access 子程序 - 对象 _Application 的方法运行失败

当在 Outlook 中收到电子邮件时,我正在尝试在 MS Access 中运行子程序。

我正在使用 Access.Application 对象及其 Run 方法。

我收到以下错误:对象_应用程序的方法运行失败。

“测试”子程序是 Checkdb 模块中的一个空子程序(在我尝试调用实际子程序但未能成功之后)。

我正在运行 Office 2007。

0 投票
2 回答
1260 浏览

c# - 多个 InfoPath 互操作自动化实例

我正在尝试通过 Windows 服务自动化 Office InfoPath 2010 的多个并行实例。我了解不支持通过服务自动化 Office,但这是我的客户的要求。

我可以以并行方式自动化其他 Office 应用程序,但是 InfoPath 的行为不同。

我发现,无论进行多少次并行调用,都只会创建一个 INFOPATH.EXE 进程实例CreateObject("InfoPath.Application")。与此相反,可以通过类似的机制创建多个 WINWORD.EXE 实例CreateObject("Word.Application")

要重现此问题,可以使用简单的控制台应用程序。

InfoPathTest 和 WordTest 类 (VB) 在另一个项目中。

互操作类只是创建自动化对象、休眠然后退出(尽管在 Word 的情况下,我已经完成了更复杂的测试)。

运行控制台应用程序时,我可以看到(通过任务管理器)并行创建了两个 WINWORD.EXE 进程,并且只创建了一个 INFOPATH.EXE 进程。事实上,当 InfoPathTest 的第一个实例调用 ip.Quit 时,INFOPATH.EXE 进程就会终止。当 InfoPathTest 的第二个实例调用 ip.Quit 时,会引发 DCOM 超时异常 - 看起来这两个实例共享相同的底层自动化对象,并且在第一次调用 ip.Quit 后该对象不再存在。

在这个阶段,我的想法是每个用户登录只支持一个 INFOPATH.EXE。我扩展了 Windows 服务以启动两个新进程(一个名为 InfoPathTest 的控制台应用程序),每个进程都在不同的用户帐户下运行。然后,这些新进程将尝试自动化 INFOPATH.EXE

这就是有趣的地方,这确实有效,但仅在某些机器上有效,我无法弄清楚为什么会这样。

以及服务代码(在AsproLock的帮助下):

InfoPathTest.exe 进程只调用上面详述的 InfoPathTest.Test() 方法。

总之,这有效,但仅在某些机器上有效。当它失败时,实际上创建了第二个 INFOPATH.EXE 进程,但立即退出,退出代码为 0。事件日志中没有任何内容,代码中也没有任何异常。

我已经查看了很多东西来尝试区分工作/非工作机器,但我现在卡住了。

任何指针表示赞赏,特别是如果您对如何并行自动化多个 InfoPath 实例有其他想法。

0 投票
2 回答
3515 浏览

c# - 使用 Inspector 以编程方式加密 Outlook 电子邮件

我将 C# 与 Outlook 对象模型一起使用(由于许可,我无法选择赎回),并且在发送电子邮件之前以编程方式对其进行加密时遇到了困难。

我可以成功获得对据称代表 Encrypt 按钮的 CommandBarButton 的引用(根据在线示例,Id 718),但我无法以编程方式按下它。我尝试使用 CommandBarButton Execute() 方法和使用 SendKeys (不确定 sendkeys 在这种情况下是否有效)。所有 debug.writeline 语句都显示按钮处于 msoButtonUp 状态。

我已经玩了好几天了,似乎无法让它工作。任何建议将不胜感激!

0 投票
1 回答
3714 浏览

c# - 生成文档后从 Word 文档中删除控制控件

我有一个 C# 文档生成组件,它将内容插入到 Word 文档中的控制控件中,并且一切正常。

唯一的问题是在生成的文档中,内容控件仍然存在,您无法选择单独的行或文本。

我需要删除这些内容控件,并且我认为内容控件属性“在编辑内容时删除内容控件”正是我想要的,因为我的组件将更改控件内容。但是,它不起作用。

我错过了什么?

0 投票
2 回答
4353 浏览

c#-4.0 - 在 Word Addin throws Collection 中动态添加 RibbonButtons 是只读的

我对 Word 插件相当陌生,并尝试添加功能区组。对于每个 RibbonGroup,我动态添加 RibbonMenu,然后将 RibbonButtons 添加到组内的菜单中。

我完成了艰苦的工作,看起来还不错,但是每当我访问任何收藏时

例如:group1.Items.add(new RibbonButton()); 它让我说 Collection 是只读的。

但是当我调试 Collection 的 IsReadOnly 标志设置为 False 时,这清楚地表明 Collection 不是只读的?

我错过了什么。

0 投票
1 回答
189 浏览

outlook - IsSearchSynchronous 在 Outlook 中失败

我正在使用 Outlook 自动化来查找日历中的项目。为此,我使用 IsSearchSynchronous() 方法来查看是否必须等待 AdvancedSearchComplete 事件。顺便说一句,它是否曾经同步???

无论如何,如果我有 Outlook 运行,我对这个调用没有任何问题。但如果它没有运行 - 调用失败

EXCEPINFO 包含:

有什么建议么?这是我的测试用例:

0 投票
1 回答
1527 浏览

ms-word - 在 C# 中使用 Word 自动化我想更改下一个保存按钮将引用的路径

我有一个在 Word 中创建和打开文档的应用程序。用户可以修改文档然后再次保存,但我不希望通过 Word 提示用户将其保存在加载它的位置 - 我想设置文档的保存路径(如果有的话)到另一条路径。

我没有使用自动化来显示“另存为”对话框 - 这是将按下的 Word“保存”按钮,因此我想设置某种全局默认“另存为”位置。

0 投票
1 回答
14105 浏览

.net - 使用高级选项打印(纸盘选择、双面打印、装订)

我们有一个管理打印文件的项目。起初我想知道为什么不能在一个地方设置打印选项。例如,第一页和其他页面的打印机托盘选择可以使用MS Word 自动化完成:

在上面的代码中,打印机托盘被指定为整数,因为某些打印机没有托盘的标准值(我们在 HP 遇到了这个问题 -这里描述了托盘代码)。所以我们首先检索打印机有哪些托盘,使用代码:

这段代码没有问题。

但是这里无法指定双面打印和装订选项。可以使用驱动程序函数 OpenPrinter 和 SetPrinter来完成双面打印,就像这里描述的一样,微软也在这个论坛帖子中推荐。 主食完全不清楚,如果有人知道如何实现这一点,请告诉我。使用 Stapling 枚举,就像在这篇 MSDN 文章中一样,是没有用的,因为它需要自定义渲染文档才能打印。

我描述了情况以及部分是如何实现的。这在我们的环境中运行良好:Windows Server 2008 R2、MS Office 2010 x32、打印机 HP LaserJet P2055 和 Ricoh Nashuatec DSm635。使用原生和通用 PCL6/PCL5e 驱动程序进行测试:双面打印和托盘选择按预期工作。

但是在将应用程序部署到客户端后,打印机(HP LaserJet 4250 和 Ricoh Aficio MP C7501)总是从默认托盘进行打印,并且没有双面打印。尝试了几个不同的驱动程序,结果完全相同。

在这两种环境中,打印机都是网络打印机。因此,为了使他们应用双面设置,使用打印机驱动程序,我们需要在服务器上安装本地驱动程序并制作本地打印机,正如我的微软在此支持论坛线程上推荐的那样。

尽管使用的环境和打印机看起来非常相似,但其中一个可以工作,而另一个则不能。任何帮助将不胜感激。