Access

【ACCESS VBA】データを更新したユーザー情報を保存する

記事内に商品プロモーションを含む場合があります

データの更新時(追加時も同様)は、更新日時(保存日時)とともに、そのデータを更新したユーザーも特定しておいた方が、後々の追跡に役立ちます。

このため、基本どのテーブルにも更新日時と最終更新者フィールドを作成しています。

更新日時はnow()関数で取得したシステム日時を格納すればOKですが、

最終更新者はどのように格納すればよいでしょうか?

最終更新者情報を更新する方法

Accessで作成したツールにログイン機能がある場合は、そのログイン情報をセットすればOKですね。

Accessで作成したツールにログイン機能がない場合はWindowsのログイン情報を取得して格納します。

Windowsのログイン情報は環境変数の値が取得できる、Environ()関数を利用して取得します。

Environ()関数でログインユーザー名を取得

Environ()関数の引数に”USERNAME”を渡すことでログインユーザー名を文字列として取得できます。

サンプルでは取得したログインユーザー名をmsgboxで出力しています。

サンプルコード

msgbox Environ(“USERNAME”)

取得したユーザー名をテーブルの最終更新者フィールドにUPDATEして完了です!

簡単!!!

Environ()関数で取得できるその他の環境変数

Environ()関数はログイン情報だけではなく、OS(Windows)の環境変数が取得できます。

取得できる主な環境変数は以下の通りです。

環境変数の名前説明 説明 サンプル
PATH PATH環境変数 C:\Program Files (x86)\Microsoft Office\Office12\;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\・・・・
OS オペレーティングシステム Windows_NT
HOMEDRIVE プライマリローカルドライブ C:
HOMEPATH 既定のユーザー用ディレクトリ \Users\tanaka・・・・
USERNAME ユーザー名 tanaka
WINDIR システムディレクトリ C:\windows
引数の環境変数に存在しない値を指定した場合、長さ0の文字列””が戻されます。(エラーにはなりません)

また、環境変数は大文字でも小文字でもOKです。

共有パソコンを複数人で利用しているにも関わらずログインアカウントは同じものを使っています!と言われると全く対応できません(;^_^A

このような使い方は基本NGなのでログインする人がそれぞれのアカウントを使うようにしてください。

ABOUT ME
アズビーパートナーズ
プログラマー→社内SE→SIerのお仕事をしています。 メーカー勤務を経て、中小企業の社内SE、フリーランスなど様々な形態で働いてきました。 業務上生まれた困った…を解決してきたTipsを備忘録も兼ねて公開しています。 困っている誰かのお役に立てれば幸いです。