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")
大家下午好!
我环顾四周,但没有找到任何解决我的特定问题的东西,所以我会尽力解释。
规格:
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")