アドベントカレンダー 13日目
掲示板のような書き込み式のプログラムを作った際に
名前を自動で指定したいなんてことありますよねぇ。
会社なんかだと、ログインユーザー名がアルファベットで[苗字の頭文字]_[名前]
そして、ようこそ◯◯ って画面で漢字の名前が指定されていたりしますよね。
VBAからだと手っ取り早く取得できるのが、ログインユーザー名の方で下記で取得できます。
CreateObject("WScript.Network").UserName
ログとして取得するならまだしも、利用者同士が目にするとこで利用するなら
ようこそ◯◯画面で表示されるFullNameの方を取得したいものです。
FullNameのデータを取得する方法はいくつかあるのですが
セキュリティの関係で取得できないものがあったりするので
自分の環境で取得できたコードをのっけておきます。
他の方法、ネットで検索したらボロボロでてくるのでそちらにおまかせしておきます。
ここで紹介するのは、WMIを使った方法です。
掲示板のような書き込み式のプログラムを作った際に
名前を自動で指定したいなんてことありますよねぇ。
会社なんかだと、ログインユーザー名がアルファベットで[苗字の頭文字]_[名前]
そして、ようこそ◯◯ って画面で漢字の名前が指定されていたりしますよね。
VBAからだと手っ取り早く取得できるのが、ログインユーザー名の方で下記で取得できます。
CreateObject("WScript.Network").UserName
ログとして取得するならまだしも、利用者同士が目にするとこで利用するなら
ようこそ◯◯画面で表示されるFullNameの方を取得したいものです。
FullNameのデータを取得する方法はいくつかあるのですが
セキュリティの関係で取得できないものがあったりするので
自分の環境で取得できたコードをのっけておきます。
他の方法、ネットで検索したらボロボロでてくるのでそちらにおまかせしておきます。
ここで紹介するのは、WMIを使った方法です。
- Option Explicit
- Sub main()
- Dim FullName As String
- Dim Locator As Object
- Dim Service As Object
- Dim QfeSet As Object
- Dim Qfe As Variant
- Dim UserName As String
- '** Objectの生成 **
- Set Locator = CreateObject("WbemScripting.SWbemLocator")
- Set Service = Locator.ConnectServer
- Set QfeSet = Service.ExecQuery("Select * From Win32_NetworkLoginProfile")
- UserName = CreateObject("WScript.Network").UserName
- For Each Qfe In QfeSet
- '名前にログイン名が使われているオブジェクトのFullNameを取得をしたい
- If 0 < InStr(Qfe.Name, UserName) Then
- FullName = Qfe.FullName
- End If
- Next
- MsgBox FullName
- Set QfeSet = Nothing
- Set Service = Nothing
- Set Locator = Nothing
- End Sub
0 件のコメント:
コメントを投稿