首页 > 解决方案 > 将对象变量从单元格传递到(Excel)VBA

问题描述

我有一个 VBA 脚本,可以记录 Outlook 中选定文件夹中的未读电子邮件。目前,帐户和文件夹名称已硬编码到脚本中,但我想通过其中一张 excel 表对其进行配置。

目前变量设置在这里:

Set inboxselect = GetObject(, "Outlook.Application").GetNameSpace("MAPI").Folders("mailbox@companyname.com").Folders("Inbox").Folders("SubInbox")

理想情况下,我想要一张名为 Config 的表格,其中包含以下数据:

Account: mailbox@companyname.com
Folder:  Inbox
Subfolder: Subfolder

然后在 VBA 脚本中引用它,但我无法理解如何将单元格引用传递给变量。我试过了:

inboxselect = GetObject(, "Outlook.Application").GetNameSpace("MAPI").Folders(Worksheets("Config").Range("B1")).Folders("Inbox").Folders("SubInbox") 

但它给出了一个类型不匹配的错误。

有没有人能够就如何做到这一点提供任何启示?

标签: excelvba

解决方案


您尝试传递给 GetObject() 函数的变量是字符串。

您可以在 Excel 工作表上使用命名单元格,例如,如果单元格 A1 包含该单元格帐户的“mailbox@company.com”名称(使用名称管理器或仅覆盖窗口左上角的单元格引用。

在 vba 中,您可以使用

Dim sAccount as String
sAccount = Range("Account").Value
Set inboxselect = GetObject(, "Outlook.Application").GetNameSpace("MAPI").Folders(sAccount).Folders("Inbox").Folders("SubInbox")

其他变量也是如此。


推荐阅读