#013 | ネットワークユーザー名を取得するには? | VBA、API | |
ネットワーク上にMDBファイルを置いて複数ユーザーで共有する場合、そのセキュリティやデータベース権限の制御に関しては、Accessのワークグループ管理を使ったりあるいはセキュリティウィザードを使ったり、あるいはサーバーそのもののセキュリティで対応する場合もあるかもしれません。 ここではその一つの方法として、ネットワークにログオンしたときのクライアントPCのネットワークユーザー名を取得して、その名前によってVBA上で制御するという場合を考え、そのネットワークユーザー名を取得する方法をご紹介します。 以下のコードを記述して、NetUserNameプロシージャを呼び出すと、そのユーザー名が返されます。 Declare Function WNetGetUser Lib "mpr" Alias "WNetGetUserA"
(ByVal lpName As String, ByVal lpUserName As String, lpnLength As Long)
As Long
※このDeclare〜 は標準モジュールに記述するか、先頭に"Private"を付けてフォームモジュールに記述します。 Function NetUserName() As String Dim strUserName As String * 255 'WindowsAPIをコールしてネットワークユーザー名を取得します If WNetGetUser("", strUserName, 255) = 0 Then 'APIの返り値が正常なら、後続のNullを取り除きます '(これはAPIの関数から値を取得する場合にしばしば使用する定型的な処理です) NetUserName = Left$(strUserName, InStr(strUserName, Chr$(&H0)) - 1) Else NetUserName = "" End If End Function 使用例: 'フォームが開く時、ネットワークユーザー名を調べて、 'ユーザー "hoshino" に対してはレコードの追加を禁止する。 Private Sub Form_Load() Me.AllowAdditions = Not (NetUserName() = "hoshino") End Sub |
|||
|
Copyright © T'sWare All rights reserved |