アドベントカレンダー 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 件のコメント:
コメントを投稿