2013-02-08 68 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