#182 自分のコンピュータ名を得るには? VBA、API

ネットワーク上にMDBファイルを置いて複数ユーザーで共有する場合、そのセキュリティやデータベース権限の制御に関しては、Accessのワークグループ管理を使ったり、あるいはセキュリティウィザードを使ったり、あるいはサーバーそのもののセキュリティで対応する場合もあるかもしれません。

ここではその一つの方法として、Windows APIの「GetComputerName」関数を使って、クライアントパソコン自身の"コンピュータ名"を取得し、その名前によってVBA上で権限を制御するという方法をご紹介します。なお、"コンピュータ名"とは、[ネットワークコンピュータ]の[プロパティ]の[識別情報]タブに表示されているものです。


まずここでは、以下のようなコードによって、汎用的に使える"コンピュータ名取得"プロシージャを作成します。
  1. 標準モジュールのDeclarationsセクションにAPIの宣言を記述します。
    Declare Function GetComputerName Lib "kernel32" Alias _
    "GetComputerNameA" (ByVal lpBuffer As String, nSize As Long) As Long

  2. 続いて、標準モジュールに以下のようなFuncitonプロシージャを記述します。
    Public Function GetMyComputerName() As String
    '自分のパソコンのコンピュータ名を返す

      Dim strCmptrNameBuff As String * 21

      'API関数によってコンピューター名を取得します
      'コンピュータ名は変数strCmptrNameBuffに返されます
      GetComputerName strCmptrNameBuff, Len(strCmptrNameBuff)
        
      '後続のNullを取り除いて返り値を設定します
      GetMyComputerName = Left$(strCmptrNameBuff, InStr(strCmptrNameBuff, vbNullChar) - 1)

    End Function
使用例:
次の例は、フォームが開く時、コンピュータ名を調べて、それが"MyGroup1"だったらレコードの追加を禁止するというものです。

Private Sub Form_Load()

  Me.AllowAdditions = (GetMyComputerName() <> "MyGroup1")

End Sub
| Index | Prev | Next |



T'sFactory
Accessで動く生産管理DB
Ureru Express
Webで使う販売顧客管理
Access開発&アドバイス
DB開発やテクニカルアドバイス
Copyright © T'sWare All rights reserved