问题标签 [ole-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 投票
1 回答
3180 浏览

excel - 如何为 Excel 工作表的第一行启用自动筛选?

这是我生成 Excel 2007 XLSX 文件的小测试应用程序:

UnitExcel2007是导入的 Excel 2007 类型库。到目前为止,这工作正常。但是,我想像此屏幕截图中那样自动过滤标题行:自动筛选的屏幕截图 不幸的是,我通过 OLE 自动化执行此操作的所有尝试都导致了 OLE 或 Variant 异常。知道我应该如何进行吗?

注意:数据不应该被过滤——我只想要下拉按钮。

0 投票
1 回答
1108 浏览

delphi - 如何使用 OpenOffice oleautomation 选择要打印的打印机?

我正在使用 OpenOffice Writer,我希望在程序控制下打印。但是,我不希望打印到默认打印机,而是根据我生成的文档类型将某些文档定向到某些打印机。

使用Bernard Marcelly 的 OOoTools库,用于 Delphi,进行 OLE 自动化,与 OpenOffice 4.0 对话,以下代码可用于打印到当前打印机,

我无法找到 OpenOffice Writer Document Print 方法的文档或其支持的属性,我想我应该定义一些属性,如下所示:

问题 A 部分,是否有关于 Print 和所有其他类似 Document 方法接受的所有属性的完整 HTML 在线参考?B 部分是设置上述内容的属性或技术。我确实相信 OO 中的 Document 对象实现了一个名为 IXPrintable 的接口,所以我想知道如何找到 IXPrintable 的所有方法,以及该方法中的 Print 方法接受哪些参数或属性。

更新按照评论建议,我尝试使用名为“名称”的属性,如下所示:

以上不起作用,所以一定有什么遗漏或错误。我也尝试调用docObj.SetPrinter,但出现参数类型不匹配错误。

0 投票
1 回答
1379 浏览

delphi - 使用 Delphi 访问 Word 中的 Fields 集合

我有一个小方法试图枚举 Word 文档中的字段。自从我不得不做这种事情以来已经过去了很多时间,现在我不记得如何正确地做这件事了。

下面的代码使用的是 OleVariants,我已经尝试了一段时间,谷歌搜索没有找到 Delphi 解决方案。任何人都可以建议如何解决这个问题?

代码的最终目标是识别特定类型的字段并使用该信息删除该字段。

顺便说一句,我知道这段代码让 Word 处于打开状态等等。

暂时这很好,我目前主要关心的是让事情正常工作。

我也尝试将循环更改为:

但没用,告诉我“项目”不是收藏的一部分。

我已经没有想法了。

0 投票
1 回答
1182 浏览

delphi - 请求的集合成员不存在

感谢这里的某个人,我终于有了一个工作循环......几乎:)它大部分时间都可以工作,但在某些情况下,会出现这个错误。

编码:

上面代码的问题是,有时 Count 会返回 2,但是当我尝试检查第二个条目时,它会在 subject 中输出异常。

难道只是我必须做一个 Count -1 而不是 Count 吗?

0 投票
1 回答
3127 浏览

delphi - OLE 自动化:如何检查变量是否引用自动化对象

我想知道如何确定变体是否引用了 OLE 自动化对象。

我正在将一些 Excel 图表导出到 Powerpoint。

我有这个代码:

我知道,可以通过将代码的最后一行(使用 saveAs)放在 之间来完成try...except...end,但我觉得这种方法不够好。

我正在阅读关于VarIsEmpty, VarIsEmptyParam, Nothing , this question的内容,但我不确定。

0 投票
4 回答
16096 浏览

c# - 是否可以在不安装 MS Word 的情况下生成 .docx 文件?

我想使用“OLE 自动化”(或现在所谓的任何东西)来生成 Word 文档。

我假设可以以编程方式执行以下操作:

我不确定是否需要在我的系统上安装 MS Word 才能执行此操作(也许是拥有必要的 DLL)?我使用 Open Office(我喜欢它,而且它是免费的),但我认为以编程方式控制文档的创建对于 MS Word 可能比 Open Office 和/或 Libre Office 更容易/更好地记录 - 这就是为什么我强烈考虑让这个“与雷德蒙德会合”。

这个问题与这个问题切线相关

如果在这里可以使用 Google Docs,我愿意“与山景城会面”,但我对该文件格式或是否可以“自动化”等一无所知。

我需要得到一些可以转换为 PDF 文件或 DOCX 文件的东西。Open Office 可以打开 DOCX 并将文件转换为 PDF,但我不知道 Google Docs。

0 投票
1 回答
1475 浏览

delphi - 如何识别Ole对象接口?

解释我的确切情况有点困难,但我会尝试:

我正在检查一个通过后期绑定创建的 DOM 接口,并在某些时候选择一个返回接口 OleVariant 元素的范围(我肯定知道)。

我期待一个,IHTMLElement2但事实并非如此(我得到一个异常,该对象没有tagName属性)。这让我后来怀疑(尚未测试)它是一个 Node 元素(它具有nodeName属性) - 但我不想猜测,并问:

if Supports(IDispatch(v), IWhatEver1)... else if Supports(IDispatch(v), IWhatEver2)...

我不知道它支持哪个接口。我如何知道 OleVariant 接口对象的接口名称/guid?

该问题不仅特定于 DOM,例如,如果我有一个通过以下方式创建的 OleVariant:

我以后怎么知道哪个 IDispatch 在后面v

我希望这个问题很清楚。


似乎 IE11 在FEATURE_BROWSER_EMULATION = 8000用于我的应用程序时改变了它的行为 - >当您在设计模式下使用 TWebBrowser 并选择一个范围vElement(所选范围中的元素)返回为JScriptTypeInfo......我不知道为什么,我也不知道仍然如何处理这个bs,但至少我知道我有哪个接口!

这是我用来检查元素的代码:

0 投票
1 回答
1345 浏览

c++ - 推荐我一个生成打印预览和打印的解决方案

简介及相关资料:

我正在维护一个旧应用程序,我需要实现基于从数据库计算的数据生成报告的功能。用户还必须有打印文件的附加选项(用户必须能够选择打印机,并且必须能够看到打印预览)。

为了提高我得到满意答案的机会,请允许我用一个小“例子”来说明问题:

  • 用户按下按钮 -> 应用程序计算数据;// 完毕

  • 应用程序创建文件并用结果填充它;// 完毕

  • 通知用户生成报告;// 完毕

  • 用户按下另一个为打印收费的按钮;// 卡在这里!

  • 弹出打印预览和运行打印对话框的选项。 // 卡在这里

  • 用户启动打印对话框,选择打印机和应用程序打印文件;

C++该应用程序是使用 raw WinAPI( no )编码的MFC。我正在使用 Windows XP。

问题:

我能够成功使用OLE 自动化生成/保存WordExcel报告,但我无法创建与 Word 将创建的打印预览完全匹配的打印预览。

如果我使用OLE 自动化显示Excel 的打印对话框/打印预览,可能会出现以下问题:

用户可以简单地点击“关闭打印预览”,或者可以简单地关闭打印属性表(见下图)并返回到可能会破坏文档数据的文档

在此处输入图像描述

我的雇主不喜欢这样(他们没有软件工程/开发背景,所以无论我说什么最终都会成为“风中的回声”......)并且他们希望我的打印预览与打印预览完全匹配Word 生成。

因此,我需要一种为用户生成打印预览的解决方案,其方式与 Word 将创建的打印预览完全匹配。此外,用户应该只能看到它的样子,但不能从我的应用程序中打开文件。用户应该能够选择将打印文件的打印机。

与图片中的实现类似的实现就可以了。

问题:

介绍性说明:

这个问题太宽泛,无法在一篇文章中回答,所以我必须限制自己只寻求建议/一般概念/指向正确的方向。

实际问题:

我在OLE 自动化Excel / Word文件方面尽了最大努力,但正如您所见,生成打印预览存在问题,因此有以下问题:

  1. 由于这是我第一次处理此类任务,您能否推荐我处理它的正确方法(当然是一般概念)?

  2. 是否有可能解决我的打印问题(例如将WM_PRINTCLIENT消息发送到Word/Excel或类似的东西)?

评论 :

再一次,我意识到这个问题太宽泛了,所以只给我一般的概念/指针,这样如果我在某个地方卡住了,我可以发布单独的问题。

我不需要使用Word / ExcelOLE 自动化,这是我目前的选择。

如果您能推荐更好的解决方案,我将很乐意接受。我不想使用图书馆。

如果需要其他信息,请询问,我将编辑我的帖子。

0 投票
1 回答
2482 浏览

c++ - Windows 脚本宿主错误 0x800700C1 代码 800700C1

我正在阅读 Jeff Prosise “Programming Windows with MFC”一书的第 20 章“自动化”,第 2 版。有关于如何使用方法long Add(long, long)、、long Subtract(long, long)和属性创建小型自动化服务器的说明double Pi。VBScript 中还有一个脚本可以测试该服务器。当我运行该脚本时,显示了错误 0x800700c1 的消息框。

0 投票
1 回答
2140 浏览

email - Delphi 使用 Outlook 自动化阅读电子邮件

我有一个正在运行的代码,可以用来阅读电子邮件正文。问题是我想移动我阅读的邮件。例如,我在收件箱中阅读了邮件,并且想将其移动到 Outlook 中的另一个文件夹。在 searchin 之后,我可以使用 Move 命令执行此操作,但我的程序给出了错误“Array out of bounds”。例如,我在 Outlook 收件箱中有 4 封电子邮件,它只移动 2 个文件并给出此错误。我的代码有什么问题?请帮忙谢谢