2017-06-14 44 views
0

下午好!Excel 2007 VBA在对象变量中使用字符串变量值

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

规格:

Excel 2007中,VBA,Outlook 2007中

好了,所以我一直在返工一些脚本,我创建了我们在Excel/CMS的Avaya报告自动化。在过去的几年中,我一直是做报告的唯一人员,所以从来没有必要在其他人的计算机上进行设置。然而,事情正在改变,我正在更新脚本/训练其他人使用它们。目前,当我将脚本放在他们的计算机上时,我必须进入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

看一看https://msdn.microsoft.com/en-us/library/office/ff868990.aspx 此外 - SaveSetting和GetSetting可能会帮助你。如果您使用注册表来存储您的设置,它将会存活。 – Sam

+0

好主意!这些文章是2010年以上,但我会朝着这个方向看看你的其他建议。我正在吃午饭,所以我不能测试,但我会跟进并让你知道它是如何发展的。再次谢谢,山姆。 – Fata1Err0r

+0

即使在旧版本中,它也应该可以正常工作。 – Sam

回答

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") 
+0

感谢您的协助。我带着这个想法走了出来,并且根据我的情况制定出来了。 – Fata1Err0r