COM 对象的完整方法列表

Full list of methods for COM objects

我想知道哪些函数可以与 RDCOMClient 对象一起使用。

例如,要创建我们可以使用的电子邮件

OutApp <- COMCreate("Outlook.Application")
# create an email 
outMail = OutApp$CreateItem(0)

连同 outMail[["subject"]]outMail[["HTMLbody"]]outMail[["Attachments"]]$Add(filepath)

但是我怎样才能得到一个完整的列表呢?

RDCOMClient doc 已过时,getFuncs()getElements() 等列出的功能在软件包中不再可用。使用 names() 尝试找出引擎盖下的内容没有给我任何结果,并且

install.packages("remotes")
remotes::install_github("omegahat/SWinTypeLibs")

也报错。知道如何检查 Outlook 中的对象吗?

我不确定在 R 中有什么方法可以做到这一点,但是你应该可以在 中做到这一点。

我还在学习,但是这个至少得到了一个对象的所有属性和方法:


$ol = New-Object -ComObject Outlook.Application
$new_item = $ol.CreateItem(0)
$new_item | Get-Member

  TypeName: System.__ComObject#{...}

Name                    MemberType     Definition
----                    ----------     --------

HTMLBody                Property      string HTMLBody () {get} {set}
Subject                 Property      string Subject () {get} {set}
Attachments             Property      Attachments Attachments() {get}

还有很多,但我实际上是从我的另一台安装了 Outlook 的计算机上转录的。 Get-Member 不仅仅适用于应用程序对象,因此您还可以查看 Outlook 对象本身或其他 COMS 可访问的成员和属性。

VBA 资源似乎也有帮助:

https://docs.microsoft.com/en-us/office/vba/api/outlook.application.createitem

Name Value Description
olAppointmentItem 1 An AppointmentItem object.
olContactItem 2 A ContactItem object.
olDistributionListItem 7 A DistListItem object.
olJournalItem 4 A JournalItem object.
.... ... ...

最重要的是:

https://docs.microsoft.com/en-us/office/vba/api/outlook.mailitem

PROPERTIES
---------
Actions
AlternateRecipientAllowed
Application
Attachments
AutoForwarded
AutoResolvedWinner
BCC
BillingInformation
Body
BodyFormat
Categories
CC
...

如果您安装了 Outlook、Excel 或 Word,那么您可以执行以下操作...

  1. 按 F11 进入 Visual Basic 应用程序 (VBA) 集成开发环境 (IDE)。
  2. 在菜单栏上转到“工具”->“引用”以弹出“引用”对话框。
  3. 在“引用”对话框的“可用引用”复选框列表中,向下翻页直到找到 Microsoft Outlook 库(或类似库),找到后选中该复选框,然后按“确定”确认 selection 和关闭对话框。这会将对 Outlook 类型库的引用添加到当前项目。
  4. 引用 Outlook 类型库(参见步骤 (3))后,现在可以按 F2 显示“对象浏览器”对话框。
  5. 在“对象浏览器”对话框中,select 左上角的下拉列表可能会显示 <All Libraries> 。更改下拉列表,使其显示 Outlook,这会将对象浏览器的范围限定为 Outlook 类型库。
  6. 您现在可以浏览 Outlook 类型库中的所有对象。 Select class 在左侧的 类 窗格中,class 的方法将出现在右侧。

尽情享受吧!

这对于 Outlook 来说可以很容易地完成,因为每个 Outlook 对象都有一个 class 属性.

如果在 R 中有给定的 COMIDispatch class 对象,并且它是对 Outlook 对象的引用,则可以使用函数 class() 检索其 class 然后检查 OlObjectClass enumeration 以了解 class 具有哪些属性和方法。

一个简短的分步示例:

> # initialise the app
> Outlook_App <- RDCOMClient::COMCreate("Outlook.Application")

为了找出我们可以用那个对象做什么,我们需要查找参考。为此,我们需要它的 class.

> Outlook_App$class()
[1] 0

所以我们在 OlObjectClass enumeration 中查找 0 并发现它是一个 Application 对象。它的属性和方法在OlObjectClass enumeration中引用的link中列出:Application.

在这里,我们可以访问方法和属性。对于这些事件,我们需要现在不存在的包 RDCOMEvents and/or RDCOMServer.

但我们可以尝试getNameSpace("MAPI")方法来访问其他一些功能。我们知道我们必须使用上面方法描述中的“MAPI”参数link。

> Outlook_Namespace <- Outlook_App$getNameSpace("MAPI")

现在,Namepace 对象有另一个 class,我们可以为它查找对象定义等等。

不幸的是,这对 Excel 对象不起作用,因为它们没有 class 属性,如果有人知道解决方案,请与我联系。