Excel 2007 VBA在对象变量

时间:2017-06-14 16:32:47

标签: excel vba excel-vba outlook excel-2007

下午好![/ p>

我环顾四周,但我找不到任何可以解决我特定问题的事情,所以我会尽力解释。

功能

Excel 2007,VBA,Outlook 2007

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

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

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

提前致谢。

1 个答案:

答案 0 :(得分:1)

似乎过于复杂的解决方案。没有人可以分享他们的VBA。

在提供的示例中

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

你可以直接在VBA中使用它

Set mailboxFolder = outNamespace.GetDefaultFolder(olFolderInbox).Parent

您现在拥有通用方式的“邮箱 - 一些家伙”文件夹,无需指定“有些人”。

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