Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 2007 VBA在对象变量中使用字符串变量值_Vba_Excel_Outlook_Excel 2007 - Fatal编程技术网

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

Excel 2007 VBA在对象变量中使用字符串变量值,vba,excel,outlook,excel-2007,Vba,Excel,Outlook,Excel 2007,大家下午好 我环顾四周,但我没有找到任何能解决我的特殊问题的东西,所以我会尽力解释 规格: '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 = di

大家下午好

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

规格:

'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 
Excel 2007、VBA、Outlook 2007

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

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

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

工作表配置单元格值(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
您现在有了“邮箱-某个家伙”文件夹,它是一种通用的方式,不需要指定“某个家伙”


还可以看看-SaveSetting和GetSetting可能会对您有所帮助。如果你使用注册表来存储你的设置,它会保存下来。好主意!这些文章是针对2010+的,但我会朝这个方向看,看看你的其他建议。我正在吃午饭,所以我不能测试,但我会跟进并让你知道进展如何。再次感谢你,山姆。即使在旧版本中也应该如此。谢谢你的帮助。我接受了这个想法,并使它适合我的情况。