【VBA】ユーザー目線で開発する1
ユーザー目線を語る
シャンプーや洗剤の詰替えの割高が許せないjimです。ども✋
お徳用?あれって何なんでしょうね?『どこが?』って思うことがあります😤
はい、今回は以前の記事(【VBA】別OfficeアプリにVBAを記述する理由)でも触れた『ユーザー目線で開発する』について、それに関する小技的なものチラッと紹介しようかなと思います。
とりあえずその前に、な~んで『ユーザー目線で開発する』のか?っていうことについて少し語ります。
先ず、ユーザーが使いにくいマクロはダメだよね。ってこと。
マクロを用意しても、間違った使い方されたら悲しいですよね?
なので、使い方等を導いたほうがいいよね。と思ってます。
それと同時に、ユーザーに手入力させたり、あれこれペタペタ触らせるのは、バグやミスの温床かなと思ってます。
なので、なるだけガッチガチなマクロを作成した方が、皆幸せになれるんじゃないかと。。。
ユーザーも『手入力や工程』は少ない方がいいでしょうし。
ええ、だから自分はクライアント目線ではなくユーザー目線で開発します。
不特定多数の人が使うマクロの場合なんかは、ユーザーフォームをガッツリ使って、マクロブック自体も読み取り専用にしてます。もう、アプリを非表示にして、ユーザーフォームしか表示しません。
こうすれば、複数のユーザーが同時に使用できて、ストレスフリーなマクロになります😆
と、そこで幾つか問題があったりする。例えば、『ユーザーごとにファイルの保存先を変えたい。』とか『メール作成機能で、本文にユーザー名を入れたい。』みたいなこと。。。
毎回、手入力?ダイアログ?コンボボックス?
てなわけで、ユーザーを特定する為の小技の紹介です👍
ユーザー名を取得する
そうそう。端末のユーザー名と、ユーザーの名前やメールアドレスや格納場所などを紐づける!そうすれば問題ない?
Excelなら設定シートみたいなものを用意して、ユーザー名と紐づけできる表を作ればいい。
例えば、以下のような表を用意。

これなら、ユーザー名さえ取得できれば、『名字~保存先』と紐づけできますね。
それでは、ユーザー名を取得していきます。
WshNetworkオブジェクトを使って取得
コンピューター名とユーザー名が取得できます。
ツール→参照設定→『WindowsScriptHostObjectModel』にチェックを入れます。

サクッとコーディング
Sub user()
Dim WshNetworkObject As IWshRuntimeLibrary.WshNetwork
Set WshNetworkObject = New IWshRuntimeLibrary.WshNetwork
Debug.Print WshNetworkObject.UserName '←ユーザー名
Debug.Print WshNetworkObject.ComputerName '←コンピューター名
Set WshNetworkObject = Nothing
End Sub
参照設定なしで取得
参照設定なしでも取得できます。お好きな方で。
Sub user()
Dim WshNetworkObject As Object
Set WshNetworkObject = CreateObject("WScript.Network")
Debug.Print WshNetworkObject.UserName
Debug.Print WshNetworkObject.ComputerName
Set WshNetworkObject = Nothing
End Sub
おまけ
さっきの表からユーザー名を検索して『名字~保存先』を取得します。
Sub omake()
Dim WshNetworkObject As Object
Dim myName As String
Dim i As Long
Set WshNetworkObject = CreateObject("WScript.Network")
For i = 4 To 8
If WshNetworkObject.UserName = Cells(i, "C") Then
Debug.Print Cells(i, "D") '名字
Debug.Print Cells(i, "E") '名前
Debug.Print Cells(i, "F") 'メールアドレス
Debug.Print Cells(i, "G") '保存先
Exit For
End If
Next
Set WshNetworkObject = Nothing
End Sub
はい!ってことで、如何でしたか?ユーザー名が取得できるだけで、1段階上のマクロが組めると思いませんか?
自分はガッチガチにやることが多いので、他にも小技を紹介しようかなって思ってます。だからタイトルに『1』を付けておきました。
でも、次回の予定は不明です。自宅のOfficeにAccessなくってさ😅
したら、またね✋



ディスカッション
コメント一覧
まだ、コメントがありません