個人アドレス帳のファイル名を names.nsf 以外にしている人はほぼいないでしょう。ですので、個人アドレス帳の NotesDatabase オブジェクトを取得したい場合は Dim db As New NotesDatabase("","names.nsf") でほとんど問題ありません。でも、Notes 上確実に個人アドレス帳を取得させたい場合はこの方法は適当ではありません。
方法としては NotesSession クラスの GetEnvironmentString メソッドで NAMES= をとる方法もあるのですが、NotesSession クラスの AddressBooks プロパティと IsPrivateAddressBook プロパティを使って取得する方法でファンクション化してみました。
これを実際に使ってみたい場合は以下のようなコーディングを Initialilze イベントなどに入れると OK です。
方法としては NotesSession クラスの GetEnvironmentString メソッドで NAMES= をとる方法もあるのですが、NotesSession クラスの AddressBooks プロパティと IsPrivateAddressBook プロパティを使って取得する方法でファンクション化してみました。
Function GetLocalAddressBook As NotesDatabase
Dim s As New NotesSession
Dim books As Variant
books = s.AddressBooks
Forall b In books
If b.IsPrivateAddressBook Then
Set GetLocalAddressBook = b
Exit Forall
End If
End Forall
End Function
これを実際に使ってみたい場合は以下のようなコーディングを Initialilze イベントなどに入れると OK です。
Sub Initialize
Dim db As NotesDatabase
Set db = GetLocalAddressBook
Call db.Open(db.Server,db.FilePath)
End Sub