【发布时间】:2017-11-16 22:12:36
【问题描述】:
大家下午好!
我环顾四周,但没有找到任何可以解决我的特定问题的东西,所以我会尽力解释。
规格:
Excel 2007、VBA、Outlook 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 返回的字符串是对象变量值所需的值,我如何转换字符串变量中的值以便以这种方式使用它?
提前致谢。
【问题讨论】:
-
看看msdn.microsoft.com/en-us/library/office/ff868990.aspx 另外 - SaveSetting 和 GetSetting 可能会对您有所帮助。如果您使用注册表来存储您的设置,它会继续存在。
-
好主意!这些文章是针对 2010+ 的,但我会朝那个方向看,看看你的其他建议。我正在吃午饭,所以我无法测试,但我会跟进并让你知道情况如何。再次感谢山姆。
-
即使在旧版本中也应该可以正常工作。
标签: vba excel outlook excel-2007