0

データベースのパスを定数として設定したいと思います。

問題は、パスが INI ファイルに保存され、変数が Outlook の起動時に設定されることです。定数がハードコーディングされていない場合、VBA はコンパイルされません。

定数を使用する理由は、何らかの理由で、Outlook を実行して数時間または数日後に、変数の値が失われるように見えることがあるためです (ハードコードされた定数でこの問題を経験したことはありません)。パス変数が空になるだけで、VBA がデータベースにアクセスしようとすると、ユーザーにエラーが発生します。

一部のユーザーが同じサーバー UNC パスを使用していないという理由だけで、パスをハードコードすることはできません。このパスは、1 年に 1 回程度変更される可能性があります。INI ファイルを編集して Outlook を再起動する方が、プログラマーに各ユーザーのコンピューターのコードの正しい行を編集するよう依頼するよりも簡単です。

何か案は?

4

1 に答える 1

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
于 2013-02-08T17:31:49.663 に答える