2013-02-08 90 views
0

我想将我的数据库的路径设置为常量。从变量值设置常量

问题是路径存储在INI文件中,并且启动Outlook时设置该变量。如果常量没有硬编码,VBA将不会编译。

我想使用常量的原因是因为某些原因,在Outlook运行几个小时/天后,它有时似乎失去了其变量的值(从未遇到硬编码常量的这个问题) 。路径变量只是被清空,然后当VBA试图访问数据库时,用户会得到一个错误。

我不能硬编码的路径只是因为一些用户不使用相同的服务器UNC路径。此路径每年可能会更改一次,编辑INI文件并重新启动Outlook比向程序员编辑每个用户计算机上的代码中的右侧行更容易。

任何想法?

+2

你可以将其存储在非常量变量,创建一个'getPath'函数返回变量的内容,除非它是空的,在这种情况下它会提取该值。然后在代码中使用getPath。 – assylias 2013-02-08 15:25:40

+0

的确,我认为它可以完成工作。 Outlook VBA是否有任何理由在一天内失去其变量?很烦人。在使用Access进行VBA时,我遇到过类似的问题,但通常在错误处理程序被触发或发生错误时,在Outlook中,只是时间似乎足够了。 – dnLL 2013-02-08 15:27:55

回答

1

在运行时不能更改常量的值。这些值是在编译代码时设置的(即使你没有显式编译VBA代码,它仍然在后台执行Just-In Time(JIT))。

如果你不想不断地运行查找代码(因为它是低效率的,例如),比你可以在一个函数中使用静态变量:

Function GetDbPath() As String 
    Static DbPath As String 
    If Len(DbPath) = 0 Then 
     DbPath = 'your code here' 
    End If 
    GetDbPath = DbPath 
End Function 
+0

谢谢,与上面的assylias评论一样。这应该是我对这个问题的最终解决方案。仍然想知道为什么Outlook在一段空闲时间后删除它的变量。 – dnLL 2013-02-08 18:08:41