Excel 2007 VBA 在对象变量中使用字符串变量值

Excel 2007 VBA use string variable value in object variable

大家下午好!

我环顾四周,但没有找到任何解决我的特定问题的东西,所以我会尽力解释。

规格:

Excel 2007,VBA,展望 2007

好的,所以我一直在修改我创建的一些脚本,以便在 Excel / Avaya CMS 中自动化我们的报告。在过去的几年里,我一直是唯一一个人在做我们的报告,所以从来没有必要在其他人的电脑上进行设置。但是,情况正在发生变化,我正在更新脚本/培训其他人使用它们。目前,当我将我的脚本放在他们的计算机上时,我必须进入 VBA 代码并手动将每个引用设置为他们自己的相对文件夹路径/outlook 文件夹路径。足够轻松,除非我对脚本进行任何类型的更改,并且必须在每台计算机上再次完成整个过程。

所以这是我的解决方案:在自动报告工作簿上创建一个配置工作表,在该配置工作表上存储文件路径,并在代码中简单地使用变量来引用配置工作表。这应该像在新计算机上从配置中设置一次变量一样简单,而无需触及任何代码行。

问题: 午夜时分,有数据从另一个办公室通过电子邮件发送给我们。我们在这个办公室使用 Outlook,所以我只是让它转到脚本中指定的文件夹,下载附件,然后将下载的数据用于报告。由于每个人都有自己的outlook文件夹,因此每个用户在outlook里面的路径都不一样。由于 VBA 正在访问工作表以从单元格中获取配置信息,因此它将 Outlook 文件夹的路径作为字符串值返回。但是,outlook 文件夹变量是对象类型,所以它不允许我使用字符串变量作为它的值,即使字符串本身是对象需要的实际值(只是不是字符串)。那么是否可以将字符串值转换为Object变量中可以使用的值呢?

工作表配置单元格值 (B5)- 字符串值

outNamespace.Folders("Mailbox - Some Guy").Folders("Reports").Folders("ImportantData")

代码:

'Config tab

Dim serverConfig As Worksheet
Set serverConfig = Sheets("CONFIG")

Dim dirOutlookData As String    
dirOutlookData = serverConfig.Range("B5").Value

Dim outFolder As Object
Set outFolder = dirOutlookData 

有什么想法吗?由于为 dirOutlookData 返回的字符串是对象变量值所需的值,我如何转换字符串变量的值以便以这种方式使用它?

提前致谢。

这个解决方案似乎太复杂了。没有人可以分享他们的 VBA.

在提供的示例中

outNamespace.Folders("Mailbox - Some Guy").Folders("Reports").Folders("ImportantData"

您可以直接在 VBA

中使用它
Set mailboxFolder = outNamespace.GetDefaultFolder(olFolderInbox).Parent

您现在以通用方式拥有 "Mailbox - Some Guy" 文件夹,无需指定 "Some Guy"。

Set myFolder = mailboxFolder.Folders("Reports").Folders("ImportantData")